Linux基礎項目開發2:物聯網監控——視頻監控方案介紹(一)

前言:

這次我們來做一個關于視頻監控的基礎小項目,需要我們用到網絡的相關知識,還會學到好多優秀的網絡協議,下面讓我們開始對物聯網視頻監控進行一個大體框架的介紹吧

目錄

項目內容:

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板的性能要求不高,主頻200MHzARM芯片也能實現

?mjpg-streamer缺點:

????????只能實現局域網內的視頻監控

????????要實現互聯網視頻監控,需要另外實現內網穿透

????????mjpg-streamer沒有實現聲音傳輸

????????mjpg-streamer項目已經不再維護,僅僅建議用于學習

3.使用流媒體

我們需要寫3個程序:

????????在連接攝像頭的ARM板子上,實現一個推送程序:它一邊讀取攝像頭數據,一邊把數據推送給服務器

????????在服務器上,實現“流媒體服務器”程序:它接收ARM板發來的數據,并把數據轉換格式后發給手機等客戶端

????????在手機等客戶端上,實現拉取程序:它從服務器上拉取數據,并顯示出來

實際上,我們可以把互聯網功能去掉:

????????把“推送程序”、“流媒體服務器”程序,都在ARM板上運行;手機等客戶端只能在同一個局域網里觀看視頻

????????或者也使用內網穿透技術實現互聯網視頻監控

我們并不需要從頭實現這些功能:

????????推送程序:ffmpeg

????????流媒體服務器程序:Nginx

????????客戶端程序:VLC瀏覽器

我們需要了解一些協議:

????????程序一多,大家都遵守一些協議才好協同工作

????????有很多流媒體協議

????????STMP、HTTP-FLVHLS

?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 只能用在拉流端

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215130.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手寫VUE后臺管理系統10 - 封裝Axios實現異常統一處理

目錄 前后端交互約定安裝創建Axios實例攔截器封裝請求方法業務異常處理 axios 是一個易用、簡潔且高效的http庫 axios 中文文檔:http://www.axios-js.com/zh-cn/docs/ 前后端交互約定 在本項目中,前后端交互統一使用 application/json;charsetUTF-8 的請…

云計算 云原生

一、引言 云計算需要終端把信息上傳到服務器,服務器處理后再返回給終端。在之前人手一臺手機的情況下,云計算還是能handle得過來的。但是隨著物聯網的發展,什么東西都要聯網,那數據可就多了去了,服務器處理不過來&…

汽車標定技術(十二)--A2L文件生成的方法

目錄 1.工具生成 1.1 CANape/ASAP2 Studio 1.2 ASAP2ToolKit 1.3 Matlab/Simulink 2.手寫A2L要點 3.小結 A2L文件的制作一直以來是一個很少有人關注的方向,不管是標定工程師還是Slave協議棧的開

MachMap:End-to-End Vectorized Solution for Compact HD-Map Construction

參考代碼:None 動機與出發點 地平線的MapTR展現出了構建高精地圖的能力,但是它的機制確實是有點復雜了。為了兼容不同車道線的朝向,環形車道線的起終點等情況,針對性設計了permute-equal的匹配邏輯,這樣的邏輯真的是太…

軟件測試之壓力測試詳解

一、什么是壓力測試 軟件測試中:壓力測試(Stress Test),也稱為強度測試、負載測試。壓力測試是模擬實際應用的軟硬件環境及用戶使用過程的系統負荷,長時間或超大負荷地運行測試軟件,來測試被測系統的性能、…

leetcode206. 反轉鏈表

題目描述 給你單鏈表的頭節點 head ,請你反轉鏈表,并返回反轉后的鏈表。 示例 1: 輸入:head [1,2,3,4,5] 輸出:[5,4,3,2,1]示例 2: 輸入:head [1,2] 輸出:[2,1]示例 3&#xf…

appium安卓app自動化,遇到搜索框無搜索按鈕元素時無法搜索的解決方案

如XX頭條,搜索框后面有“搜索”按鈕,這樣實現搜索操作較為方便。 但有些app沒有設置該搜索按鈕,初學者就要花點時間去學習怎么實現該功能了,如下圖。 這時候如果定位搜索框,再點擊操作,再輸入文本后&#x…

SpringBootWeb請求響應之前言及狀態碼的詳細解析

