QT制作音乐播放器的相关知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38313246/article/details/81867713

获取媒体对象播放进度的方法

  • 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中定义的两个重要的枚举类型StateMediaStatus :

  • State包含着当前的播放状态,有 { StoppedState, PlayingState, PausedState }三种状态,可以通过state()函数获取。 
  • MediaStatus包含当前媒体文件的有效性

    有 { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, …, InvalidMedia }等状态,

    可以通过mediaStatus()方法获取。

QMediaPlaylist

QMediaPlaylist是一个列表,

它可以保存媒体文件,包括媒体路径等信息,

它具有着列表的性质,比如添加删除插入等,但它能做的,比单纯的储存要多得多。

设置播放顺序,对播放的控制,保存到本地,从本地读取,都可以很方便地实现。

用QMediaPlaylist  添加媒体文件 可以使用  addMedia  方法。方法接收一个QMediaContent的对象引用

  1. playlist->addMedia(QMediaContent(QUrl("http://example.com/movie1.mp4")));
  2. playlist->addMedia(QMediaContent(QUrl("http://example.com/movie2.mp4")));
  3. playlist->addMedia(QMediaContent(QUrl("http://example.com/movie3.mp4")));

此时新添加的媒体被插入到列表的最后。

同样的也有指定位置的插入方法。除了QMediaContent对象引用,还需要指定插入位置

  1. playlist->insertMedia(2,QMediaContent(QUrl("http://example.com/movie4.mp4")));

方法clear()可以清除所有的媒体对象。 
而希望精确地删除媒体,就要用到  removeMedia  方法。

方法有两个版本,

第一个版本接收一个int变量作为被删除媒体的位置,

另一个版本接收两个int变量,删除这两个索引之间的所有媒体对象。

  1. playlist->removeMedia(3);//删除位置索引为3的媒体对象
  2. playlist->removeMedia(0,2);//删除位置索引为0,1,2的媒体对象;
  3. 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

  1. player.setPlaylist(playlist);
  2. player.play();//播放playlist当前媒体

猜你喜欢

转载自blog.csdn.net/qq_38313246/article/details/81867713