Шаг 293.
Библиотека PyQt5.
Мультимедиа. Класс QMediaPlaylist (окончание)

    На этом шаге мы перечислим основные методы и сигналы этого класса и приведем пример его использования.

    Класс QMediaPlaylist поддерживает следующие основные методы (полный их список приведен на странице https://doc.qt.io/qt-5/qmediaplaylist.html):

    Класс QMediaPiaylist поддерживает большое количество сигналов, из которых для нас представляют интерес лишь приведенные далее (полный их список доступен на странице https://doc.qt.io/qt-5/qmediaplaylist.html):

    Для примера напишем совсем простое приложение аудио проигрывателя, воспроизводящего плейлист. Оно будет создавать плейлист из четырех аудиофайлов, находящихся в той же папке, что и само приложение, воспроизводить его и позволит пользователю переключаться на предыдущую и следующую позицию плейлиста.

# -*- coding: utf-8 -*-
from PyQt5  import QtCore, QtWidgets, QtMultimedia
import sys, os

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent,
               flags= QtCore.Qt.Window | QtCore.Qt.MSWindowsFixedSizeDialogHint)
        self.setWindowTitle("Плейлист")
        self.mplPlayer = QtMultimedia.QMediaPlayer()
        # Создаем плейлист и наполняем его файлами
        self.playlist = QtMultimedia.QMediaPlaylist()
        files = ["Chicago.mp3", "Monologue.mp3", "Triplicity.mp3", "Triumvirate.mp3"]
        for f in files:
            fn = QtCore.QUrl.fromLocalFile(os.path.abspath(f))
            self.playlist.addMedia(QtMultimedia.QMediaContent(fn))

        # Поэкспериментируем со вставкой и удалением позиций в плейлисте
        # Вставляем первый файл в конец плейлиста
        fn = QtCore.QUrl.fromLocalFile(os.path.abspath(files[0]))
        self.playlist.insertMedia(4, QtMultimedia.QMediaContent(fn))
        # И удаляем первую позицию
        self.playlist.removeMedia(0)
        self.playlist.setCurrentIndex(0)
        self.mplPlayer.setPlaylist(self.playlist)
        # Создаем элементы управления воспроизведением
        vbox = QtWidgets.QVBoxLayout()
        hbox = QtWidgets.QHBoxLayout()
        self.btnPlay = QtWidgets.QPushButton("&Пуск")
        self.btnPlay.clicked.connect(self.mplPlayer.play)
        hbox.addWidget(self.btnPlay)
        self.btnNext = QtWidgets.QPushButton("П&редыдущая")
        self.btnNext.clicked.connect(self.playlist.next)
        hbox.addWidget(self.btnNext)
        self.btnPrevious = QtWidgets.QPushButton("&Следующая")
        self.btnPrevious.clicked.connect(self.playlist.previous)
        hbox.addWidget(self.btnPrevious)
        vbox.addLayout(hbox)
        self.lblCurrent = QtWidgets.QLabel("")
        vbox.addWidget(self.lblCurrent)
        self.playlist.currentMediaChanged.connect(self.showFile)
        self.setLayout(vbox)
        self.resize(300, 70)

    # Выводи на экран имя файла, воспроизводящегося в данный момент
    # Метод canonicalUrl() класса QMediaContent возвращает
    # путь к файлу экземпляра класса QUrl, а метод fileName()
    # класса QUrl позволяет узнать имя файла
    def showFile(self, content):
        self.lblCurrent.setText(content.canonicalUrl().fileName())

app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Архив с файлами можно взять здесь.

    Результат работы приложения показан на рисунке 1.


Рис.1. Проигрыватель с плейлистом

    На следующем шаге мы рассмотрим запись звука.




Предыдущий шаг Содержание Следующий шаг