QT之QMediaPlayer的用法

QT之QMediaPlayer的用法

    • 成员函数
    • 例程

成员函数

1)setMedia(const QMediaContent &media, QIODevice *stream = nullptr)
设置要播放的媒体内容,其中参数media指定了媒体内容,stream参数指定了用于读取媒体的输入设备(如文件流)。

2)setPlaylist(QMediaPlaylist *playlist)
设置要播放的播放列表,参数playlist是一个指向QMediaPlaylist对象的指针。

3)setPlaybackMode(QMediaPlaylist::PlaybackMode mode)
设置播放模式,参数mode指定了播放模式,如循环播放、随机播放等。

4)play()
开始播放媒体。

5)stop()
停止播放媒体。

6)pause()
暂停播放媒体。

7)currentMedia() const
获取当前正在播放的媒体内容。

8)setVolume(int volume)
设置音量大小,参数volume指定了音量级别,范围为0(静音)到100(最大音量)。

9)setPosition(qint64 position)
设置播放进度,参数position指定了新的播放进度位置(以毫秒为单1)位)

10)setOutputDevice(QIODevice *device)
设置音频输出设备,参数device是一个指向QIODevice对象的指针。

11)outputDevice() const
获取当前音频输出设备。

12)setVideoOutput(QWidget *widget)
设置视频输出设备,参数widget是一个指向QWidget对象的指针。

13)videoOutput() const
获取当前视频输出设备。

14)isAudioAvailable() const
检查是否可用的音频输出。

15)isVideoAvailable() const
检查是否可用的视频输出。

16)duration() const
获取媒体的播放时长(以毫秒为单位)。

17)position() const
获取当前的播放进度位置(以毫秒为单位)。

18)setPosition(qint64 position)
设置播放进度位置(以毫秒为单位)。

19)currentMediaTime() const
获取当前播放的媒体时间(以毫秒为单位)。

20)seek(qint64 pos)
跳转到指定的播放时间位置(以毫秒为单位)。

21)setPlaybackRate(qreal rate)
设置播放速度,参数rate指定了播放速度,例如0.5表示慢速播放,2表示快速播放。

22)playbackRate() const
获取当前的播放速度。

23)isPlaying() const
检查是否正在播放媒体。

24)isPaused() const
检查是否处于暂停状态。

25)isStopped() const
检查是否停止了播放。

26)state() const
获取当前的播放状态。

27)setState(QMediaPlayer::State state)
设置播放状态,参数state指定了要设置的播放状态,如28)QMediaPlayer::PlayingState、
QMediaPlayer::PausedState或QMediaPlayer::StoppedState。

例程

#include <QMediaPlayer>  
#include <QMediaContent>  
#include <QApplication>  
#include <QMediaPlaylist>  
#include <QMediaPlaylistIten>  
#include <QVideoWidget>  
#include <QTimer>  int main(int argc, char *argv[])  
{  QApplication app(argc, argv);  // 创建QMediaPlayer对象  QMediaPlayer *player = new QMediaPlayer;  // 创建QMediaContent对象,指定要播放的视频文件路径  QString filePath = "path/to/video";  QMediaContent media(QUrl::fromLocalFile(filePath));  // 设置要播放的媒体内容  player->setMedia(media);  // 创建QVideoWidget对象,用于显示视频画面  QVideoWidget *videoWidget = new QVideoWidget;  // 将视频画面显示在QVideoWidget对象中  player->setVideoOutput(videoWidget);  // 开始播放视频  player->play();  // 创建定时器对象,用于在播放结束后自动停止播放器  QTimer *timer = new QTimer;  QObject::connect(player, &QMediaPlayer::finished, timer, &QTimer::start, Qt::QueuedConnection);  timer->start(1000);  // 1秒后停止播放器  return app.exec();  
}

我们首先创建了一个QMediaPlayer对象,然后通过QMediaContent对象指定要播放的视频文件路径,再通过调用setMedia()方法将媒体内容设置到QMediaPlayer对象中。接着,我们创建了一个QVideoWidget对象用于显示视频画面,并通过调用setVideoOutput()方法将视频输出到该对象中。最后,我们调用play()方法开始播放视频,并通过定时器对象在播放结束后自动停止播放器。

注意:.pro文件中必须添加 multimedia multimediawidgets

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超融合数据中心如何搭建?有哪些优势?

导语 随着全社会数字经济的发展&#xff0c;企业的数字化转型正加速推进。这其中&#xff0c;占据所有企业数量 99.8% 的中小企业&#xff0c;像是社会的毛细血管广泛遍布在各个领域&#xff0c;相对大企业对市场更敏感、决策更灵活。这些因素本应有利于数字化转型&#xff0c…

百科全书-疑惑解答

1.前端技术栈是如何一步步演变到现在vue/react等框架 答&#xff1a; 前端技术栈的演变经历了多个阶段&#xff0c;从最初的静态页面到动态交互的Web应用&#xff0c;再到现代的前端框架如Vue和React。以下是这个演变过程的一些关键节点&#xff1a; 静态页面阶段&#xff1…

Python Subprocess模块

Python的subprocess模块是一个强大的工具&#xff0c;它允许你在Python中执行外部命令&#xff0c;并与其进行交互 1. subprocess模块的基本用法 import subprocess result subprocess.run(["ls", "-l"], capture_outputTrue, textTrue) print(result.st…

Hadoop入门学习笔记

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 这里写目录标题 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.1.1. 修改虚拟机子网IP和网关1.1.2. 安装…

【智能家居】一、工厂模式实现继电器灯控制

