Audio 使用alsa进行pcm捕获

Audio 使用alsa进行pcm捕获,audio,capture,alsa,Audio,Capture,Alsa,我是alsa声音编程新手。我正在开发一个应用程序,用c语言将音频记录到wav文件中。我在网上做了一些研究,但对很多话题还不是很清楚。请帮忙。 这是我正在设置的配置 访问:SND\U PCM\U访问\U RW\U交错 格式:S16_LE 费率:16000 频道:1 我毫不怀疑: 我对时段大小和时段时间设置非常困惑。 snd\u pcm\u hw\u params\u set\u period\u time\u near()和snd\u pcm\u hw\u params\u set\u perio

我是alsa声音编程新手。我正在开发一个应用程序,用c语言将音频记录到wav文件中。我在网上做了一些研究,但对很多话题还不是很清楚。请帮忙。 这是我正在设置的配置

访问:SND\U PCM\U访问\U RW\U交错

格式:S16_LE

费率:16000

频道:1

我毫不怀疑:

  • 我对时段大小和时段时间设置非常困惑。 snd\u pcm\u hw\u params\u set\u period\u time\u near()snd\u pcm\u hw\u params\u set\u period\u size\u near()之间有什么区别。应该调用哪个API进行捕获?类似地,还有snd\u pcm\u hw\u params\u set\u buffer\u time\u near()snd\u pcm\u hw\u params\u set\u buffer\u size\u near()。如何在这两个API之间做出选择

  • 如何确定周期大小值?我相信在snd_pcm_sw_params_set_avail_min()调用中使用了相同的值

  • snd\u pcm\u readi()中读取的帧数应使用什么值

  • snd_pcm_sw_params_set_avail_min()和snd_pcm_start_threshold()API的重要性是什么?一定要叫那些吗

  • 我指的是实现和另一个捕获示例


    提前感谢。

    时段时间描述的参数与时段大小相同。如果还不知道利率,这可能是有用的

    在每个周期结束时,您都会遇到中断(即,如果您正在等待数据,则有机会被唤醒)。如果您知道每次要读取多少数据,请尝试将其用作时段大小

    读取您想要处理的任意多个帧

    avail_min参数指定在中断导致应用程序实际被唤醒之前必须有多少帧可用

    开始阈值指定当您尝试读取那么多帧时,设备自动启动