我正在尝试开发一个小应用程序,您可以在其中加载mp3文件并以可变速度播放它! (我知道它已经存在:-))
我使用的是Qt和C ++。我已经有了基本的播放器,但我仍然坚持使用速率的东西,因为我想在不停止播放的情况下平滑地改变速率(如在Mixxx中)!如果我更改值并在声音中创建间隙,QMediaPlayer将始终停止。我也不想改变音调!
我已经找到了一些名为" SoundTouch"但是现在我完全不知道如何处理它,如何处理我的mp3数据以及如何将它传递给玩家! " SoundTouch"图书馆能够做我想做的事情,我从homepage的样本中得到了。
任何帮助表示赞赏! 我也接受任何其他解决方案然后" SoundTouch"只要我能使用Qt / C ++!
(第二件事:我想查看波形概述以及它的移动部分(围绕歌曲的实际位置),所以我也可以使用关于如何获取波形数据的提示)
提前致谢!
答案 0 :(得分:0)
截至目前(Qt 5.5),这与QMediaPlayer无关。您需要执行以下操作:
使用GStreamer,FFMpeg或(新)QAudioDecoder解码音频:http://doc.qt.io/qt-5/qaudiodecoder.html - 这将为您提供原始PCM流;
将SoundTouch或其他库应用于此原始数据以更改音高。如果GPL没问题,请查看http://nsound.sourceforge.net/examples/index.html,如果您开发专有内容,STK可能是更好的选择:https://ccrma.stanford.edu/software/stk/
使用QAudioOutput将修改后的数据输出到音频设备。
此策略尽可能使用Qt,并为您带来最佳平台覆盖率(尽管因为它不支持QAudioOutput,您仍会丢失Android)