Как сделать перемотку аудио в Python?
У меня проблема. Кто знает как сделать перемотку аудио в Python и привязать её к QtSlider? Я использовал pygame и pyqt5, но не нашёл как сделать перемотку... Как получить длину файла? Кто может сказать? Я буду очень благодарен.
Ответы (1 шт):
Длина файла в миллисекундах возвращается функцией 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)