Вот мой код:
import sys
from PyQt5.Qt import QUrl
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QMediaPlaylist
from PyQt5.QtWidgets import QApplication, QWidget
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.playlist = QMediaPlaylist(self)
self.player = QMediaPlayer(self)
self.player.setPlaylist(self.playlist)
self.playlist.addMedia(QMediaContent(
QUrl.fromLocalFile('mypath')))
self.playlist.addMedia(QMediaContent(
QUrl.fromLocalFile('mypath')))
self.playlist.setPlaybackMode(QMediaPlaylist.Loop)
self.playlist.setCurrentIndex(1)
self.player.setVolume(80)
self.player.play()
self.player.durationChanged.connect(self.print_durantion)
print(self.player.duration()) # 0
def print_durantion(self, d):
print(d) # never printed
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
Я пытаюсь получить продолжительность файла, но всегда получаю 0. Он говорит в QtAssistant, что значение может быть недоступно, когда начальное воспроизведение начинается, иговорит нам использовать durantionChanged для получения уведомлений о состоянии.
Но как будет передаваться сигнал durationChanged, если длительность всегда равна 0 (значение d никогда не печатается)?
Есть ли способ получитьпродолжительность воспроизведения медиафайла?Любая помощь будет оценена.(Я тестировал приведенный выше код на MacOS)