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 是我自己的影片檔,你可以任意測試自己的影片。
後記
如果想要完成更高品質的影片播放器,那大概得完成『進度條』、『播放按鈕』——諸如此類的功能。若有閒暇時候,我想我還滿感興趣的,可能會在這之上再做修改。
有緣剛巧閱讀到這篇的各位,也不妨自己添加各式各樣想要的功能上去。
博主你好
我想要在 Video 播放時
在畫面上顯示其他東西(如point, line等)
不知道您有沒有比較好的方法解決這個問題
謝謝
你好,想要請問一下,你想要顯示的東西是指『進度條』、『選項』之類的東西呢?
還是指能夠讓使用者在影片上繪製『線條』之類的功能呢?
如果是希望能在畫面上顯示『線條』或是『圖案』,那麼也許可以參考以下這個 StackOverflow 的解決方法:
https://stackoverflow.com/questions/53899740/how-to-draw-qtgraphicsview-on-top-of-qvideowidget-with-transparency