当前位置: 首页 > article >正文

Pyqt6 中 QMediaPlayer 音视频播放

QMediaPlayer 是 PyQt6 中用于音视频播放的类,提供了对多种媒体格式的支持,能够播放本地文件、流媒体、音频以及视频等。它是 QtMultimedia 模块的一部分,主要通过与 QMediaPlayer 结合使用的控件,如 QVideoWidget 来显示视频内容。

主要功能:

1. 加载和播放媒体:

  • setSource():设置要播放的媒体源,可以是本地文件、URL 或媒体流。
  • play():开始播放音频或视频。
  • pause():暂停播放。
  • stop():停止播放。

2. 控制音量:

  • setVolume():设置音量(0到100之间)。

3. 控制播放进度:

  • setPosition():设置播放的当前位置(以毫秒为单位)。
  • position():获取当前播放位置。

4. 获取媒体信息:

  • duration():获取媒体的总时长(以毫秒为单位)。
  • media():获取当前播放的媒体内容。

5. 信号:

  • mediaStatusChanged: 当媒体播放状态发生变化时发出信号。
  • positionChanged: 当播放进度改变时发出信号。
  • durationChanged: 当媒体的总时长发生变化时发出信号。
  • error: 当播放出错时触发。

6. 视频输出:

  • setVideoOutput(): 设置一个视频控件(如 QVideoWidget)来显示播放的视频内容。

示例代码:

from PyQt6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput
from PyQt6.QtCore import QUrl

app = QApplication([])

# 界面
window = QWidget()
layout = QVBoxLayout()

# 播放器
# 播放器
player = QMediaPlayer()
audio_output = QAudioOutput()
player.setAudioOutput(audio_output)
player.setSource(QUrl.fromLocalFile("./res/music/提示音1.mp3"))  # 指定本地音频文件
player.play()
player.setLoops(5)  # 循环播放

# 播放按钮
button = QPushButton("停止")
button.clicked.connect(player.stop)

layout.addWidget(button)
window.setLayout(layout)
window.show()
app.exec()

关键方法总结:

  • setSource(): 设置媒体源。
  • play()pause()stop(): 控制播放。
  • setVolume(): 调整音量。
  • setPosition(): 设置播放进度。
  • setVideoOutput(): 设置视频输出窗口。


http://www.kler.cn/a/545375.html

相关文章:

  • vs发布后再linux打包linux版本的安装包
  • BIO、NIO 和 AIO 这三者的区别?
  • 磁盘与mysql的故事
  • 【机器学习】监督学习-决策树-CART(Classification and Regression Tree,分类与回归树)详尽版
  • 安卓手游内存call综合工具/内部call/安卓注入call/数据分析(类人猿学院)
  • MySQL | MySQL安装教程
  • Redis过期删除与内存淘汰策略面试题剖析
  • 前端快速生成接口方法
  • 网络安全知识--网络、网络安全产品及密码产品概述
  • 网络安全抑制 缓解 根除 恢复 网络安全如何解决
  • 麒麟操作系统-MySQL5.7.36二进制安装
  • 原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表
  • 用 Python 实现 DeepSeek R1 本地化部署
  • 【无标题】前端面试题AI版
  • C# ASP.NET的应用场景
  • 无人机之无线传输技术!
  • 04-微服务02(网关路由、网关鉴权、nacos统一配置管理、自动装配原理、bootstrap.yaml)
  • 【Elasticsearch】Token Graphs
  • luoguP8764 [蓝桥杯 2021 国 BC] 二进制问题
  • 记录 | WPF基础学习MVVM例子讲解1