获取媒体对象播放进度的方法:
- QMediaPlayer::position()。
该方法返回一个qint64(64位整数,可以近似理解为int)类型。
设置进度的方法是:
- QMediaPlayer::setPosition(qint64 position)。
设置当前播放媒体的方法:
- QMediaPlayer::setMedia(QMediaContent &media,QIODevice *stream = QNULLPTR)。
第二个参数默认即可。
第一个参数是一个QMediaContent对象,封装了媒体文件信息。
这个对象可以通过QMediaContent(QUrl url)来创建。QUrl可以是一个本地的文件,也可以是网络上的文件。
切换播放状态的的方法:
- QMediaPlayer::play()
- QMediaPlayer::pause
- QMediaPlayer::stop()
QMediaPlayer中定义的两个重要的枚举类型State和MediaStatus :
- State包含着当前的播放状态,有 { StoppedState, PlayingState, PausedState }三种状态,可以通过state()函数获取。
- MediaStatus包含当前媒体文件的有效性
有 { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, …, InvalidMedia }等状态,
可以通过mediaStatus()方法获取。
QMediaPlaylist
QMediaPlaylist是一个列表,
它可以保存媒体文件,包括媒体路径等信息,
它具有着列表的性质,比如添加删除插入等,但它能做的,比单纯的储存要多得多。
设置播放顺序,对播放的控制,保存到本地,从本地读取,都可以很方便地实现。
用QMediaPlaylist 添加媒体文件 可以使用 addMedia 方法。方法接收一个QMediaContent的对象引用
- playlist->addMedia(QMediaContent(QUrl("http://example.com/movie1.mp4")));
- playlist->addMedia(QMediaContent(QUrl("http://example.com/movie2.mp4")));
- playlist->addMedia(QMediaContent(QUrl("http://example.com/movie3.mp4")));
此时新添加的媒体被插入到列表的最后。
同样的也有指定位置的插入方法。除了QMediaContent对象引用,还需要指定插入位置。
- playlist->insertMedia(2,QMediaContent(QUrl("http://example.com/movie4.mp4")));
方法clear()可以清除所有的媒体对象。
而希望精确地删除媒体,就要用到 removeMedia 方法。
方法有两个版本,
第一个版本接收一个int变量作为被删除媒体的位置,
另一个版本接收两个int变量,删除这两个索引之间的所有媒体对象。
- playlist->removeMedia(3);//删除位置索引为3的媒体对象
- playlist->removeMedia(0,2);//删除位置索引为0,1,2的媒体对象;
- playlist->clear();//清空列表
Playlist的高级操作。
我们知道,现在的播放器一般都有选择播放顺序的功能,
除了最基本的顺序播放,还有单曲循环、随机播放等模式。
现在只需要调用 setPlaybackMode(PlaybackMode mode) 这个方法,就可以设置播放顺序。
方法接收枚举类型PlaybackMode作为播放顺序。
名称 | 枚举值 | 说明 |
---|---|---|
QMediaPlaylist::CurrentItemOnce |
0 |
单曲播放 |
QMediaPlaylist::CurrentItemInLoop |
1 |
单曲循环 |
QMediaPlaylist::Sequential |
2 |
顺序播放 |
QMediaPlaylist::Loop |
3 |
列表循环 |
QMediaPlaylist::Random |
4 |
随机播放 |
调用 next() 和 previous() 方法,可以实现按照播放模式进行当前播放的手动切换。
当一个媒体播放完毕时,会自动地调用next()方法。
将一个QMediaPlaylist设置进QMediaPlayer
- player.setPlaylist(playlist);
- player.play();//播放playlist当前媒体