日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV

發(fā)布時(shí)間:2024/8/1 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載原文----:https://www.cnblogs.com/QingHuan/p/8830562.html

下面是一張自己做的圖,對(duì)QT可調(diào)用的幾種播放方面的開(kāi)源庫(kù)進(jìn)行對(duì)比

?

Stage1:QT原生播放方式:QT QMediaPlayer

這種方式有兩個(gè)優(yōu)點(diǎn):

  • 無(wú)需額外的庫(kù),直接可以使用且實(shí)現(xiàn)方式簡(jiǎn)單,已經(jīng)有大量的例子
  • CPU占用率低,主要使用GPU
  • 缺點(diǎn):

  • 支持的視頻格式少,跟具體運(yùn)行在哪個(gè)操作系統(tǒng)上有關(guān)。在Windows上需要安裝LAVFilter等解碼器才能支持很多的播放格式
  • 無(wú)法打開(kāi)非HTTP格式開(kāi)頭的直播流鏈接
  • ? 代碼示例?

    ??? QWidget wi;
    ??? QMediaPlayer* player = new QMediaPlayer(0, QMediaPlayer::VideoSurface);
    ??? QVideoWidget* vw = new QVideoWidget;
    ??? QVBoxLayout* lay =? new QVBoxLayout;
    ??? lay->addWidget(vw);
    ??? vw->setMinimumSize(400, 300);
    ??? lay->setSizeConstraint(QLayout::SetMinimumSize);
    ??? wi.setLayout(lay);

    ??? player->setVideoOutput(vw);

    ??? QNetworkRequest req(QUrl("http://pull-g.kktv8.com/livekktv/100987038.flv"));

    ??? QMediaContent c(req);
    ??? player->setMedia(c);
    ??? player->play();

  • Stage2:使用OpenCV進(jìn)行播放

    優(yōu)點(diǎn):

  • 支持的播放格式多
  • 相應(yīng)的示例程序多
  • 缺點(diǎn):

  • 雖然底層調(diào)用的也是ffmpeg的庫(kù),但是OpenCV是將收到的直播流轉(zhuǎn)換成了一張一張的圖片,然后再一張一張的圖片按順序播放出來(lái)的
  • 沒(méi)有使用GPU,只使用了CPU,會(huì)造成CPU占用率極高(實(shí)際測(cè)試中,總能占滿CPU)
  • 代碼編寫(xiě)麻煩
  • Stage3:使用Qt-vlc方式

    優(yōu)點(diǎn):

  • 支持的格式眾多
  • 可以打開(kāi)多種直播流鏈接
  • 缺點(diǎn):

  • 編譯時(shí)比較麻煩
  • Stage4:使用FQFlib方式

    • Github地址:https://github.com/zuozhulin88/FQFLib
    • 項(xiàng)目官網(wǎng):http://fqflib.zuozl.com/

    在VLC沒(méi)配置成后,就搜索"qt rtmp",找到了這個(gè)項(xiàng)目。這是一個(gè)正在成長(zhǎng)中的項(xiàng)目,發(fā)布日期為2018年4月3日,距離現(xiàn)在僅有11天。主要是為了實(shí)現(xiàn)基于FFmpeg的rtsp/rtmp網(wǎng)絡(luò)流媒體播放庫(kù)。

    作者僅給出了相應(yīng)的庫(kù)文件,以及一個(gè)基于QT的可運(yùn)行在Visual Studio中的例子。

    在經(jīng)過(guò)嘗試使用VS運(yùn)行失敗后,還是決定使用最熟悉的QT Creator運(yùn)行,然后仿照在VS平臺(tái)的例子,自己修改出來(lái)了一個(gè)例子,見(jiàn)GITHUB倉(cāng)庫(kù)

    但是這個(gè)例子可以解析HTTP的直播鏈接,如CCTV1的:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8

    對(duì)于RTMP的鏈接,雖然可以加載,但是總是無(wú)法解析,遂放棄FQFlib的方式,繼續(xù)尋找新方式。于是找到了QT-AV。

    ?

    ?

    Stage5: Qt-AV開(kāi)源項(xiàng)目

    • GITHUB地址:https://github.com/wang-bin/QtAV
    • 官方主頁(yè):http://www.qtav.org/

    ?

    官方介紹:

    QtAV is a multimedia playback library based on Qt and FFmpeg. It can help you to write a player with less effort than ever before.

    QtAV has been added to FFmpeg projects page?http://ffmpeg.org/projects.html

    ?

    這個(gè)項(xiàng)目是2012年開(kāi)始的,已經(jīng)被ffmpeg官方收錄了,的確是非常的方便。

    ?

    下面簡(jiǎn)單寫(xiě)一下在Windows系統(tǒng)下的Qt-AV安裝方式和使用方法,官方的文檔在這里:https://github.com/wang-bin/QtAV/wiki/Build-QtAV,詳見(jiàn)Qt視頻框架QtAV構(gòu)建編譯使用 https://blog.csdn.net/dong_zhihong/article/details/102631049

    5. 站在Qt-AV的角度看FQFlib

    Qt-AV其實(shí)已經(jīng)完成了FQFlib所要開(kāi)發(fā)的對(duì)RTMP和RSTP格式直播流播放的支持,而且根據(jù)目前的實(shí)際測(cè)試其并不能播放RTMP(也可能是我自己沒(méi)寫(xiě)好)

    但是在已經(jīng)有輪子的情況下,不太建議FQFlib的作者繼續(xù)重新造輪子

    RTMP測(cè)試源:rtmp://live.hkstv.hk.lxdns.com/live/hks

    RTSP測(cè)試源:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

    ?

    多說(shuō)一點(diǎn):

    HTTP和RTMP是直播流鏈接的格式,而直播流本身也有編碼格式封裝格式。編碼格式如h.264格式(也叫MPEG-4)等;封裝格式則為MP4、WMV、FLV等。具體可以在推流時(shí)使用不同的ffmpeg參數(shù)進(jìn)行設(shè)置。

    H.264的維基百科介紹:

    H.264,又稱(chēng)為MPEG-4第10部分,高級(jí)視頻編碼(英語(yǔ):MPEG-4 Part 10, Advanced Video Coding,縮寫(xiě)為MPEG-4 AVC)是一種面向塊,基于運(yùn)動(dòng)補(bǔ)償?shù)囊曨l編碼標(biāo)準(zhǔn)(英語(yǔ):Video_coding_format) 。

    MP4和MPEG4并不同:參考自:Difference between MPEG4 and MP4

    Key difference:?MPEG-4 is a method of defining compression of audio and visual digital data. MPEG-4 can be used for compression of AV data for web, as used for streaming media, for CD distribution, as well as for voice broadcast television applications. The MP4 is a container format. This means that it can be used to store audio and/or video data.

    ?

    ?

    總結(jié)

    綜合來(lái)說(shuō),Qt-AV給我留下的印象最好,其經(jīng)過(guò)了6個(gè)年頭的發(fā)展,也有了多次的版本迭代,已經(jīng)較為完善。

    如果您想要使用QT開(kāi)發(fā)功能強(qiáng)大,支持播放“格式”眾多且代碼簡(jiǎn)單的播放器,非常推薦使用Qt-AV

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。