下载资源后端资源详情
bofang_try.zip
大小:7.94KB
价格:45积分
下载量:0
评分:
5.0
上传者:qq_43921974
更新日期:2024-07-17

实现流媒体播放器uuuuuuuuuuu

资源文件列表(大概)

文件名
大小
bofang_try/
-
bofang_try/.idea/
-
bofang_try/.idea/.gitignore
50B
bofang_try/.idea/bofang_try.iml
340B
bofang_try/.idea/inspectionProfiles/
-
bofang_try/.idea/inspectionProfiles/profiles_settings.xml
174B
bofang_try/.idea/misc.xml
314B
bofang_try/.idea/modules.xml
279B
bofang_try/.idea/workspace.xml
3.53KB
bofang_try/__pycache__/
-
bofang_try/__pycache__/play.cpython-38.pyc
1.93KB
bofang_try/main.py
3.49KB
bofang_try/play.py
3.24KB
bofang_try/play.ui
2.99KB

资源内容介绍

实现流媒体播放器uuuuuuuuuuu
from PyQt5 import QtCore, QtGui, QtWidgetsimport sysimport cv2from PyQt5.QtCore import Qt, QTimerfrom PyQt5.QtGui import QImage, QPixmapfrom play import Ui_MainWindow # 假设你的 UI 文件名为 play.py,生成的类为 Ui_MainWindowclass VideoPlayer(QtWidgets.QMainWindow): def __init__(self): super().__init__() # 设置界面 self.ui = Ui_MainWindow() self.ui.setupUi(self) # 设置按钮连接 self.ui.select.clicked.connect(self.open_video_folder) self.ui.pushButton_2.clicked.connect(self.toggle_play_pause) self.playing = False # 初始化视频相关变量 self.video_path = "" self.video_capture = None self.timer = QTimer(self) self.timer.timeout.connect(self.update_frame) self.current_frame = None #进度条 self.ui.horizontalSlider.sliderMoved.connect(self.set_video_position) def open_video_folder(self): self.video_path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "选择视频文件", "", "视频文件 (*.mp4 *.avi)") if self.video_path: self.start_video() def start_video(self): self.video_capture = cv2.VideoCapture(self.video_path) total_frames = int(self.video_capture.get(cv2.CAP_PROP_FRAME_COUNT)) self.ui.horizontalSlider.setMinimum(0) self.ui.horizontalSlider.setMaximum(total_frames - 1) self.timer.start(30) # 设置更新频率,单位毫秒 self.playing = True # 开始播放视频时,设置 playing 为 True def update_frame(self): if self.playing: ret, frame = self.video_capture.read() if ret: self.current_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) h, w, ch = self.current_frame.shape bytes_per_line = ch * w qt_img = QImage(self.current_frame.data, w, h, bytes_per_line, QImage.Format_RGB888) pixmap = QPixmap.fromImage(qt_img) self.ui.player.setPixmap(pixmap.scaled(self.ui.player.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) else: self.timer.stop() self.video_capture.release() print("视频播放完毕!") def toggle_play_pause(self): if self.playing: # 如果正在播放,则暂停 print("Pausing playback") self.playing = False # 设置播放状态为 False,不再更新帧 else: # 如果已经暂停,则继续播放 print("Resuming playback") self.playing = True # 设置播放状态为 True,继续更新帧 def set_video_position(self, position): self.video_capture.set(cv2.CAP_PROP_POS_FRAMES, position) ret, frame = self.video_capture.read() print(ret) if ret: self.current_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) h, w, ch = self.current_frame.shape bytes_per_line = ch * w qt_img = QImage(self.current_frame.data, w, h, bytes_per_line, QImage.Format_RGB888) pixmap = QPixmap.fromImage(qt_img) self.ui.player.setPixmap(pixmap.scaled(self.ui.player.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))def main(): app = QtWidgets.QApplication(sys.argv) window = VideoPlayer() window.show() sys.exit(app.exec_())if __name__ == "__main__": main()

用户评论 (0)

发表评论

captcha