Qt学习之QMediaPlayer

Qt视频播放器

Qt对音视频的播放和控制、相机拍摄、收音机等多媒体应用提供了强大的支持。Qt5使用了全新的Qt Multimedia模块来实现多媒体应用,Qt4中用来实现多媒体功能的Phonon模块已经被移除。新的Qt Multimedia模块提供了丰富的接口,可以轻松地使用平台的多媒体功能。例如进行媒体播放、使用相机和收音机等。


QMediaPlayer

QMediaPlayer类的定义这里就不贴出来了,主要记录一下关于类如何使用的关键信息
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
InvalidMedia8非法的媒体文件,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音频流播放role

QAudio::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的播放时长,单位ms

qint64 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.0

qreal playbackRate() const

void setPlaybackRate(qreal rate)

void playbackRateChanged(qreal rate)

playlistQMediaPlaylist *播放列表

QMediaPlaylist *playlist() const

void setPlaylist(QMediaPlaylist *playlist)

volumeint音量,取值范围0-100

int volume() const, void setVolume(int volume)

void volumeChanged(int volume)

播放音频步骤

player = new QMediaPlayer;
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
player->setMedia(QUrl::fromLocalFile("/****/test.mp3"));
player->setVolume(50);
player->play();

播放视频步骤

QMediaPlayer播放视频要在界面上显示出来,还需要其他类进行辅助,比如QVideoWidget、QGraphicsVideoItem或者自定义的类。QVideoWidget继承自QWidget,所有它可以作为一个普通窗口部件进行显示,也可以嵌入到其他窗口。将QVideoWidget指定为QMediaPlayer的视频输出窗口后,就可以显示播放的视频画面。

playlist = new QMediaPlaylist;
playlist->addMedia(QUrl("/***/test1.mp4"));
playlist->addMedia(QUrl("/***/test2.mp4"));
playlist->addMedia(QUrl("/***/test3.mp4"));
playlist->addMedia(QUrl("/***/test4.mp4"));
playlist->addMedia(QUrl("/***/test5.mp4"));
playlist->setCurrentIndex(1);

player = new QMediaPlayer;
player->setPlaylist(playlist);

videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);

player->play();

QMediaPlaylist

QMediaPlaylist类,可以为QMediaPlayer提供一个播放列表,它其实是QMediaContent对象的列表,QMediaPlayer通过函数setPlaylist来设置一个播放列表。QMediaPlaylist通过函数addMedia向播放列表添加一个媒体文件。QMediaplaylist类的播放模式:PlaybackMode

状态枚举名称枚举值说明
CurrentItemOnce0当前选中的媒体文件仅播放一次
CurrentItemInLoop1当前选中的媒体文件循环播放
Sequential2从当前选中的媒体文件开始,列表中的文件顺序播放一次直到最后一个文件
Loop3列表中的文件顺序循环播放
Random4列表中的文件随机播放

QMediaPlaylist属性

名称类型说明
currentIndexint当前播放的媒体文件在列表中的索引
currentMediaconst QMediaContent当前选中的媒体文件
playbackModeQMediaPlaylist::PlaybackMode从当前选中的媒体文件开始,列表中的文件顺序播放一次直到最后一个文件

QMediaPlaylist函数

返回值类型函数名称描述说明
booladdMedia(const QMediaContent &content)Public Functions列表添加单个媒体文件
booladdMedia(const Qlist &items)Public Functions,列表添加多个媒体文件
intcurrentIndex() const获得当前播放媒体的索引
QMediaContentcurrentMedia() const

获得当前播放的媒体列表

QMediaPlaylist::Erroeerror() const列表错误状态
QStringerrorString() const播放列表错误字符串信息
boolinsertMedia(int pos, const QMediaContent &content)向播放列表插入一个媒体文件
boolinsertMedia(int pos, const QList &items)向播放列表插入多个媒体文件
boolisEmpty() const清空列表
boolisReadOnly() const清空列表
voidload(const QNetworkRequest &request, const char *format=nullptr)加载网络媒体
voidload(const QRul &location, const char *format=nullptr)加载本地媒体文件
voidload(QIODevice *device, const char *format=nullptr)加载IO设备文件
QMediaContentmeida(int index) const获得指定索引的媒体文件

int

mediaCount() const统计播放列表的文件数量
boolmoveMedia(int from, int to)根据位置参数移动媒体文件
intnextIndex(int steps=1) const当前播放文件的下一个文件索引
PlaybackModeplaybackMode() const获取列表播放模式
intpreviousIndex(int steps=1) const当前播放文件的上一个文件索引
boolremoveMedia(int pos)删除列表中指定位置的文件
boolremoveMedia(int start, int end)删除列表中start到end之间的文件
boolsave(const QUrl &location, const char *format=nullptr)保存列表QUrl指定位置
boolsave(QIODevice *device, const char *format)保存列表到IO设备
voidsetPlaybackMode(QMediaPlaylist::PlaybackMode mode)设置列表播放模式

QMediaPlaylist槽

返回值类型函数名称描述说明
voidnext()下一个文件
voidprevious()上一个文件
voidsetCurrentIndex(int playlistPosition)设置当前播放媒体的所有
voidshuffle()媒体顺序洗牌,重建媒体的索引

QMediaPlaylist信号

返回值类型函数名称描述说明
voidcurrentIndexChanged(int position)当前索引改变信号
voidcurrentMediaChanged(const QMediacontent &content)当前媒体文件改变信号
voidloadFailed()加载失败信号
voidloaded()加载完成信号
voidmediaAboutToBeInserted(int start, int end)媒体即将插入信号
voidmediaAboutToBeRemoved(int start, int end)媒体即将被删除信号
voidmediaChanged(int start, int end)媒体文件改变信号
voidmediaInserted(int start, int end)媒体文件插入信号
voidmediaRemoved(int start, int end)媒体文件删除信号
voidplaybackModeChanged(QMediaPlaylist::PlaybackMode mode)列表播放模式改变信号

QVideoWidget

QvideoWidget是一个用来展示视频的类,需要先定义一个QMediaPlayer对象,然后将QMediaPlayer的VideoOutput设置为QVideoWidget对象即可

QVideoWidget属性

名称类型说明
aspectRatioModeQt::AspectRatioMode屏幕亮度比
brightnessint亮度
contrastint对比度
fullScreenbool是否全屏
hueint色调
mediaObjectQMediaObject *const视频媒体对象
saturationint饱和度

QvideoWidget函数

返回值类型函数名称描述说明
Qt::AspectRatioModeaspectRatioMode() const获取视频画面宽高比
intsaturation() const获取饱和度
intbrightnees() const获取亮度
intcontrast() const获取对比度
inthue() const获取色调
boolisFullScreen() const获取全屏状态

QvideoWidget槽

返回值类型函数名称描述说明
voidsetAspectRatioMode(Qt::AspectRatioMode mode)设置宽高比
voidsetBrightness(int brightness)设置亮度
void

setContrast(int contrast)

设置对比度
voidsetFullScreen(bool fullScreen)设置全屏状态
voidsetHue(int hue)设置色调
voidsetSaturation(int saturation)设置饱和度

QMediaPlayList信号

返回值类型函数名称描述说明
voidbrightnessChanged(int brightness)亮度改变信号
voidcontrastChanged(int contrast)对比度改变信号
voidfullScreenChanged(bool fullScreen)全屏状态改变信号
voidhueChanged(int hue)色调改变信号
voidsaturationChanged(int saturation)饱和度改变信号


 

  • 36
    点赞
  • 181
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值