Skip to content

[PyQt5] 使用 QMediaPlayer 模組在界面上播放影片

Last Updated on 2021-04-06 by Clay

在使用 PyQt5 開發 Python 各式各樣有趣的界面時,想必也有不少人希望能夠製作『影像處理』相關的應用程式。事實上,在 PyQt5 當中,這件事可說是一點也不困難:在 PyQt5 當中,只要呼叫 QMediaPlayer 這個元件,就可以輕鬆完成影片播放的功能。

今天就來簡單紀錄一下剛如何使用 PyQt5 播放影片。


QMediaPlayer

簡單的播放程式碼沒幾行,PyQt5 已經封裝得相當輕巧。

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class VideoWindow(QMainWindow):
     def __init__(self):
         super(VideoWindow, self).__init__()
         self.setWindowTitle('QMediaPlayer TEST')
         self.resize(640, 480)

         # QMediaPlayer
         self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
         self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile('test.mp4')))

         # Set widget
         self.videoWidget = QVideoWidget()
         self.videoWidget.setGeometry(self.pos().x(), self.pos().y(), self.width(), self.height())
         self.setCentralWidget(self.videoWidget)
         self.mediaPlayer.setVideoOutput(self.videoWidget)

         # Play
         self.mediaPlayer.play()


if __name__ == '__main__':
     app = QApplication([])
     window = VideoWindow()
     window.show()
     sys.exit(app.exec_())


Output:

我過去遊玩血源詛咒的錄影。

由於程式碼相當短,我多做解釋反而畫蛇添足,直接看程式碼大概是最快的方法。

唯一值得注意的是,只是初始化 QMediaPlayer 還沒有辦法顯示出影片的畫面,不過大概已經聽得到聲音了。

我們要額外使用 QVideoWidget() 來初始化播放的界面,並讓我們的 MainWindow 以此為 Widget,當然,你可以可以自己客製化影片播放的位置與大小。

另外就是,test.mp4 是我自己的影片檔,你可以任意測試自己的影片。


後記

如果想要完成更高品質的影片播放器,那大概得完成『進度條』、『播放按鈕』——諸如此類的功能。若有閒暇時候,我想我還滿感興趣的,可能會在這之上再做修改。

有緣剛巧閱讀到這篇的各位,也不妨自己添加各式各樣想要的功能上去。

3 thoughts on “[PyQt5] 使用 QMediaPlayer 模組在界面上播放影片”

  1. 博主你好
    我想要在 Video 播放時
    在畫面上顯示其他東西(如point, line等)
    不知道您有沒有比較好的方法解決這個問題
    謝謝

    1. ccs96307

      你好,想要請問一下,你想要顯示的東西是指『進度條』、『選項』之類的東西呢?
      還是指能夠讓使用者在影片上繪製『線條』之類的功能呢?

Leave a Reply取消回覆

Exit mobile version