python - 如何用Pyqt5 QtMultimedia播放声音?

标签 python pyqt5

def play_tts(self,file_path):
   file = open(file_path)
   mixer.init()
   mixer.music.load(file)
   mixer.music.play()
   while mixer.music.get_busy():
       time.sleep(0.03)
       if window.ttsIs:
           break
   mixer.stop()
   mixer.quit()
   file.close()
   remove(file_path)

如何用QtMultimedia写上面的代码?

你能举个例子吗?

最佳答案

如果文件是 .wav 文件,那么只需使用 QSound:

import os
import sys

from PyQt5 import QtCore, QtMultimedia

CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))


def main():
    filename = os.path.join(CURRENT_DIR, "beal.wav")

    app = QtCore.QCoreApplication(sys.argv)

    QtMultimedia.QSound.play(filename)


    # end in 5 seconds:
    QtCore.QTimer.singleShot(5 * 1000, app.quit)

    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

如果你想播放更多格式,那么你应该使用 QMediaPlayer:

import os
import sys

from PyQt5 import QtCore, QtMultimedia

CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))


def main():
    filename = os.path.join(CURRENT_DIR, "sound.mp3")

    app = QtCore.QCoreApplication(sys.argv)

    player = QtMultimedia.QMediaPlayer()

    def handle_state_changed(state):
        if state == QtMultimedia.QMediaPlayer.PlayingState:
            print("started")
        elif state == QtMultimedia.QMediaPlayer.StoppedState:
            print("finished")
            QtCore.QCoreApplication.quit()

    player.stateChanged.connect(handle_state_changed)

    url = QtCore.QUrl.fromLocalFile(filename)
    player.setMedia(QtMultimedia.QMediaContent(url))
    player.play()

    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

关于python - 如何用Pyqt5 QtMultimedia播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62667514/

相关文章:

python - Qt Designer如何改变背景

python - 如何获取PyQt QGraphicsTextItem不透明区域

python - 如果qtableview中的单元格不为空,如何为单元格设置颜色?

python - Jinja2 : TemplateNotFound: index. html 的问题

python - 如何从 R 中读取换行符分隔的 JSON 文件?

python - 在 python 中打印嵌套列表

python - 是否可以从模块中删除方法?

python - 为什么 Django 为 help_text 和 verbose_name 更改进行迁移?

python - 导入错误 : No module named PytQt5

python - QT 定时器不调用函数