QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV
轉(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):
缺點(diǎn):
??? 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):
缺點(diǎn):
Stage3:使用Qt-vlc方式
優(yōu)點(diǎn):
缺點(diǎn):
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)題。
- 上一篇: 晋中正规的计算机学校有哪些,2018晋中
- 下一篇: 北京致芯科技STM32F107VC 芯片