【问题标题】:Playing sounds with PyQt6使用 PyQt6 播放声音
【发布时间】:2021-11-23 16:22:24
【问题描述】:

随着 PyQt6 模块的发布,我开始将我的代码从 PyQt5 移植到 PyQt6。

在 PyQt 中,有一个名为 phonon 的模块用于播放声音。

在 PyQt5 中,有一个名为 QMediaPlayer 的模块,用于播放声音。

现在,如何在 PyQt6 中播放声音?

有一个网站说QMediaPlayer还没有被移植,应该在PyQt6版本PyQt6.2中完成。

网站是这个-https://www.pythonguis.com/faq/pyqt-pyside6-missing-modules/

该网站还声明 PyQt6.2 将于 2021 年 9 月发布。

导入是否重命名?

【问题讨论】:

  • 根据Qt Documentation,您应该尝试使用QSoundEffect。但由于我还没有 PyQt6,我无法确认它是否有效。
  • 你为什么没有 PyQt6? PyQt6 在 pypi 上可用。此外,主要的 QtMultiMedia 在 PyQt6 中被删除
  • 你是什么意思为什么?不,它没有被删除。我实际上只是链接到文档页面。 PyQt6.2 还没有发布。
  • @mapf 你说:我猜 PyQt6.2 不会在明年之前发布。你从哪里得到的? PyQt 和 PySide 通常在 Qt 发布后不到一周的时间内发布。
  • @eyllanesc 我正在比较以前版本的发布日期,但我才意识到我看错了日期。所以可能只是几天。

标签: python pyqt6


【解决方案1】:

需要注意的是:

  • 在 Qt6 中,如果您想播放音乐文件,那么您有 2 个选项:

    • QSoundEffect

      import sys
      
      from PyQt6.QtCore import QUrl
      from PyQt6.QtGui import QGuiApplication
      from PyQt6.QtMultimedia import QSoundEffect
      
      
      def main():
          app = QGuiApplication(sys.argv)
      
          filename = "sound.wav"
          effect = QSoundEffect()
          effect.setSource(QUrl.fromLocalFile(filename))
          # possible bug: QSoundEffect::Infinite cannot be used in setLoopCount
          effect.setLoopCount(-2)
          effect.play()
      
          sys.exit(app.exec())
      
      
      if __name__ == "__main__":
          main()
      
    • QMediaPlayer.

      import sys
      
      from PyQt6.QtCore import QUrl
      from PyQt6.QtGui import QGuiApplication
      from PyQt6.QtMultimedia import QAudioOutput, QMediaPlayer
      
      
      def main():
          app = QGuiApplication(sys.argv)
      
          filename = "sound.mp3"
          player = QMediaPlayer()
          audio_output = QAudioOutput()
          player.setAudioOutput(audio_output)
          player.setSource(QUrl.fromLocalFile(filename))
          audio_output.setVolume(50)
          player.play()
      
          sys.exit(app.exec())
      
      
      if __name__ == "__main__":
          main()
      
  • 之前的类从 Qt 6.2 开始可用,目前 PyQt6 6.2.0 的 pypi 中没有可用的版本,但您可以从 Riverbank Computing PyPI Server 存储库安装它(有关更多信息,请参阅here):

    python -m pip install --index-url https://riverbankcomputing.com/pypi/simple/ --pre --upgrade PyQt6
    

    可能几天后它就可以在 pypi 中使用了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2014-08-15
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多