Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Модули QVideoWidget, QMediaPlayer и проигрыватель на PyQt5
Наконец я дошёл до написания простейших проигрывателей. В великой и ужасной PyQt5 есть всё, в том числе и возможность создания медио-проигрывателей. Ниже представлена программа, реализующая основные функции проигрывателя. При желании, конечно их можно расширить и развить, все программы у меня для общего пользования.
Окна программы представлены на рисунках 5 и 6. Программа имеет кнопку открыть, с помощью которой можно загрузить в проигрыватель видео-файл, который сразу начнёт выполняться. Ползунок внизу будет показывать место проигрывания. При этом появляются новые кнопки Пауз и Стоп. Т.е. можно поставить проигрывание на паузу и затем вернуться к просмотру, или же полностью остановить проигрывание. Кроме того, с помощью ползунка можно переходить к тому или иному фрагменту. Поле внизу окна показывает либо имя файла, который проигрывается, либо сообщение об ошибке.
На рисунке 1 представлены модули, которые подключаются к программе. Большинство из них нам уже знакомы. См. подборку PyQt5. Но есть и новые:
- QMediaContent — класс, который используется для загрузки в проигрыватель видео-контента;
- QMediaPlayer — класс, непосредственно осуществляющий интерпретацию видео-файла;
- QVideoWidget — контейнер (виджет), в который помещается проигрыватель.
Непосредственно в конструкторе устанавливаются все элементы окна и определяются обработчики. Главное окно программы создаётся с помощью библиотечного класса QMainWindow.
Обратим на некоторые строки внимание:
- Создаётся объект QVideoWidget(), в котором будет просматриваться видео. Далее методом setVideoOutput() (класса QMediaPlayer) мы привязываем сам проигрыватель к виджету QVideoWidget.
- Далее .positionChanged.connect() здесь мы указываем обработчик для связи места проигрывания и ползунка (QSlider). .durationChanged.connect() указывает обработчик, который вызывается в начале проигрывания и передаётся ползунку длительность видео. .error.connect() - определяется обработчик в случае возникновения ошибок.
- Создаётся четыре кнопки, одна видна всегда (bt), она обеспечивает открытие видео-файла, вторая (bte) видна при проигрывании, она заканчивает процесс проигрывания. Кнопка btp для паузы проигрывания, btc кнопка продолжение после паузы. Соответственно ниже определены обработчики нажатия кнопок.
- Вызов метода setb() определяет видимость кнопок. Если параметр 0, то видан только кнопка Открыть, если параметр равен 1, то видны кнопки Пауз и Стоп. Если параметр 2, то видны кнопки Прод и Стоп.
Методы на рисунке 3 довольно понятны. setRange() задаются параметры ползунка. Если второй параметр 0, то ползунок находится в спящем состоянии. При запуске медиа-файла второй параметр покажет длительность фильма. QMediaPlayer.play() - запуск видео с текущего места. При загрузке это начало файла, после паузы это текущее положение. QMediaPlayer.play() - установить паузу. QMediaPlayer.stop() - остановить процесс проигрывания.
Обратим внимание на метод spos. Он вызывается если мышкой двигать ползунок. Тогда положение ползунка будет соответствовать положению в видео: QMediaPlayer.setPosition().
setb() - как уже говорилось видимость кнопок.
Пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.