Qt推流程序(視頻文件/視頻流/攝像頭/桌面轉成流媒體rtmp+hls+webrtc)可在網頁和播放器遠程觀看

一、前言說明

推流直播就是把採集階段封包好的內容傳輸到服務器的過程。其實就是將現場的視頻信號從手機端,電腦端,攝影機端打包傳到服務器的過程。“推流”對網絡要求比較高,如果網絡不穩定,直播效果就會很差,觀衆觀看直播時就會發生卡頓等現象,觀看體驗比較糟糕。主流推送協議有RTMP、HLS、SRT等。RTMP是目前最主流的流媒體傳輸協議,對CDN支持良好,實現難度較低,是大多數的直播平臺的選擇。使用RTMP傳輸的延時通常在1–3秒,適合手機端。不過RTMP不支持瀏覽器,如果直播服務需要瀏覽器,需要另外的推送協議支持。HLS是Apple公司定義的基於HTTP的流媒體實時傳輸協議。HLS是以點播的技術實現了直播的體驗。因爲每個小文件的時長很短,客戶端可以很快地切換碼率,以適應不同帶寬條件下的播放。但是,HLS的延遲一般會高於普通的流媒體直播協議。RTC是一個支持瀏覽器進行實時語音、視頻對話的開源協議。RTC支持目前的主流瀏覽器,即便在網絡信號一般的情況下也具備較好的穩定性。可以實現點對點通信,通信雙方延時低,是實現“連麥”功能比較好的選擇。

拉流就是轉播其他平臺的視頻。是將服務器已有直播內容,用指定地址進行拉取的過程。用戶端向服務器發送視頻文件的拉流地址的訪問請求,則訪問點播平臺分發直播視頻流,然後接收到分發的視頻數據,從而達到在第三方平臺觀看轉播視頻的效果。推拉流基本上都要用到ffmpeg,用ffmpeg代碼即可實現推流也可以實現拉流播放,唯獨流媒體服務器一般選擇第三方的組件輪子,比如mediamtx、srs、EasyDarwin、LiveQing、ZLMediaKit等,個人偏好用mediamtx,單文件發佈,功能滿足,go編寫天生高併發,開源免費。

二、功能特點

2.1 文件推流

  1. 指定網卡和監聽端口,接收網絡請求推送音視頻等各種文件。
  2. 實時統計顯示每個文件對應的訪問數量、總訪問數量、不同IP地址訪問數量。
  3. 可指定多種模式,0-直接播放、1-下載播放。
  4. 實時打印顯示各種收發請求和應答數據。
  5. 每個文件對應MD5加密的唯一標識符,用於請求地址後綴區分訪問哪個文件。
  6. 支持各種瀏覽器(谷歌chromium/微軟edge/火狐firefox等)、各種播放器(vlc/mpv/ffplay/potplayer/mpchc等)打開請求。
  7. 播放過程中可以任意切換播放進度,支持倍速播放。
  8. 需要推流的文件名稱歷史記錄自動存儲和打開加載應用。
  9. 切換文件獲取訪問地址,自動拷貝地址到剪切板方便直接粘貼測試使用。
  10. 極低CPU佔用,128路1080P同時推流不到1%CPU佔用,異步發送數據機制。
  11. 純QTcpSocket通信,不依賴流媒體服務程序,核心源碼不到500行,註釋詳細,功能完整。
  12. 支持Qt4/Qt5/Qt6任意版本,支持任意系統(windows/linux/macos/android/嵌入式linux等)。

2.2 網絡推流

  1. 支持各種本地視頻文件和網絡視頻文件。
  2. 支持各種網絡視頻流,網絡攝像頭,協議包括rtsp、rtmp、http。
  3. 支持將本地攝像頭設備推流,可指定分辨率和幀率等。
  4. 支持將本地桌面推流,可指定屏幕區域和幀率等。
  5. 自動啓動流媒體服務程序,默認mediamtx(原rtsp-simple-server),可選用srs、EasyDarwin、LiveQing、ZLMediaKit等。
  6. 可實時切換預覽視頻文件。
  7. 推流的清晰度和質量可調。
  8. 可動態添加文件、目錄、地址。
  9. 視頻文件自動循環推流,如果視頻源是視頻流,在掉線後會自動重連。
  10. 網絡視頻流自動重連,重連成功自動繼續推流。
  11. 網絡視頻流實時性極高,延遲極低,延遲時間大概在100ms左右。
  12. 極低CPU佔用,4路主碼流推流只需要佔用0.2%CPU。理論上常規普通PC機器推100路毫無壓力,主要性能瓶頸在網絡。
  13. 推流後除了用rtmp地址訪問以外,還支持直接hls/webrtc訪問,可以直接瀏覽器打開看實時畫面。
  14. 可以推流到外網服務器,然後通過手機、電腦、平板等設備播放對應的視頻流。
  15. 支持Qt4/Qt5/Qt6任意版本,支持任意系統(windows/linux/macos/android/嵌入式linux等)。

三、體驗地址

  1. 體驗地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 名稱:bin_video_push
  2. 國內站點:https://gitee.com/feiyangqingyun
  3. 國際站點:https://github.com/feiyangqingyun
  4. 個人主頁:https://blog.csdn.net/feiyangqingyun
  5. 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/

四、使用步驟

4.1 文件推流

  1. 選擇或者填寫要監聽的網卡IP地址,填寫好監聽端口,建議默認即可。
  2. 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以後會自動羅列在表格中。
  3. 單擊啓動服務按鈕,會變成停止服務字樣表示啓動服務成功。
  4. 從表格中選中一行,會自動將該音視頻文件的播放地址填寫到右下角,同時也會自動拷貝到剪切板。
  5. 將地址粘貼到瀏覽器地址欄回車即可查看播放音視頻,可以任意切換播放進度。
  6. 將地址用vlc或者其他播放器打開即可查看播放音視頻,可以任意切換播放進度。
  7. 文件推流服務支持多個同時請求,表格中會顯示每個文件對應正在請求中的數量,右下角也有統計總請求數量,還有統計不同IP地址的請求總數。
  8. 單擊停止服務按鈕會停止所有服務,由於存在緩存的關係,停止以後緩存中的視頻還可以繼續播放,過一段時間就不能播放。
  9. 在啓動服務後支持動態添加文件、移除文件、清空文件。

4.2 網絡推流

  1. 選擇或者填寫推流的前綴地址,建議默認即可。
  2. 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以後會自動羅列在表格中。
  3. 單擊添加地址,可以從下拉框中選擇或者填寫,下拉選項中是一些格式模板,比如本地攝像頭、本地桌面、電視臺、網絡攝像機等。
  4. 單擊啓動服務按鈕,會變成停止服務字樣表示啓動服務成功。
  5. 在啓動服務後支持動態添加地址、移除地址、清空地址。如果處於啓動服務中,添加後會立即推流。
  6. 從表格中選中一行,會自動將播放地址填寫到右下角,同時也會自動拷貝到剪切板。
  7. 一次推流可以分多種不同的地址訪問,右下角總共有三種地址,第一種是rtmp開頭的視頻流地址,可以用各種播放器打開,第二種是hls(m3u8)格式的地址,一般用於網頁瀏覽器顯示,第三種是webrtc格式的地址,一般用於瀏覽器或者部分支持該格式的播放器。
  8. 將地址粘貼到瀏覽器地址欄回車即可查看視頻流,地址也可以用播放器打開。
  9. 單擊停止服務按鈕會停止所有服務,在啓動服務後支持動態添加文件、移除文件、清空文件。

五、效果圖





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章