影片監控推流助手/極低延遲/支援N路批次多執行緒推流/264和265推流/監控轉網頁

飞扬青云發表於2024-09-12

一、前言說明

搞影片監控開發除了基本的拉流以外,還有個需求是推流,需要將拉到的流重新推流到流媒體伺服器,讓流媒體服務做轉發和負載均衡,這樣其他地方只需要問流媒體伺服器要影片流即可。為什麼拉了又重新推呢,因為軟體這邊和可能拉流後做了處理,比如做了人工智慧運算,識別到了物體方框和文字標識,這些資訊可以加到影片流中,既可以是加到影片流上也可以附帶資料中。還有一種情況是拉到的流本身不支援GB28181,但是外部又需要訪問,流媒體伺服器放在公網上即可,這樣使用者就可以按需拉流播放。

有個工具叫OBS,也可以推流多路,但是預設他都是重新編碼推流,意味著高佔用的CPU,而影片監控的裝置基本上都是標準的264和265,其實這種裸流資料可以直接推,無需重新編碼,其實就是相當於寫檔案,效能瓶頸在網路頻寬而不是電腦配置,本地只需要極低的資源佔用就可以推流幾百路甚至幾千路。所以作為監控行業的從業者,這樣一個工具才是非常實用的。

二、功能特點

  1. 支援各種本地音影片檔案和網路音影片檔案,格式包括mp3、aac、wav、wma、mp4、mkv、rmvb、wmv、mpg、flv、asf等。
  2. 支援各種網路音影片流,網路攝像頭,協議包括rtsp、rtmp、http等。
  3. 支援本地攝像頭裝置推流,可指定解析度、幀率、格式等。
  4. 支援本地桌面採集推流,可指定螢幕索引、採集區域、起始座標、幀率等,也支援指定視窗標題進行採集。
  5. 可實時切換預覽影片檔案,可切換音影片檔案播放進度,切換到哪裡就推流到哪裡。預覽過程中可以切換靜音狀態和暫停推流。
  6. 可指定重新編碼推流,任意源頭格式可選強轉264或265格式。
  7. 可轉換解析度推流,設定等比例縮放或者指定解析度進行轉換。
  8. 推流的清晰度、質量、位元速率都可調,可以節約網路頻寬和拉流端的壓力。
  9. 音影片檔案自動迴圈不間斷推流。
  10. 音影片流有自動掉線重連機制,重連成功自動繼續推流。
  11. 支援各種流媒體服務程式,包括但不限於mediamtx、ZLMediaKit、srs、LiveQing、nginx-rtmp、EasyDarwin、ABLMediaServer。
  12. 透過配置檔案自動載入對應流媒體程式的協議和埠,自動生成推流地址和各種協議的拉流地址。可以透過配置檔案自己增加流媒體程式。
  13. 可選rtmp、rtmp格式推流,推流成功後,支援多種格式拉流,包括但不限於rtsp、rtmp、hls、flv、ws-flv、webrtc等。
  14. 在軟體上推流成功後,可以直接單擊網頁預覽,實時預覽推流後拉流的畫面,多畫面網頁展示。
  15. 軟體介面上可單擊對應按鈕,動態新增檔案和目錄,可手動輸入地址。
  16. 推拉流實時性極高,延遲極低,延遲時間大概在100ms左右。
  17. 極低CPU資源佔用,4路主碼流推流只需要佔用0.2%CPU。理論上常規普通PC機器推100路毫無壓力,主要效能瓶頸在網路。
  18. 可以推流到外網伺服器,然後透過手機、電腦、平板等裝置播放對應的影片流。
  19. 每路推流都可以手動指定唯一識別符號(方便拉流/使用者無需記憶複雜的地址),沒有指定則按照策略隨機生成hash值。也支援自動按照指定標識後面加數字的方式遞增命名。比如設定標識為字母v,策略為標識遞增,則每新增一個對應的推流碼命名依次是v1、v2、v3等。
  20. 根據推流協議自動轉碼格式,預設策略按照選擇的推流協議,比如rtsp支援265而rtmp不支援,如果是265的檔案而選擇rtmp推流,則自動轉碼成264格式再推流。
  21. 音影片同步推流,在拉流和採集的時候就會自動處理好同步,同步後的資料再推流。
  22. 表格中實時顯示每一路推流的解析度和音影片資料狀態,灰色表示沒有輸入流,黑色表示沒有輸出流,綠色表示原資料推流,紅色表示轉碼後的資料推流。
  23. 自動重連影片源,自動重連流媒體伺服器,保證啟動後,推流地址和開啟地址都實時重連,只要恢復後立即連上繼續採集和推流。
  24. 根據不同的流媒體伺服器型別,自動生成對應的rtsp、rtmp、hls、flv、ws-flv、webrtc拉流地址,使用者可以直接複製該地址到播放器或者網頁中預覽檢視。
  25. 新增的推流地址等資訊自動儲存到檔案,可以手動開啟進行修改,預設啟動後自動載入歷史記錄。
  26. 可以指定生成的網頁檔案儲存位置,方便作為網站網頁釋出,可以直接在瀏覽器中輸入網址進行訪問,釋出後可以直接在區域網其他裝置比如手機或者電腦開啟對應網址訪問。
  27. 可選是否開機啟動、後臺執行等。網路推流新增的rtsp地址可勾選是否隱藏地址中的使用者資訊。
  28. 自帶裝置推流模組,自動識別本地裝置,包括本地的攝像頭和桌面,可以手動選擇不同的是影片和音訊採集裝置進行推流。
  29. 自帶檔案點播模組,新增檔案後使用者可以拉取地址點播,使用者端可以任意切換播放進度。支援各種瀏覽器(谷歌chromium、微軟edge、火狐firefox等)、各種播放器(vlc、mpv、ffplay、potplayer、mpchc等)開啟請求。
  30. 檔案點播模組實時統計顯示每個檔案對應的訪問數量、總訪問數量、不同IP地址訪問數量。
  31. 檔案點播模組採用純QTcpSocket通訊,不依賴流媒體服務程式,核心原始碼不到500行,註釋詳細,功能完整。
  32. 支援任意Qt版本(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

四、效果圖

相關文章