PYQT中QtMultimedia模块使用及处理

    技术2022-07-12  75

    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文件。

    Processed: 0.015, SQL: 9