我正在创建一个在 PyQt5 中播放播客的应用程序。它从 URL 检索 MP3 并使用 QMediaPlayer 播放它。我遇到的问题是当我希望以更快的速度播放这些播客时。使用 setPlaybackRate(rate) 我在 1、1.25、1.5、1.75 和 2 之间更改速率。只要速率大于 1,声音就会变成高音花栗鼠的声音。
有没有办法解决这个问题?我使用的是 python-vlc,它在这方面工作得很好,但想切换到 QMediaPlayer 以删除 VLC 依赖项。我真的很感激任何帮助。
我正在创建一个在 PyQt5 中播放播客的应用程序。它从 URL 检索 MP3 并使用 QMediaPlayer 播放它。我遇到的问题是当我希望以更快的速度播放这些播客时。使用 setPlaybackRate(rate) 我在 1、1.25、1.5、1.75 和 2 之间更改速率。只要速率大于 1,声音就会变成高音花栗鼠的声音。
有没有办法解决这个问题?我使用的是 python-vlc,它在这方面工作得很好,但想切换到 QMediaPlayer 以删除 VLC 依赖项。我真的很感激任何帮助。
根据 Qt 文档
用于 Windows 的 Qt 多媒体功能在两个插件中实现;一个使用 Microsoft DirectShow API,另一个使用 WMF (Windows Media Foundation) 框架。DirectShow API 在 Windows 98 中引入,并从 Windows XP 开始逐渐弃用。Media Foundation 框架是在 Windows Vista 中引入的,作为 DirectShow 和其他多媒体 API 的替代品。因此,Qt 中的 WMF 插件仅支持 Windows Vista 和更高版本的操作系统。
默认情况下,Qt 更喜欢 DirectShow而不是 windowsmediafoundation。现在让我们来看看你的答案。
当您更改播放速率时,旧插件 Directshow 插件会更改音高
虽然新推出的 Windows Media Foundation (WMF)不会影响音高
所以我们要做的就是从directshow切换到windowsmediafoundaton
import os
os.environ['QT_MULTIMEDIA_PREFERRED_PLUGINS'] = "windowsmediafoundation"
这可能会起作用,如果在添加此代码后音频听不见,那么您所要做的就是从这里下载一些编解码器 https://codecguide.com/media_foundation_codecs.htm