PySide6 播放视频样例代码

PySide6 播放视频样例代码

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QSlider
from PySide6.QtMultimedia import QMediaPlayer
from PySide6.QtMultimediaWidgets import QVideoWidget
from PySide6.QtCore import QUrl, Qt


class VideoPlayer(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Video Player")
        self.setGeometry(100, 100, 1024, 768
### 使用 PySide6 实现视频播放进度条功能 为了实现在 PySide6 中集成视频播放并带有进度条更新的功能,可以采用 `QMediaPlayer` 和 `QVideoWidget` 来处理媒体文件的播放,并通过连接信号槽机制来同步视频播放位置与进度条的状态。下面展示一段能够完成此需求的基础代码: ```python from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider, QPushButton from PySide6.QtMultimedia import QMediaPlayer from PySide6.QtMultimediaWidgets import QVideoWidget import sys class VideoPlayer(QWidget): def __init__(self): super().__init__() self.media_player = QMediaPlayer() video_widget = QVideoWidget() # 创建滑动条用于显示/控制播放进度 self.slider = QSlider() self.slider.setOrientation(Qt.Horizontal) self.slider.sliderMoved.connect(self.set_position) play_button = QPushButton("Play") layout = QVBoxLayout() layout.addWidget(video_widget) layout.addWidget(self.slider) layout.addWidget(play_button) self.setLayout(layout) # 将视频输出设置到video widget上 self.media_player.setVideoOutput(video_widget) # 当前时间变化时调整slider的位置 self.media_player.positionChanged.connect(self.update_slider_position) # 设置最大长度时更新slider范围 self.media_player.durationChanged.connect(self.set_duration) play_button.clicked.connect(self.play_pause_video) self.setWindowTitle('PySide6 Video Player') def open_file(self, file_path): """加载指定路径下的视频""" url = QtCore.QUrl.fromLocalFile(file_path) media_content = QtMultimedia.QMediaContent(url) self.media_player.setSource(media_content) def update_slider_position(self, position): """根据当前播放位置更新滑块""" self.slider.setValue(position) def set_duration(self, duration): """当获取到总时长后设定滑块的最大值""" self.slider.setMaximum(duration) def set_position(self, position): """用户拖动滑块改变播放器当前位置""" self.media_player.setPosition(position) def play_pause_video(self): """切换播放暂停状态""" if self.media_player.state() == QMediaPlayer.PlayingState: self.media_player.pause() else: self.media_player.play() if __name__ == '__main__': app = QApplication(sys.argv) player = VideoPlayer() player.open_file('/path/to/video.mp4') # 替换为实际存在的本地视频路径 player.show() sys.exit(app.exec()) ``` 这段代码创建了一个简单的 GUI 应用程序,在其中包含了基本的视频播放组件以及一个水平方向上的滑动条作为进度指示器[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值