我是 alsa 声音编程的新手。我正在开发一个应用程序来将音频录制到 c 语言的 wav 文件中。我在网上做了一些研究,但对许多主题仍然不是很清楚。请帮忙。
这是我设置的配置。
访问:SND_PCM_ACCESS_RW_INTERLEAVED
格式:S16_LE
费率:16000
channel :1
我有几个疑问:
和有什么区别snd_pcm_hw_params_set_period_time_near() 和 snd_pcm_hw_params_set_period_size_near() .应该调用哪个 API 进行捕获?同样有 snd_pcm_hw_params_set_buffer_time_near() 和 snd_pcm_hw_params_set_buffer_size_near() .如何在这两个 API 之间做出决定?
我指的是arecord实现和另一个例子code用于捕获。
提前致谢。
最佳答案
周期时间描述与周期大小相同的参数。如果速率未知,它可能会很有用。
在每个周期结束时,您都会收到中断(即,如果您正在等待数据,则有机会被唤醒)。如果您知道每次要读取多少数据,请尝试将其用作周期大小。
读取尽可能多的帧来处理。
avail_min 参数指定在中断导致您的应用程序实际被唤醒之前必须有多少帧可用。
启动阈值指定设备在您尝试读取那么多帧时自动启动。
关于audio - 使用 alsa 捕获 pcm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006160/