【发布时间】:2021-02-11 12:43:28
【问题描述】:
我正在创建一个在 PyQt5 中播放播客的应用。它从 URL 中检索 MP3 并使用 QMediaPlayer 播放它。我遇到的问题是当我希望以更快的速度播放这些播客时。使用 setPlaybackRate(rate) 我在 1、1.25、1.5、1.75 和 2 之间更改速率。只要速率大于 1,声音就会变成高音花栗鼠的声音。
有没有办法解决这个问题?我正在使用 python-vlc,它在这方面工作得很好,但想切换到 QMediaPlayer 以删除 VLC 依赖项。非常感谢任何帮助。
【问题讨论】:
-
您的意思是音高绝对高于预期(例如,即使在 1.25 时也非常高)?否则,如果在 2 倍时播放高一个八度,这正是播放 rate 的变化。
-
不幸的是,我对八度音阶的了解不够准确,但即使在 1.25 时,人们说话的声音也有点像花栗鼠,而到了 1.5 时,它真的很糟糕。在 python-vlc 中,我可以将速度提高到 2 倍,而且声音听起来很正常,只是速度更快。如果playbackRate 不是这样,在QMediaPlayer 中还有其他方法吗?
-
@RickyKresslein 我并没有建议将其作为解决方案(如果是的话,我会将此作为一个骗局关闭)。关键是 Qt 目前不支持音高校正 - 所以你不能避免某种依赖。
-
@RickyKresslein 的重点是声音是基于频率的:如果你加倍速度,你就加倍频率,所以你会得到更高音调(高一个八度)的声音。您可以在 VLC(或 Youtube 等其他案例)上获得的是一种软件算法,该算法通过在速度较高时“剪切”样本或在速度较低时将样本加倍来对音频信号进行插值(实际上它有点复杂,但是这是基本概念)。你听过磁带或唱机以不同的速度播放吗?
标签: python qt pyqt5 qmediaplayer playback-rate