0

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

4

2 回答 2

1

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

于 2010-10-10T16:50:06.757 回答
1

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

特别是为了获得声音级别,如果您想将其作为运行时的事情来做,您可以使用 Channel::getWaveData 它将为您提供当前正在播放的音频的快照,为此您需要播放录音数据。

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

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

于 2010-10-11T03:56:28.667 回答