1

我想使用 Qt 开发一个音频编辑器。为此,我需要绘制音乐轨道的波形,我认为它应该是声音峰值幅度与时间的关系图(如果我错了,请纠正我)。

目前,我一直在使用 Phonon::AudioOutput 类对象作为音频接收器,并将其与我的 Phonon::MediaObject 类对象连接以播放音频文件。

现在,要绘制波形,我需要知道此 AudioOutput 对象每秒(或左右)的音轨幅度,以便我可以在不同时间绘制一条长度与声音频率成正比的线(使用 QPainter),因此,获得我的波形。

因此,请帮助我了解如何在不同时间获取音轨的幅度。

其次,我是否使用正确的方式来绘制音轨的波形 - 通过 QPainter 对象在不同时间在小部件上绘制线条来绘制声音的幅度与时间的关系。

谢谢。

4

1 回答 1

2

在Qt 附带的Spectrum Analyzer示例中(在 demos/spectrum 目录中) ,有代码可以完成您询问的两件事(计算峰值幅度和绘制音频波形)。

在 Symbian 上运行的频谱分析仪演示的屏幕截图 http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

该演示还计算并显示频谱。正如另一位评论者指出的那样,这与波形图不同:频谱是幅度与频率的关系图,而波形是幅度与时间的关系图。

该演示使用 QtMultimedia 而不是 Phonon 来捕获和渲染音频。如果您只对播放音频感兴趣,而不需要录制它,Phonon 可能就足够了,但请注意,Phonon::MediaSource(QIODevice *)并非所有平台都支持流式传输(即)。 另一方面,至少对于 PCM 音频数据,在 Qt 所针对的所有主要平台上都得到了很好的支持QAudioInputQAudioOutput

于 2010-08-12T15:59:35.927 回答