c++ - 在 Qt 和 C++ [QMediaPlayer] 中更改 mp3 速度

标签 c++ qt qmediaplayer playback-rate

我正在尝试开发一个小应用程序,您可以在其中加载 mp3 文件并以可变速度播放它! (我知道它已经存在 :-) )

我正在使用 Qt 和 C++。我已经有了基本的播放器,但我仍然坚持使用速率,因为我想在不停止播放的情况下平滑地更改速率(就像在 Mixxx 中一样)!如果我更改值并在声音中产生间隙,QMediaPlayer 总是会停止。我也不想改变音调!

我已经找到了一个叫做“SoundTouch”的东西,但现在我完全不知道如何处理它,如何处理我的 mp3 数据以及如何将它提供给播放器! “SoundTouch”库能够做我想做的事,我从 homepage 上的样本中得到了它.

  • 如何导入 mp3 文件,以便使用 SoundTouch 功能处理它
  • 如何播放 SoundTouch 功能的输出? (也许 QMediaPlayer 可以胜任这项工作?)
  • 这些东西是如何现场完成的?我猜我必须做某种流?所以我可以在播放过程中改变速度并继续播放而不会出现间隙。在我的脑海中,它必须是位于数据和播放器之间的图形,所有数据都必须实时通过,后面有一个小缓冲区(20-50 毫秒左右)以避免在处理 future 数据时出现间隙。<

感谢任何帮助! 我也愿意接受任何其他解决方案,然后是“SoundTouch”,只要我能继续使用 Qt/C++!

(第二件事:我想查看波形概览以及它的移动部分(围绕歌曲的实际位置),因此我还可以使用有关如何获取波形数据的提示)

提前致谢!

最佳答案

截至目前(Qt 5.5),仅使用 QMediaPlayer 是不可能做到的。您需要执行以下操作:

此策略尽可能使用Qt,并为您带来最好的平台覆盖(尽管Android不支持QAudioOutput,您仍然会失去它)

关于c++ - 在 Qt 和 C++ [QMediaPlayer] 中更改 mp3 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088043/

相关文章:

c++ - Qt - 如何在多个平台上保存一个配置文件

c++ - 子项目动态调用库时如何将两个子项目与主项目静态链接

c++ - 我必须在我的应用程序中包含所有这些 Qt dll 吗?

c++ - 如何在任何形状的 Qgraphicsvideoitem 中屏蔽视频

python - 如何在不将其保存到文件的情况下在 Qt 中播放 numpy 数组?

C++ vector :std::out_of_range 错误

c++ - golang 中是否有一些方法像 C++ 中的 std::bind 那样操作函数?

c++ - QMediaplayer 从自定义 QIODevice 流式传输,在 Mac OS (10.9) 上加密

c++ - QList 指向抽象类的指针函数

qt - 安装 PyQt5 时出错