微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。