SpringBootWeb請求響應 前言 在上一次的課程中,我們開發了springbootweb的入門程序。 基于SpringBoot的方式開發一個web應用,瀏覽器發起請求 /hello 后 ,給瀏覽器返回字符串 “Hello World ~”。 其實呢,是我們在瀏覽器發起請求…

【算法與數據結構】332、LeetCode重新安排行程

文章目錄 一、題目二、解法三、完整代碼 所有的LeetCode題解索引,可以看這篇文章——【算法和數據結構】LeetCode題解。 一、題目 二、解法 思路分析:本題比較屬于困難題目,難點在于完成機票、出發機場和到達機場之間的映射關系,再…

使用yum/dnf管理軟件包

本章主要介紹使用 yum 對軟件包進行管理。 yum 的介紹搭建yum源創建私有倉庫yum客戶端的配置yum的基本使用使用第三方yum源 使用rpm安裝包時經常會遇到一個問題就是包依賴,如下所示。 [rootrhel03 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.modulee…

【三維重建】對極幾何

極幾何描述了同一場景或者物體的兩個視點圖像間的幾何關系 可以發現P在左右相機的投影點一定在各自的極線上,如果求出極線就能縮小求解對應點的范圍。 本質矩陣對規范化攝像機拍攝的兩個視點圖像間的極幾何關系進行代數描述 規范化相機指的是相機的內參…

人工智能_機器學習063_SVR支持向量機_回歸擬合天貓雙十一銷量方程---人工智能工作筆記0103

之前我們用線性回歸做過天貓雙十一銷量預測的數據,現在我們再來用SVR支持向量機來做一下 首先上面是給出了銷量,對應2009年到2019年的,銷售額 可以看到: X=np.arange(2009,2020)-2008 統一減去2008的話看起來數據比較簡單了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

華為OD機試 - 結隊編程(Java JS Python C)

題目描述 某部門計劃通過結隊編程來進行項目開發, 已知該部門有 N 名員工,每個員工有獨一無二的職級,每三個員工形成一個小組進行結隊編程,結隊分組規則如下: 從部門中選出序號分別為 i、j、k 的3名員工,他們的職級分貝為 level[i],level[j],level[k], 結隊小組滿足…

使用perl的Tie::File 模塊刪除文件固定行

使用perl的Tie::File 模塊刪除文件固定行, 為了說明簡單代碼中處理的是固定第二行開始的3行長度。下面給出perl代碼: #! /usr/bin/perl use v5.14; use Tie::File;if (ARGV 0) {say "請輸入一個文件名 !!!";exit 1; }my $filePath $ARGV[0]; tie my ar…

java工程(ajax/axios/postman)向請求頭中添加消息

1、問題概述 在項目中我們經常會遇到需要向請求頭中添加消息的場景,然后后端通過request.getRequest()或者RequestHeader獲取請求頭中的消息。 下面提供幾種前端向請求頭添加消息的方式 2、創建一個springmvc工程用于測試 2.1、創建工程并引入相關包信息 sprin…

C++之STL算法(1)

STL容器算法主要由、、組成; ??algorithm主要有遍歷、比較、交換、查找、拷貝、修改等; 1.遍歷容器for_each for_each()函數用于完成容器遍歷,函數參數如下: for_each(_InIt _First, _InIt _Last, _Fn _Func) 形參&#xff1a…

深度學習 Day10——T10數據增強

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 | 接輔導、項目定制 文章目錄 前言一、我的環境二、代碼實現與執行結果1.引入庫2.設置GPU(如果使用的是CPU可以忽略這步)3.導入數據4.查…

4-Docker命令之docker update

1.docker update介紹 docker update命令是用于更新一個或多個docker容器的配置 2.docker update用法 docker update [參數] container [container......] [root@centos79 ~]# docker update --helpUsage: docker update [OPTIONS] CONTAINER [CONTAINER...]Update configu…

編寫函數計算一個或不特定多個數的乘積

編寫函數計算一個或不特定多個數的乘積 輸入樣例: 3 2 1 輸出樣例: 6.0000 def caculate(*t):r1for x in t:r*xreturn r s input().split() t [float(x) for x in s] print("%.4f" % caculate(*t))

Docker基礎概念解析:鏡像、容器、倉庫

當談到容器化技術時,Docker往往是第一個被提及的工具。Docker的基礎概念涵蓋了鏡像、容器和倉庫,它們是理解和使用Docker的關鍵要素。在這篇文章中,將深入探討這些概念,并提供更豐富的示例代碼,幫助大家更好地理解和應…