zoukankan      html  css  js  c++  java
  • PyQt5之QtMultimedia模块音乐播放没声音已解决

      昨天用PyQt5的QtMultimedia模块播放音乐时,单独使用可播放,放代码里结合使用死的播放不了。以下是测试demo可播放代码:

    # -*- coding: utf-8 -*-
    # Nola
    from PyQt5 import QtWidgets, QtCore, QtMultimedia
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    url = QtCore.QUrl.fromLocalFile(r"D:projectpyqt5_tutorialUmusicmusic_datasWalk Off the Earth、Jocelyn Alice、Krnfx - Havana.mp3")
    content = QtMultimedia.QMediaContent(url)
    player = QtMultimedia.QMediaPlayer()
    player.setMedia(content)
    player.setVolume(50.0)
    player.play()
    sys.exit(app.exec())
    # -*- coding: utf-8 -*-
    # Nola
    from PyQt5 import QtWidgets, QtMultimedia
    from PyQt5.QtCore import QUrl
    import sys
    
    
    class MainUi(QtWidgets.QMainWindow):
    
        def __init__(self):
            super().__init__()
            self.init_ui()
    
        def init_ui(self):
            button1 = QtWidgets.QPushButton("button1",self)
            url = QUrl.fromLocalFile(r"D:projectpyqt5_tutorialUmusicmusic_datas出逃 - 罗之豪.mp3")
            content = QtMultimedia.QMediaContent(url)
            self.player = QtMultimedia.QMediaPlayer()
            self.player.setMedia(content)
            button1.clicked.connect(self.playmusic)
    
        def playmusic(self):
            self.player.play()
    
    
    def main():
        app = QtWidgets.QApplication(sys.argv)
        gui = MainUi()
        gui.show()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()

      看似简单的几行代码,放到代码里后,打印QtMultimedia.QMediaPlayer.MediaStatus() 输出一直是0--> UnknownMediaStatus,未知的状态。

      在github上找到一位大神用PyQt5仿了网易云音乐,看他的代码是另外创建个播放器类继承QMediaPlayer:

      创建个单独的Player类,两个方法play_music和pause_music,放代码里调用还是无法播放,在play处try没有任何报错,调试也没找到错误,最怕的就是什么都不输出。。。

      今早,仔细看了下以上两个可运行的demo,QMediaPlayer的实例化应该在setupUi初始化后,完美有声音了,play和pause正常运行。代码如下:

    class MyPlayer(QtWidgets.QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(MyPlayer, self).__init__()
            self.setupUi(self)
            self.setWindowTitle("Umusic")
            self.setWindowIcon(QIcon("MusicCloud.ico"))
            self.played = QtMultimedia.QMediaPlayer()
            self.played.setVolume(50.0)
            ...

      

  • 相关阅读:
    中文转拼音 (utf8版,gbk转utf8也可用)
    会不会死循环
    图片放大缩小的zoom.js
    Getting unknown property: commonmodelsTeacher::auth_Key
    Yii-admin 权限菜单配置
    wordpress 后台富文本编辑器,添加图片发现无法左对齐,样式出现混乱
    windows 命令
    Yii2 获取URL的一些方法
    PHP 直接使用html输出excel
    json JSON_UNESCAPED_UNICODE 防止中文乱码
  • 原文地址:https://www.cnblogs.com/NolaLi/p/11125507.html
Copyright © 2011-2022 走看看