前言:
這次我們來做一個關于視頻監控的基礎小項目,需要我們用到網絡的相關知識,還會學到好多優秀的網絡協議,下面讓我們開始對物聯網視頻監控進行一個大體框架的介紹吧
目錄
項目內容:
1.視頻監控方案介紹
2.視頻監控的作用
3.使用流媒體
4. 幾種流媒體協議
5.流媒體服務:兩端加一服?
項目內容:
1.視頻監控方案介紹
介紹2種方案,一種可以運行在低性能的板子上,另一種是熱門的流媒體方案MJPG-streamer
方案的實現
1.移植、使用? ? ? ? ? ? ? ? ? 2.框架,代碼
流媒體方案的實現之ffmpeg
1.移植、使用? ? ? ? ? ? ? ? ?2.內部流程? ? ? ????????????????? 3.參數講解
流媒體方案的實現之Nginx
1.移植? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.多場景使用
攝像頭和聲卡接口
1.攝像頭V4L2接口? ? ? ? 2.聲卡ALSA接口
內網穿透
1.原理? ? ? ? ? ? ? ? ? ? ? ? ???2.兩種實現方法
?2.視頻監控的作用
家居
? ? ? ? 1.家庭安防? ? ? ? ? ? ? ?2.照顧老人、小孩? ? ? ? 3.照顧寵物
公司
????????1.倉庫防火防盜????????2.疫情防控(攝像頭配合溫度測試,自動檢測體溫)
農業
? ? ? ? 1.大棚監測? ? ? ? ? ?????2.研究記錄
娛樂
? ? ? ? 1.極限運動記錄? ? ? ? 2.風景拍攝
社會
? ? ? ? 1.交通監測? ? ? ? ? ? ? ? 2.安保
如果只是想在客廳查看房間的情況,不需要什么復雜的協議
?我們需要寫2個程序:
????????在連接攝像頭的ARM板子上,實現一個服務器程序:它一邊讀取攝像頭數據,一邊等待客戶端連接并發送數據
????????在手機或電腦上,編寫客戶端程序,它會從ARM板上獲得數據并顯示出來
????????這2個程序之間,并不需要實現復雜的協議
????????????????????????約定數據格式
????????????????????????傳輸一幀幀的數據
實際上,我們可以使用現成的程序:
????????mjpg-streamer,它運行在ARM板上
????????在手機上使用瀏覽器直接觀看視頻
mjpg-streamer優點:
????????程序簡單,所有源碼一目了然,便于學習
????????對ARM板的性能要求不高,主頻200MHz的ARM芯片也能實現
?mjpg-streamer缺點:
????????只能實現局域網內的視頻監控
????????要實現互聯網視頻監控,需要另外實現內網穿透
????????mjpg-streamer沒有實現聲音傳輸
????????mjpg-streamer項目已經不再維護,僅僅建議用于學習
3.使用流媒體
我們需要寫3個程序:
????????在連接攝像頭的ARM板子上,實現一個推送程序:它一邊讀取攝像頭數據,一邊把數據推送給服務器
????????在服務器上,實現“流媒體服務器”程序:它接收ARM板發來的數據,并把數據轉換格式后發給手機等客戶端
????????在手機等客戶端上,實現拉取程序:它從服務器上拉取數據,并顯示出來
實際上,我們可以把互聯網功能去掉:
????????把“推送程序”、“流媒體服務器”程序,都在ARM板上運行;手機等客戶端只能在同一個局域網里觀看視頻
????????或者也使用內網穿透技術實現互聯網視頻監控
我們并不需要從頭實現這些功能:
????????推送程序:ffmpeg
????????流媒體服務器程序:Nginx
????????客戶端程序:VLC瀏覽器
我們需要了解一些協議:
????????程序一多,大家都遵守一些協議才好協同工作
????????有很多流媒體協議
????????STMP、HTTP-FLV、HLS
?4. 幾種流媒體協議
RTMP:
????????Real Time Messaging Protocol
????????Adobe公司出品,需要Flash player才能觀看
????????延時小,適合直播
HttpFlv:
????????在HTPP上實現RTMP,傳輸的數據跟RTMP一樣都是flv文件
????????B站開源了flv.js,實現了純HTML5觀看直播,不再需要Flash player
????????延時小,適合直播
????????HttpFlv只能做直播,而RTMP可以實現更多操作????????
????????但是HttpFlv通過Http 80端口傳輸,穿透性強
HLS:
????????HTTP Live Streaming
????????Apple出品
????????延時大,適合看視頻,不適合直播
?
5.流媒體服務:兩端加一服?
注意:
????????RTMP可以用在雙端
????????HTTPFLV 、HLS 只能用在拉流端