QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV
轉載原文----:https://www.cnblogs.com/QingHuan/p/8830562.html
下面是一張自己做的圖,對QT可調用的幾種播放方面的開源庫進行對比
?
Stage1:QT原生播放方式:QT QMediaPlayer
這種方式有兩個優點:
缺點:
??? 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進行播放
優點:
缺點:
Stage3:使用Qt-vlc方式
優點:
缺點:
Stage4:使用FQFlib方式
- Github地址:https://github.com/zuozhulin88/FQFLib
- 項目官網:http://fqflib.zuozl.com/
在VLC沒配置成后,就搜索"qt rtmp",找到了這個項目。這是一個正在成長中的項目,發布日期為2018年4月3日,距離現在僅有11天。主要是為了實現基于FFmpeg的rtsp/rtmp網絡流媒體播放庫。
作者僅給出了相應的庫文件,以及一個基于QT的可運行在Visual Studio中的例子。
在經過嘗試使用VS運行失敗后,還是決定使用最熟悉的QT Creator運行,然后仿照在VS平臺的例子,自己修改出來了一個例子,見GITHUB倉庫
但是這個例子可以解析HTTP的直播鏈接,如CCTV1的:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
對于RTMP的鏈接,雖然可以加載,但是總是無法解析,遂放棄FQFlib的方式,繼續尋找新方式。于是找到了QT-AV。
?
?
Stage5: Qt-AV開源項目
- GITHUB地址:https://github.com/wang-bin/QtAV
- 官方主頁: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
?
這個項目是2012年開始的,已經被ffmpeg官方收錄了,的確是非常的方便。
?
下面簡單寫一下在Windows系統下的Qt-AV安裝方式和使用方法,官方的文檔在這里:https://github.com/wang-bin/QtAV/wiki/Build-QtAV,詳見Qt視頻框架QtAV構建編譯使用 https://blog.csdn.net/dong_zhihong/article/details/102631049
5. 站在Qt-AV的角度看FQFlib
Qt-AV其實已經完成了FQFlib所要開發的對RTMP和RSTP格式直播流播放的支持,而且根據目前的實際測試其并不能播放RTMP(也可能是我自己沒寫好)
但是在已經有輪子的情況下,不太建議FQFlib的作者繼續重新造輪子
RTMP測試源:rtmp://live.hkstv.hk.lxdns.com/live/hks
RTSP測試源:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
?
多說一點:
HTTP和RTMP是直播流鏈接的格式,而直播流本身也有編碼格式和封裝格式。編碼格式如h.264格式(也叫MPEG-4)等;封裝格式則為MP4、WMV、FLV等。具體可以在推流時使用不同的ffmpeg參數進行設置。
H.264的維基百科介紹:
H.264,又稱為MPEG-4第10部分,高級視頻編碼(英語:MPEG-4 Part 10, Advanced Video Coding,縮寫為MPEG-4 AVC)是一種面向塊,基于運動補償的視頻編碼標準(英語: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.
?
?
總結
綜合來說,Qt-AV給我留下的印象最好,其經過了6個年頭的發展,也有了多次的版本迭代,已經較為完善。
如果您想要使用QT開發功能強大,支持播放“格式”眾多且代碼簡單的播放器,非常推薦使用Qt-AV
?
?
總結
以上是生活随笔為你收集整理的QT | 聊聊QT与直播流播放——从QMediaPlayer到Qt-AV的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 晋中正规的计算机学校有哪些,2018晋中
- 下一篇: 秒杀项目(1)项目环境搭建