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
| 状态枚举名称 | 枚举值 | 说明 |
|---|---|---|
| StoppedState | 0 | 播放停止状态 |
| PlayingState | 1 | 播放状态 |
| PausedState | 2 | 播放暂停状态 |
QMediaPlayer类的媒体状态:MediaStatus
| 状态枚举名称 | 枚举值 | 说明 |
|---|---|---|
| UnknownMediaStatus | 0 | 未知状态 |
| Nomedia | 1 | 无媒体文件,player处于StoppedState |
| LoadingMedia | 2 | 媒体文件加载中,player可以处于任何状态 |
| LoadedMedia | 3 | 媒体文件已加载,player处于StoppedState |
| StalledMedia | 4 | 媒体处于延迟或者暂时的中断状态,player处于PlayingState或者PauseState |
| BufferingMedia | 5 | 媒体正在缓冲数据,player处于PlayingState或者PausedState |
| BufferedMedia | 6 | 媒体缓冲数据完成,player处于PlayingState或者PausedState |
| EndOfMedia | 7 | 媒体结束,player处于StoppedState |
| nvalidMedia | 8 | 非法的媒体文件,player处于StoppedState |
QMediaPlayer类的player播放标志位:Flags
| 状态枚举名称 | 枚举值 | 说明 |
|---|---|---|
| LowLatency | 1 | 播放未压缩的音频数据,播放表现为低延时,需要播放beeps,ringtones等 |
| StreamPlayback | 2 | 播放基于QIODevic构建的媒体文件,QMediaPlayer或自动选择支持的流行播放 |
| VideoSurface | 4 | 渲染视频到QAbstractVideoSurface otput |
QMediaPlayer类的player错误标志位:Error
| 状态枚举名称 | 枚举值 | 说明 |
|---|---|---|
| NoError | 0 | 无错误 |
| ResourceError | 1 | 媒体源错误 |
| FormatError | 2 | 格式错误,播放可能会丢失音频或视频 |
| NetworkError | 3 | 网络错误 |
| AccessDeniedError | 4 | 访问权限错误 |
| ServiceMissingError | 5 | 服务丢失错误 |
QMediaPlayer类的属性:
| 属性名称 | 取值类型 | 说明 | 访问函数 |
|---|---|---|---|
| audioAvailable | const bool | 音频是否可用,audioAvailableChanged信号函数用于监控其状态 | bool isAudioAvailable() |
| audioRole | QAudio::Role | 音频流播放role | QAudio::Role audioRole() const , void setAudioRole(QAudio::Role audioRoe) |
| bufferStatus | const int | 缓冲数据的百分比,在开始播放或者回复播放之前 | int bufferStatus() const , void bufferStatusChanged(int percentFilled) |
| currentMedia | const qMediaContent | 当前激活的媒体,在使用Playlist时,可能与media属性不同 | QMediaContent currentMedia() const , void currentMediaChanged(const QMediaContent &media) |
| duration | const qint64 | currentMedia的播放时长,单位ms | qint64 duration() const , void durationChanged(qint64 duration) |
| media | QmediaContent | 激活并被使用的媒体源 | QMediaContent media() const , void setMedia(const QMediaContent &media, QIODevice *stream=nullptr) , void mediaChanged(const QMediaContent &media) |
| playbackRate | qreal | 当前媒体的播放速度,默认为1.0 | qreal playbackRate() const , void setPlaybackRate(qreal rate) , void playbackRateChanged(qreal rate) |
| playlist | QMediaPlaylist * | 播放列表 | QMediaPlaylist *playlist() const , void setPlaylist(QMediaPlaylist *playlist) |
| volume | int | 音量,取值范围0-100 | int volume() const , void setVolume(int volume) , void volumeChanged(int volume) |
QMediaPlaylist的播放列表属性
| 名称 | 枚举值 | 枚举值 |
|---|---|---|
| QMediaPlaylist::CurrentItemOnce | 0 | 单曲播放 |
| QMediaPlaylist::CurrentItemInLoop | 1 | 单曲循环 |
| QMediaPlaylist::Sequential | 2 | 顺序播放 |
| QMediaPlaylist::Loop | 3 | 列表循环 |
| QMediaPlaylist::Random | 4 | 随机播放 |
总结
以上就是今天要讲的内容,本文仅仅简单介绍了QMediaPlayer的使用,而QMediaPlayer提供了大量能使我们快速便捷地处理数据的函数和方法。

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

被折叠的 条评论
为什么被折叠?



