在C ++中录制时从设备获取声级

时间:2010-10-10 16:42:10

标签: c++ linux audio sox fmod

我想获得声级,所以我可以在录制声音时在我的SDL应用程序(平台是Linux)中显示它。我怎样才能做到这一点?我在我的应用程序中使用FMOD API,但是对于录制,我使用SoX(分叉并使用exec()来设置它 - 可能这可以做得更好但我不知道如何:()。我应该使用一些SoX,FMOD API的功能,还是直接访问/ dev / dsp来获取声音数据?

2 个答案:

答案 0 :(得分:1)

不,至少你应该使用“安全”的ALSA API。但你应该考虑使用更高级的东西,如Gstreamer或PulseAudio。

答案 1 :(得分:1)

如果您愿意,可以在FMOD中录制。可以使用FMOD API,例如System :: recordStart和System :: getRecordDriverInfo。 FMOD提供了录音示例,您可以将其用作解决方案的基础。

专门用于获取声级,如果你想将它作为运行时的东西,你可以使用Channel :: getWaveData,它将为你提供当前播放音频的快照,为此你需要播放录音数据。

或者,如果没有播放,您可以使用Sound :: lock / Sound :: unlock来访问录制声音数据。

通过任一方法访问声音数据后,您可以读取值以获取声级/峰值信息。