一、用户手册对应的I/O 二、工厂模式实现继电器灯控制 三、代码段 controlDevice.h&#xff08;设备类&#xff09;main.c&#xff08;主函数&#xff09;bathroomLight.c&#xff08;浴室灯&#xff09;bedroomLight.c&#xff08;卧室灯&#xff09;bedroomLight.c&#xff…

python基础练习题库实验7

文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目总结题目1 编写代码创建一个名为Staff的类和方法__init__,以按顺序初始化以下实例属性: -staff_number -first_name -last_name -email 代码 class Staff:def __init__(self, staff_number, first_name,…

【网络安全】下载并安装 kali 的虚拟机 版本

kali虚拟机版本的下载地址&#xff1a;Get Kali | Kali Linux 下载完成后&#xff0c;解压&#xff0c;双击.vmx打开&#xff0c;即可完成kali在虚拟机中的安装和配置。 默认账户和密码都为kali

Python爬取某电商平台商品数据及评论!

目录 前言 主要内容 1. 爬取商品列表数据 2. 爬取单个商品页面的数据 3. 爬取评论数据 4. 使用代理ip 总结 前言 随着互联网的发展&#xff0c;电商平台的出现让我们的消费更加便利&#xff0c;消费者可以在家里轻松地购买到各种商品。但有时候我们需要大量的商品数据进…

Vue3中的<script setup>和<script>的区别

相同点 在一个 Vue3 单文件组件 (SFC)中&#xff0c;<script setup> 和 <script> 它们各自最多只能存在一个。 不同点 <script setup> 这个脚本块将被预处理为组件的 setup() 函数&#xff0c;这意味着它将为每一个(也可以说每一次)组件实例都执行。 <…

数据库系统原理——备考计划2:数据库系统的概述

前言&#xff1a; 基于课本、上课ppt、复习总结ppt进行一个知识点的罗列&#xff0c;方便后期高效地复习 目录 前言&#xff1a; 一、基本概念 1.数据&#xff1a; &#xff08;1&#xff09;概念&#xff1a; &#xff08;2&#xff09;数据的种类&#xff1a; &#xff08;3&…

YOLOv5算法进阶改进(6)— 更换主干网络之ResNet18

前言:Hello大家好,我是小哥谈。ResNet18是ResNet系列中最简单的一个模型,由18个卷积层和全连接层组成,其中包含了多个残差块。该模型在ImageNet数据集上取得了很好的表现,成为了深度学习领域的经典模型之一。ResNet18的优点是可以解决深度神经网络中梯度消失的问题,使得性…

解决终Linux端中文乱码问题及设置UTF-8编码

简介 当在终端中复制粘贴中文文本时出现乱码问题&#xff0c;可能是因为终端未正确设置 UTF-8 编码。本文将介绍如何通过设置语言环境和字符类型环境&#xff0c;以及选择正确的语言包&#xff0c;来解决这一问题。 步骤&#xff1a; 1. 检查当前终端设置 在终端中运行以下…

深入理解网络阻塞 I/O:BIO

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

Java== 和 equals 的区别是什么?

Java 和 equals 的区别是什么&#xff1f; 在Java中&#xff0c; 运算符和 equals() 方法有不同的用途&#xff0c;主要取决于它们被应用的对象类型。 运算符&#xff1a; 比较基本数据类型&#xff1a; 对于基本数据类型&#xff08;如 int、float、double 等&#xff09;&a…

零基础也可以学编程,分享中文编程工具开发软件

零基础也可以学编程&#xff0c;分享中文编程工具开发软件 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;象如图这个实例就是用…

使用功率MOSFET常见的一些问题(二)

使用功率MOSFET常见的一些问题&#xff08;二&#xff09; 1.栅源电压瞬变2.安全工作区3.感应导通和击穿3.1 如何避免感应导通 1.栅源电压瞬变 过大的电压瞬态会穿透薄栅源氧化层&#xff0c;造成永久性损坏。不幸的是&#xff0c;这种瞬态在电源开关电路中产生&#xff0c;并 …

行业研究:2023年氟化钾发展前景及细分市场分析

氟化工产品&#xff0c;作为化工新材料之一&#xff0c;在“十二五”规划被单列一个专项规划。由于产品具有高性能、高附加值&#xff0c;氟化 工产业被称为黄金产业。 氟是一种盐&#xff0c;有一种叫做钾的腐化盐&#xff0c;这种产品是白色结晶&#xff0c;易吸收&#xff0…

OSI七层参考模型及其协议和各层设备

OSI网络模型是开放系统互联&#xff08;Open Systems Interconnection&#xff09;参考模型&#xff0c;它是由国际标准化组织&#xff08;ISO&#xff09;制定的。这个模型将网络系统划分为七个层次&#xff0c;OSI网络模型的七层是&#xff1a;物理层、数据链路层、网络层、传…

手把手教你写IP地址规划方案

中午好&#xff0c;我的网工朋友。 IP地址的合理规划是网络设计的重要环节&#xff0c;大型计算机网络必须对IP地址进行统一规划并得到有效实施。 IP地址规划的好坏&#xff0c;不仅会影响到网络路由协议算法的效率&#xff0c;还会影响到网络的性能&#xff0c;网络的扩展&a…

【Spring集成MyBatis】动态sql

文章目录 1. 什么是动态sql2. 动态sql之<if>3. 动态sql之<where>4. 动态sql之<foreach>5. sql片段抽取 此篇的代码基于 【Spring集成MyBatis】MyBatis的Dao层实现&#xff08;基于配置&#xff0c;非注解开发&#xff09;续写 1. 什么是动态sql MyBatis映射…