代码拉取完成,页面将自动刷新
同步操作将从 华清远见西安中心/智能音箱(C语言) 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//录音程序,演示alsa library的使用
#include <stdio.h> //fprintf
#include <alsa/asoundlib.h> //alsa
int main()
{
//声音设备句柄
snd_pcm_t *dev = NULL;
//打开音频设备
int error = snd_pcm_open(&dev, "sysdefault", SND_PCM_STREAM_PLAYBACK, 0);
if (error != 0)
{
fprintf(stderr, "snd_pcm_open() failed: %s\n", snd_strerror(error));
return EXIT_FAILURE;
}
//设置硬件参数
snd_pcm_hw_params_t *hw_params;
//分配硬件参数内存
snd_pcm_hw_params_alloca(&hw_params);
//初始化硬件参数,使用默认值
snd_pcm_hw_params_any(dev, hw_params);
//多声道交错存储,读写方式
snd_pcm_hw_params_set_access(dev, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
//设置采样格式:有符号16位整数,小端字节序
snd_pcm_hw_params_set_format(dev, hw_params, SND_PCM_FORMAT_S16_LE);
//设置采样率:16000Hz
snd_pcm_hw_params_set_rate(dev, hw_params, 16000, 0);
//设置声道数:单声道
snd_pcm_hw_params_set_channels(dev, hw_params, 1);
//根据硬件参数配置声卡设备
error = snd_pcm_hw_params(dev, hw_params);
if (error != 0)
{
fprintf(stderr, "snd_pcm_hw_params() failed: %s\n", snd_strerror(error));
return EXIT_FAILURE;
}
FILE *fp = fopen("test.pcm", "r");
if (fp == NULL)
{
perror("fopen() failed");
return EXIT_FAILURE;
}
//获取声卡一次传输数据的大小
unsigned long period = 0;
int dir = 0;
snd_pcm_hw_params_get_period_size(hw_params, &period, &dir);
printf("period: %d\n", period);
//buf大小是period整数倍
char buf[682];
//开始录音
snd_pcm_prepare(dev);
snd_pcm_sframes_t frames;
while (frames = fread(buf, 2, period, fp))
{
snd_pcm_writei(dev, buf, frames);
}
//停止录音
snd_pcm_drain(dev);
//关闭声音设备
snd_pcm_close(dev);
fclose(fp);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。