【问题标题】:Get Duration of Media Before Playing在播放前获取媒体的持续时间
【发布时间】:2018-11-26 10:05:31
【问题描述】:

我有一个QMediaPlayer 对象,如果我尝试在让文件缓冲足够之前获得持续时间,将返回-1。据我了解,这是因为文件是异步加载的,并且无法知道持续时间(以及随后的位置),因为不知道文件是否已完全加载。

我解决这个问题的最初想法是运行media.play(),紧随其后的是media.stop()。这绝对没有任何作用。然后,我考虑运行media.play()media.pause(). 这也不起作用。我想这是因为媒体需要缓冲很长一段时间才能获得持续时间。此外,无论如何,这种“解决方案”都不是理想的。

如何在文件播放之前获取 QMediaPlayer 对象的持续时间?

【问题讨论】:

    标签: python-3.x pyqt5


    【解决方案1】:

    一种可能的解决方案是使用durationChanged 信号:

    from PyQt5 import QtCore, QtMultimedia
    
    if __name__ == '__main__':
        import sys
        app = QtCore.QCoreApplication(sys.argv)
        player = QtMultimedia.QMediaPlayer()
    
        @QtCore.pyqtSlot('qint64')
        def on_durationChanged(duration):
            print(duration)
            player.stop()
            QtCore.QCoreApplication.quit()
    
        player.durationChanged.connect(on_durationChanged)
        file = "/path/of/small.mp4"
        player.setMedia(QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile(file)))
        player.play()
        sys.exit(app.exec())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多