QMediaPlayer:如何在m3u8播放列表中选择m3u8播放列表?

问题描述

假设我有这个短代码

#include <QApplication>
#include <QtMultimediawidgets/QVideoWidget>
#include <QtMultimedia/QMediaPlayer>
#include <QHBoxLayout>

const QString sPlaylistURL="https://somewhere.com/live-ipcam/blahblahblah/playlist.m3u8";

int main(int argc,char *argv[]) {
    QApplication a(argc,argv);
    QWidget      wgtMain;
    QHBoxLayout  layMain;
    QMediaPlayer mpPlayer;
    QVideoWidget vwWidget;
    wgtMain.resize(640,480);
    layMain.addWidget(&vwWidget);
    wgtMain.setLayout(&layMain);
    mpPlayer.setVideoOutput(&vwWidget);
    mpPlayer.setMedia(QUrl(sPlaylistURL));
    mpPlayer.play();
    wgtMain.show();
    return a.exec();
}

它没有问题,但是在该播放列表中,还有其他播放列表。每个人都是不同的品质。例如:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-STREAM-INF:BANDWIDTH=488000,NAME="FPS:30.0",CODECS="avc1,mp4a",RESOLUTION=320x240
captures_b448000_fM7Ser2Plnn65Xd1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1258000,RESOLUTION=640x480
captures_b1148000_fM7Ser2Plnn65Xd1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3396000,RESOLUTION=960x720
captures_b3096000_fM7Ser2Plnn65Xd1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5628000,RESOLUTION=1440x1080
captures_b5128000_fM7Ser2Plnn65Xd1.m3u8

因此,如果我想查看640x480流,应该改

const QString sPlaylistURL="https://somewhere.com/live-ipcam/blahblahblah/captures_b1148000_fM7Ser2Plnn65Xd1.m3u8";

是否可以从原始播放列表中选择给定的播放列表,而不必自己下载和解析播放列表?

当前,播放器会自动选择质量最高的视频流,但我想让用户自行决定。

感谢您的想法!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)