Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Использование библиотеки vlc для создании простого медиа-проигрывателя
Прежде всего дам ссылку на мою статью, где рассказывается о создании проигрывателя с помощью PyQt5 (QVideoWidget, QMediaPlayer):
Но есть другие инструменты создания проигрывателя. Модуль vlc можно использовать, когда у вас на компьютере уже есть проигрыватель vlc. У меня то с этим нет проблем, я всегда эту программу использовал. vlc в общем не плохая библиотека, можно на её основе создать что-то своё. Установить библиотеку можно просто (pip или pip3)
pip3 install vlc
или
pip3 install python-vlc
Программа ниже (рисунки 1, 2) представляет довольно ограниченную функциональность. Но она чисто учебная, можно развивать идеи или реализовывать свои. Окно программы представлено на рисунке 3. Значение кнопок: Запустить - выбрать видео или звуковой файл для запуска, кнопка Стоп/Прод - приостановить/продолжить проигрывание, кнопка Кон - остановить проигрывание, кнопка Пер - проигрывать начиная с места, указанного в крайнем поле редактирования в секундах (здесь 4000 сек), поле слева показывает общую продолжительность в секундах (6600 сек). В качестве окна проигрывателя используется виджет tkinter, с которым уже подробно знакомились.
Пояснение к части программы, представленной на скриншоте на рисунке 1.
- В целом читателю должно быть всё знакомо. Ну кроме такого элемента как tkinter.Frame. Это такая рамка, куда можно помещать другие объекты. Вот именно туда поместим наш проигрыватель (см. ниже).
Пояснение к остальной части программы
- Функция vid(). Выбор файла для проигрывания. Если файл выбран, то создаётся объект vlc. MediaPlayer и этот объект привязывается к tkinter.Frame: vds.set_xwindow(self.fr.winfo_id()). далее проигрыватель запускается: vds.play() и определяется длину видео или звукового файла в секундах: vlc.get_length() // 1000. Значение помещается в соответствующее поле. Отметим задержку time.sleep(). Дело в том, что видео запускается в параллельном процессе и нужно подождать, когда запуск окончательно произойдёт.
- Кстати, обращу внимание, что поле ввода, где длина проигрывания в секундах закрыта для чтения. Чтобы туда записать, приходится в начаел снять ограничение, а потом снова наложить:
self.ed1.configure(state='normal')
self.ed1.delete(0, tk.END)
self.ed1.insert(0, str(self.v) + ' сек.')
self.ed1.configure(state='readonly') - Пауза определяется методом vlc.pause(), при чём второй вызов метода паузу снимает.
- Окончание проигрывания устанавливается методом vlc.stop().
- Наконец перевод проигрывания в нужную точку (по секундам) осуществляется методом vlc.set_position().
Пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.