我是alsa声音编程的新手。我正在开发一个应用程序,用c语言将音频录制到wav文件中。我做了一些关于网络的研究,但仍然不是很清楚很多主题。请帮忙。 这是我正在设置的配置。
访问:SND_PCM_ACCESS_RW_INTERLEAVED
格式:S16_LE
费率:16000
频道: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之间做出决定?
如何确定期间大小值?我相信在snd_pcm_sw_params_set_avail_min()调用中使用相同的值。
在 snd_pcm_readi()中读取的帧数应该使用什么值?
snd_pcm_sw_params_set_avail_min()和snd_pcm_start_threshold()API的重要性是什么?是否必须要打电话给那些
提前致谢。
答案 0 :(得分:1)
周期时间描述与周期大小相同的参数。如果费率尚不清楚可能会有用。
在每个期间结束时,您会收到中断(即,如果您等待数据,则有机会被唤醒)。如果您知道每次要读取多少数据,请尝试将其用作周期大小。
读取您想要处理的帧数。
avail_min参数指定在中断导致应用程序实际被唤醒之前必须有多少帧。
启动阈值指定当您尝试读取那么多帧时设备会自动启动。