一、界面如下
包含控件 qcombox、qtablewidget、qpushbotton、qverticalslider
二、运行代码
media_player.py
import sys
from PySide6 import QtWidgets
from PySide6.QtWidgets import *
from PySide6.QtMultimedia import *
from PySide6.QtMultimediaWidgets import QVideoWidget
from PySide6.QtCore import QTimer
#from PySide6.QtMultimedia import QMediaContent
from test_ui import Ui_MainWindow
import cv2
class MainWindow(QMainWindow):
def __init__(self, parent = None) :
super().__init__(parent)
self.ui = Ui_MainWindow()
#self.ui.tableWidget = QTableWidget()
self.ui.setupUi(self)
self.ui.tableWidget.setRowCount(6)
self.ui.tableWidget.setColumnCount(1)
self.i = 0
self.list_i = 0
self.maxValue = 1000
self.timer = QTimer()
self.video_name_t = []
# 播放器
self.player = QMediaPlayer()
self.player.setVideoOutput(self.ui.wdt_camera)
#self.ui.tableWidget = QTableWidget(1,6)
# 按钮打开文件
self.ui.btn_open.clicked.connect(self.openVideoFile)
# 播放
self.ui.btn_play.clicked.connect(self.playVideo) # play
# 暂停
self.ui.btn_pause.clicked.connect(self.pauseVideo) # pause
self.ui.btn_next.clicked.connect(self.playnextvideo) # next video
self.ui.btn_pre.clicked.connect(self.playpreviousvideo)
def openVideoFile(self):
#self.player.setMedia(QMediaContent(QFileDialog.getOpenFileUrl()[0]))
#self.player.setSource(QUrl.fromLocalFile(QFileDialog.getOpenFileUrl()[0]))
video_name = QFileDialog.getOpenFileName()[0]
print(video_name)
self.player.setSource(video_name)
self.media_duration = get_duration_from_cv2(video_name)
print(self.media_duration)
if video_name not in self.video_name_t:
self.video_name_t.append(video_name)
item = QTableWidgetItem(video_name)
item.setText(video_name)
self.ui.tableWidget.setItem(0,self.i, item)
self.i += 1
self.ui.bar_slider.setMaximum(round(self.media_duration*10))
self.time_count = 0
self.player.play()
self.timer.setInterval(100)
self.timer.start()
self.timer.timeout.connect(self.onTimerOut)
#print(self.player.availableMetaData())
def playVideo(self):
self.player.play()
self.ui.bar_slider.setMaximum(round(self.media_duration*10))
#self.time_count = 0
self.timer.setInterval(100)
self.timer.start()
self.timer.timeout.connect(self.onTimerOut)
def pauseVideo(self):
self.player.pause()
self.timer.stop()
def playnextvideo(self):
if self.list