使用QMediaPlayer进行音频可视化

时间:2014-04-28 11:20:07

标签: qt audio visualization

我正在使用QMediaPlayer播放音频,并希望可视化音频级别(例如this video中)。
我已经从Qt 4文档中找到了一个例子,但他们手动生成信号,我发现无法通过QMediaPlayer获取音频输出缓冲区。
我该如何解决这个问题/是否有其他可以实现此目的的音频库(跨平台)?

感谢

1 个答案:

答案 0 :(得分:5)

你应该看看QAudioProbe

  

QAudioProbe类允许您监听正在播放或录制的音频。

由于QMediaPlayerQMediaObject的子类,您使用QAudioProbeQMediaPlayer附加到bool QAudioProbe::setSource(QMediaObject* source),然后连接到void QAudioProbe::audioBufferProbed(const QAudioBuffer& buffer)信号。文档提供了一个示例。

audioBufferProbed信号的插槽中,您可以处理原始音频数据以计算音量,例如通过计算样本的RMS。看看这个article on calculating the RMS efficiently

要显示您可以使用QProgressBar的音量,但使用Qt Widgets for Technical Applications库可以获得更好的性能,该库也可以用于音量显示所需的对数刻度。