Qt5 C++系列之音频视频播放

本文介绍了Qt5中QMediaPlayer的使用,包括在pro文件中添加相关设置,详细步骤如引入库、定义.h和.cpp文件,以及QMediaPlayer的属性参数,如播放状态、媒体状态、标志位等。通过QMediaPlaylist可以实现单曲循环和列表循环功能。
部署运行你感兴趣的模型镜像

Qt5 音频视频播放 多功能

Qt之QMediaPlayer


一、添加pro

QT   += core gui\
        multimedia \
        multimediawidgets\

二、使用步骤

1.引入库

//导入库
#include <QMediaPlayer> //库播放器
#include <QMediaPlaylist> //播放器列表
#include <QVBoxLayout> //布局
#include <QVideoWidget> //播放区域

2.文件.h



//播放视频的全局变量
private:
    QMediaPlayer* player;   //播放器
    QVBoxLayout* layout_video;//布局
    QVideoWidget* widget;   //视频播放控件
    QMediaPlaylist* medialist; //播放视频列表
    QString filename0="./media/0.wmv";//播放视频路径
    int f0 = 1000*60;//对应视频的播放时长
    QTimer* timer;//播放视频计时器

提示:使用QMediaPlaylist主要功能是单曲循环,列表循环;如播放视频完成后关闭使用计时器方可

3.文件.cpp

//实例化全局变量
    player1 = new QMediaPlayer;
    medialist = new QMediaPlaylist;
    layout_video = new QVBoxLayout;
    widget = new QVideoWidget;
    //设置视频播放区域与Label的边距
    layout_video->setMargin(0);
    //根据label_player尺寸设置播放区域
    widget->resize(ui->label_player->size());//ui->label_player(QLabel视频播放区域)
    layout_video->addWidget(widget);
    ui->label_player->setLayout(layout_video);
    player->setVideoOutput(widget);
	//播放列表
    medialist->addMedia(QUrl::fromLocalFile(filename0));//列表添加视频或者音频路径,音频格式:.mp3;视频格式:.wmv
    medialist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);//设置单曲循环(只有一个视频情况)
	
	//方法1:
    medialist->setCurrentIndex(1);//设置默认第一个播放,提示:没有0,从1开始
    player->setPlaylist(medialist);//把列表添加到播放器

	//方法2:
    //延时每个视频播放完自动返回主界面
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(changStop()));//changStop计时器结束方法
	player->setMedia(QUrl::fromLocalFile(filename0));//添加路径
	timer->start(f0);//计时器开始
	
	//播放器开始
    player->play();//停止stop();暂停pause();

//延时停止
void MainWindow::changStop(){
    timer->stop();
    player->stop();
}
//播放视频封装方法带入地址和对应时间即可
void MainWindow::bofang(QString str,int ff){
   player->setMedia(QUrl::fromLocalFile(str));
   timer->start(ff);
   //播放器开启
   player->play();
}

4.属性参数

QMediaPlayer类的player播放状态:State

状态枚举名称枚举值说明
StoppedState0播放停止状态
PlayingState1播放状态
PausedState2播放暂停状态

QMediaPlayer类的媒体状态:MediaStatus

状态枚举名称枚举值说明
UnknownMediaStatus0未知状态
Nomedia1无媒体文件,player处于StoppedState
LoadingMedia2媒体文件加载中,player可以处于任何状态
LoadedMedia3媒体文件已加载,player处于StoppedState
StalledMedia4媒体处于延迟或者暂时的中断状态,player处于PlayingState或者PauseState
BufferingMedia5媒体正在缓冲数据,player处于PlayingState或者PausedState
BufferedMedia6媒体缓冲数据完成,player处于PlayingState或者PausedState
EndOfMedia7媒体结束,player处于StoppedState
nvalidMedia8非法的媒体文件,player处于StoppedState

QMediaPlayer类的player播放标志位:Flags

状态枚举名称枚举值说明
LowLatency1播放未压缩的音频数据,播放表现为低延时,需要播放beeps,ringtones等
StreamPlayback2播放基于QIODevic构建的媒体文件,QMediaPlayer或自动选择支持的流行播放
VideoSurface4渲染视频到QAbstractVideoSurface otput

QMediaPlayer类的player错误标志位:Error

状态枚举名称枚举值说明
NoError0无错误
ResourceError1媒体源错误
FormatError2格式错误,播放可能会丢失音频或视频
NetworkError3网络错误
AccessDeniedError4访问权限错误
ServiceMissingError5服务丢失错误

QMediaPlayer类的属性:

属性名称取值类型说明访问函数
audioAvailableconst bool音频是否可用,audioAvailableChanged信号函数用于监控其状态bool isAudioAvailable()
audioRoleQAudio::Role音频流播放roleQAudio::Role audioRole() const , void setAudioRole(QAudio::Role audioRoe)
bufferStatusconst int缓冲数据的百分比,在开始播放或者回复播放之前int bufferStatus() const , void bufferStatusChanged(int percentFilled)
currentMediaconst qMediaContent当前激活的媒体,在使用Playlist时,可能与media属性不同QMediaContent currentMedia() const , void currentMediaChanged(const QMediaContent &media)
durationconst qint64currentMedia的播放时长,单位msqint64 duration() const , void durationChanged(qint64 duration)
mediaQmediaContent激活并被使用的媒体源QMediaContent media() const , void setMedia(const QMediaContent &media, QIODevice *stream=nullptr) , void mediaChanged(const QMediaContent &media)
playbackRateqreal当前媒体的播放速度,默认为1.0qreal playbackRate() const , void setPlaybackRate(qreal rate) , void playbackRateChanged(qreal rate)
playlistQMediaPlaylist *播放列表QMediaPlaylist *playlist() const , void setPlaylist(QMediaPlaylist *playlist)
volumeint音量,取值范围0-100int volume() const , void setVolume(int volume) , void volumeChanged(int volume)

QMediaPlaylist的播放列表属性

名称枚举值枚举值
QMediaPlaylist::CurrentItemOnce0单曲播放
QMediaPlaylist::CurrentItemInLoop1单曲循环
QMediaPlaylist::Sequential2顺序播放
QMediaPlaylist::Loop3列表循环
QMediaPlaylist::Random4随机播放

总结

以上就是今天要讲的内容,本文仅仅简单介绍了QMediaPlayer的使用,而QMediaPlayer提供了大量能使我们快速便捷地处理数据的函数和方法。

本文连接

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九米的网络网络

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值