關於攝像頭推流拉流的一些內容


關於攝像頭推流拉流的一些內容

近期在做用Django顯示攝像頭實時畫面的需求,本文就大致聊一聊最近搜集到的相關資料。

基本上原理就是有一個中轉服務器(比如Nginx),FFMPEGD推流,html拉流。那Django干啥?控制頁面拉流。或者說python干啥?拉流。

還有一些是用opencv做推流的,但那些基本是在做視覺處理的或者畫面處理的時候才用的,跟我的情況不符,我的情況是:延遲做到最低、最低...

我的環境:海康威視攝像頭,Django后端做

一些關鍵內容:RTMP 、RTSP、hls 、FFMPEG 、nginx-rtmp服務器

目前總結了4種實現方案供參考

實現方案之:NGINX + FFMEPG

  • 優點:

    ​ 方案多,網上教程一大堆

  • 缺點:

    ​ 延遲較高

  • 延遲情況:

    ​ 5、6秒。延遲優化原理參考下方鏈接

  • 基本原理:

    ​ FFMEPG把RTSP格式的視頻流推到NGINX,NGINX再進行流的處理、轉換。nginx做RTMP服務端

​ 參考鏈接:視頻流多分辨率的處理https://www.jibing57.com/2020/08/01/advanced-configure-of-nginx-rtmp/

實現方案之:NGINX + FFMEPG + opencv

  • 優點:

    ​ 能對畫面做一些處理

    ​ 單用opencv處理時延遲基本在1、2秒內

  • 缺點:

    ​ 用管道傳輸流,不容易實現。

  • 延遲情況:

    ​ 因報錯問題,無結果

  • 基本原理:

    ​ opencv讀取攝像頭,處理后用FFMPEG推流到Nginx服務器。django的html拉流。nginx做RTMP服務端

  • 參考鏈接:

    ​ CSDN一大堆

實現方案之:opencv +Django

  • 優點:

    ​ 實現過程簡單

  • 缺點:

    ​ 無法關閉

  • 延遲情況:

    ​ 在1,2秒內

  • 基本原理:

    ​ opencv獲取每一幀,然后通過流的HTTP流的方式傳到前端。

  • 參考鏈接:

    https://www.coder.work/article/2084211

實現方案之:jsmpeg + FFMEPG + http中繼

  • 優點:

    ​ 不需要RTMP服務器(Nginx),解析靠js插件,RTSP流還是通過FFMEPG推,推到websocket頻道

  • 缺點:

    ​ Django貌似無法做中繼,暫時只能用ginrtsp做中繼。可以嘗試用opencv在django內部推到ws頻道

  • 延遲情況:

    ​ 1,2秒

  • 基本原理:

    ​ 不做RTSP轉RTMP,通過ws將流發布,前端通過jsmpeg解析。

  • 參考鏈接:

    ​ JSMPEG:https://github.com/phoboslab/jsmpeg

    ​ http中繼:https://github.com/wanghaoxi3000/gin-rtsp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM