Как сделать перемотку аудио в Python?

У меня проблема. Кто знает как сделать перемотку аудио в Python и привязать её к QtSlider? Я использовал pygame и pyqt5, но не нашёл как сделать перемотку... Как получить длину файла? Кто может сказать? Я буду очень благодарен.


Ответы (1 шт):

Автор решения: Alexander Chernin

Длина файла в миллисекундах возвращается функцией QMediaPlayer.duration(). Но, при определенных обстоятельствах, не сразу, а в процессе воспроизведения, это значение может измениться (как для одного и того же файла, так и при смене файла в листе воспроизведения), поэтому лучше отслеживать сигнал QMediaPlayer.durationChanged().

В слоте отслеживания сигнала изменения длительности медиа-контента можно установить значение QtSlider (или QProgressBar). В этом же примере добавим перемотку.

class SomeParentWidget(QWidget):

    def __init__(self, parent=None):
        # необходимые вызовы и инициализации
        # весь gui в self.ui
        #...

        # длительность текущего медиа-контента
        self.mediaPlayer.durationChanged.connect(self.__initSlider)

        # перемотка
        self.ui.slider.valueChanged.connect(self.__rewindTo)

    # duration_ms, миллисекунд (64-битное целое)
    def __initSlider(self, duration_ms):
        self.ui.slider.setMaximum(duration_ms)

    # перемотка
    def __rewindTo(self, pos):
        self.mediaPlayer.setPosition(pos)
→ Ссылка