我正在使用QMediaPlayer播放音频,并希望可视化音频级别(例如this video中)。
我已经从Qt 4文档中找到了一个例子,但他们手动生成信号,我发现无法通过QMediaPlayer获取音频输出缓冲区。
我该如何解决这个问题/是否有其他可以实现此目的的音频库(跨平台)?
感谢
答案 0 :(得分:5)
你应该看看QAudioProbe
。
QAudioProbe类允许您监听正在播放或录制的音频。
由于QMediaPlayer
是QMediaObject
的子类,您使用QAudioProbe
将QMediaPlayer
附加到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库可以获得更好的性能,该库也可以用于音量显示所需的对数刻度。