PYQT中QtMultimedia模块使用及处理

PYQT中,使用QtMultimedia模块,播放视频。

本文可以实现的功能是点击播放按钮,可以播放视频;点击暂停按钮,可以停止播放视频;拉动进度条,可以定位视频播放位置。

附上代码:

from PyQt5.QtCore import QUrl
import PyQt5.QtWidgets
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import QVideoWidget
class My_widget(QWidget):
    def __init__(self):
        super().__init__()
        self.player = QMediaPlayer()
        self.videowidget = QVideoWidget()  # 定义视频显示的widget
        self.resize(700, 700)
        self.layout = QVBoxLayout()
        self.h_layout = QHBoxLayout()
        self.layout.addWidget(self.videowidget)
        self.btn_start = QPushButton()
        self.btn_start.setText("开始")
        self.btn_stop = QPushButton()
        self.btn_stop.setText("暂停")
        self.Slider = QSlider(Qt.Horizontal, self)
        self.Slider.setRange(0, 100)
        self.Slider.show()
        self.layout.addWidget(self.btn_start)
        self.layout.addWidget(self.btn_stop)
        self.layout.addWidget(self.Slider)
        self.player.durationChanged.connect(self.print_data)
        self.btn_stop.clicked.connect(self.play_pause)
        self.btn_start.clicked.connect(self.play_start)
        self.Slider.valueChanged.connect(self.slider_change)
        self.player.positionChanged.connect(self.player_change)
        self.setLayout(self.layout)
    def show_video(self):
        self.show()
        self.player.setVideoOutput(self.videowidget)  # 视频播放输出的widget,就是上面定义的
        self.videopath = "D:\\MYVIDEO.MP4"
        frame =QMediaContent(QUrl.fromLocalFile(self.videopath))
        frame = QMediaContent(frame)
        self.player.setMedia(frame)  # 选取视频文件
        self.player.play()  # 播放视频
        self.btn_start.setEnabled(False)

    def print_data(self):
        self.Slider.setRange(0, self.player.duration())

    def player_change(self):
        self.Slider.setValue(int(self.Slider.value()))

    def slider_change(self):
        self.player.setPosition(float(self.Slider.value()))

    def play_pause(self):
        self.player.pause()
        self.btn_start.setEnabled(True)

    def play_start(self):
        self.btn_start.setEnabled(False)
        self.player.play()
        self.btn_stop.setEnabled(True)

    def closeEvent(self,event):
        self.play_pause()

注意:如果视频播放不出来,则是解析错误,此时需要下载LAV解析包。LAVFilters-0.74.1-x64,右键以管理员身份运行如下图的3个.dat文件。
PYQT中QtMultimedia模块使用及处理_第1张图片

你可能感兴趣的:(PyQt)