Как воспроизвести видео файл в PyQt5 с использованием Ot-Designer

Я пытаюсь запустить видео в окне, созданном в Qt Designer.

Почему при запуске данного кода выходит пустое окно, без воспроизведения видео в нем?

main.py

import os
import sys

from PyQt5 import QtWidgets, QtMultimedia, uic, QtCore


class Form(QtWidgets.QDialog):
    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)
        self.ui = uic.loadUi(os.path.join(os.path.dirname(__file__), "form.ui"), self)
        self.player = QtMultimedia.QMediaPlayer(None, QtMultimedia.QMediaPlayer.VideoSurface)
        file = os.path.join(os.path.dirname(__file__), "video.mp4")
        self.player.setMedia(QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile(file)))
        self.player.setVideoOutput(self.ui.widget)
        self.player.play()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Form()
    w.show()
    sys.exit(app.exec())

form.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QVideoWidget" name="widget" native="true"/>
   </item>
  </layout>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QVideoWidget</class>
   <extends>QWidget</extends>
   <header>PyQt5.QtMultimediaWidgets</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

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

Автор решения: Владимир

Я не знал, что QMediaPlayer в PyQt5 изначально поддерживает только avi, но не mp4. Нужно просто установить кодеки https://codecguide.com/download_k-lite_codec_pack_basic.htm, как рассказали на этом сайте.

Теперь мой код работает!

→ Ссылка