一、前言說明
推流直播就是把采集階段封包好的內(nèi)容傳輸?shù)椒?wù)器的過程。其實(shí)就是將現(xiàn)場的視頻信號從手機(jī)端,電腦端,攝影機(jī)端打包傳到服務(wù)器的過程。“推流”對網(wǎng)絡(luò)要求比較高,如果網(wǎng)絡(luò)不穩(wěn)定,直播效果就會很差,觀眾觀看直播時就會發(fā)生卡頓等現(xiàn)象,觀看體驗(yàn)比較糟糕。主流推送協(xié)議有RTMP、HLS、SRT等。RTMP是目前最主流的流媒體傳輸協(xié)議,對CDN支持良好,實(shí)現(xiàn)難度較低,是大多數(shù)的直播平臺的選擇。使用RTMP傳輸?shù)难訒r通常在1–3秒,適合手機(jī)端。不過RTMP不支持瀏覽器,如果直播服務(wù)需要瀏覽器,需要另外的推送協(xié)議支持。HLS是Apple公司定義的基于HTTP的流媒體實(shí)時傳輸協(xié)議。HLS是以點(diǎn)播的技術(shù)實(shí)現(xiàn)了直播的體驗(yàn)。因?yàn)槊總€小文件的時長很短,客戶端可以很快地切換碼率,以適應(yīng)不同帶寬條件下的播放。但是,HLS的延遲一般會高于普通的流媒體直播協(xié)議。RTC是一個支持瀏覽器進(jìn)行實(shí)時語音、視頻對話的開源協(xié)議。RTC支持目前的主流瀏覽器,即便在網(wǎng)絡(luò)信號一般的情況下也具備較好的穩(wěn)定性??梢詫?shí)現(xiàn)點(diǎn)對點(diǎn)通信,通信雙方延時低,是實(shí)現(xiàn)“連麥”功能比較好的選擇。
拉流就是轉(zhuǎn)播其他平臺的視頻。是將服務(wù)器已有直播內(nèi)容,用指定地址進(jìn)行拉取的過程。用戶端向服務(wù)器發(fā)送視頻文件的拉流地址的訪問請求,則訪問點(diǎn)播平臺分發(fā)直播視頻流,然后接收到分發(fā)的視頻數(shù)據(jù),從而達(dá)到在第三方平臺觀看轉(zhuǎn)播視頻的效果。推拉流基本上都要用到ffmpeg,用ffmpeg代碼即可實(shí)現(xiàn)推流也可以實(shí)現(xiàn)拉流播放,唯獨(dú)流媒體服務(wù)器一般選擇第三方的組件輪子,比如mediamtx、srs、EasyDarwin、LiveQing、ZLMediaKit等,個人偏好用mediamtx,單文件發(fā)布,功能滿足,go編寫天生高并發(fā),開源免費(fèi)。文章來源:http://www.zghlxwxcb.cn/news/detail-443429.html
二、功能特點(diǎn)
2.1 文件推流
- 指定網(wǎng)卡和監(jiān)聽端口,接收網(wǎng)絡(luò)請求推送音視頻等各種文件。
- 實(shí)時統(tǒng)計顯示每個文件對應(yīng)的訪問數(shù)量、總訪問數(shù)量、不同IP地址訪問數(shù)量。
- 可指定多種模式,0-直接播放、1-下載播放。
- 實(shí)時打印顯示各種收發(fā)請求和應(yīng)答數(shù)據(jù)。
- 每個文件對應(yīng)MD5加密的唯一標(biāo)識符,用于請求地址后綴區(qū)分訪問哪個文件。
- 支持各種瀏覽器(谷歌chromium/微軟edge/火狐firefox等)、各種播放器(vlc/mpv/ffplay/potplayer/mpchc等)打開請求。
- 播放過程中可以任意切換播放進(jìn)度,支持倍速播放。
- 需要推流的文件名稱歷史記錄自動存儲和打開加載應(yīng)用。
- 切換文件獲取訪問地址,自動拷貝地址到剪切板方便直接粘貼測試使用。
- 極低CPU占用,128路1080P同時推流不到1%CPU占用,異步發(fā)送數(shù)據(jù)機(jī)制。
- 純QTcpSocket通信,不依賴流媒體服務(wù)程序,核心源碼不到500行,注釋詳細(xì),功能完整。
- 支持Qt4/Qt5/Qt6任意版本,支持任意系統(tǒng)(windows/linux/macos/android/嵌入式linux等)。
2.2 網(wǎng)絡(luò)推流
- 支持各種本地視頻文件和網(wǎng)絡(luò)視頻文件。
- 支持各種網(wǎng)絡(luò)視頻流,網(wǎng)絡(luò)攝像頭,協(xié)議包括rtsp、rtmp、http。
- 支持將本地攝像頭設(shè)備推流,可指定分辨率和幀率等。
- 支持將本地桌面推流,可指定屏幕區(qū)域和幀率等。
- 自動啟動流媒體服務(wù)程序,默認(rèn)mediamtx(原rtsp-simple-server),可選用srs、EasyDarwin、LiveQing、ZLMediaKit等。
- 可實(shí)時切換預(yù)覽視頻文件。
- 推流的清晰度和質(zhì)量可調(diào)。
- 可動態(tài)添加文件、目錄、地址。
- 視頻文件自動循環(huán)推流,如果視頻源是視頻流,在掉線后會自動重連。
- 網(wǎng)絡(luò)視頻流自動重連,重連成功自動繼續(xù)推流。
- 網(wǎng)絡(luò)視頻流實(shí)時性極高,延遲極低,延遲時間大概在100ms左右。
- 極低CPU占用,4路主碼流推流只需要占用0.2%CPU。理論上常規(guī)普通PC機(jī)器推100路毫無壓力,主要性能瓶頸在網(wǎng)絡(luò)。
- 推流后除了用rtmp地址訪問以外,還支持直接hls/webrtc訪問,可以直接瀏覽器打開看實(shí)時畫面。
- 可以推流到外網(wǎng)服務(wù)器,然后通過手機(jī)、電腦、平板等設(shè)備播放對應(yīng)的視頻流。
- 支持Qt4/Qt5/Qt6任意版本,支持任意系統(tǒng)(windows/linux/macos/android/嵌入式linux等)。
三、體驗(yàn)地址
- 體驗(yàn)地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 名稱:bin_video_push
- 國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun
- 國際站點(diǎn):https://github.com/feiyangqingyun
- 個人主頁:https://blog.csdn.net/feiyangqingyun
- 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/
四、使用步驟
4.1 文件推流
- 選擇或者填寫要監(jiān)聽的網(wǎng)卡IP地址,填寫好監(jiān)聽端口,建議默認(rèn)即可。
- 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以后會自動羅列在表格中。
- 單擊啟動服務(wù)按鈕,會變成停止服務(wù)字樣表示啟動服務(wù)成功。
- 從表格中選中一行,會自動將該音視頻文件的播放地址填寫到右下角,同時也會自動拷貝到剪切板。
- 將地址粘貼到瀏覽器地址欄回車即可查看播放音視頻,可以任意切換播放進(jìn)度。
- 將地址用vlc或者其他播放器打開即可查看播放音視頻,可以任意切換播放進(jìn)度。
- 文件推流服務(wù)支持多個同時請求,表格中會顯示每個文件對應(yīng)正在請求中的數(shù)量,右下角也有統(tǒng)計總請求數(shù)量,還有統(tǒng)計不同IP地址的請求總數(shù)。
- 單擊停止服務(wù)按鈕會停止所有服務(wù),由于存在緩存的關(guān)系,停止以后緩存中的視頻還可以繼續(xù)播放,過一段時間就不能播放。
- 在啟動服務(wù)后支持動態(tài)添加文件、移除文件、清空文件。
4.2 網(wǎng)絡(luò)推流
- 選擇或者填寫推流的前綴地址,建議默認(rèn)即可。
- 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以后會自動羅列在表格中。
- 單擊添加地址,可以從下拉框中選擇或者填寫,下拉選項中是一些格式模板,比如本地攝像頭、本地桌面、電視臺、網(wǎng)絡(luò)攝像機(jī)等。
- 單擊啟動服務(wù)按鈕,會變成停止服務(wù)字樣表示啟動服務(wù)成功。
- 在啟動服務(wù)后支持動態(tài)添加地址、移除地址、清空地址。如果處于啟動服務(wù)中,添加后會立即推流。
- 從表格中選中一行,會自動將播放地址填寫到右下角,同時也會自動拷貝到剪切板。
- 一次推流可以分多種不同的地址訪問,右下角總共有三種地址,第一種是rtmp開頭的視頻流地址,可以用各種播放器打開,第二種是hls(m3u8)格式的地址,一般用于網(wǎng)頁瀏覽器顯示,第三種是webrtc格式的地址,一般用于瀏覽器或者部分支持該格式的播放器。
- 將地址粘貼到瀏覽器地址欄回車即可查看視頻流,地址也可以用播放器打開。
- 單擊停止服務(wù)按鈕會停止所有服務(wù),在啟動服務(wù)后支持動態(tài)添加文件、移除文件、清空文件。
五、效果圖
文章來源地址http://www.zghlxwxcb.cn/news/detail-443429.html
到了這里,關(guān)于Qt推流程序(視頻文件/視頻流/攝像頭/桌面轉(zhuǎn)成流媒體rtmp+hls+webrtc)可在網(wǎng)頁和播放器遠(yuǎn)程觀看的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!