日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 智能硬件 > 智能硬件
[導讀] RTSP:即時串流協定(Real Time Streaming Protocol,RTSP)是用來控制聲音或影像的多媒體串流協議,并允許同時多個串流需求控制,傳輸時所用的網絡通訊協定并不在其定義的范圍內,服務器端可以自行選擇使用TCP或UDP

 RTSP:即時串流協定(Real Time Streaming Protocol,RTSP)是用來控制聲音或影像的多媒體串流協議,并允許同時多個串流需求控制,傳輸時所用的網絡通訊協定并不在其定義的范圍內,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,它的語法和運作跟HTTP 1.1類似,但并不特別強調時間同步,所以比較能容忍網絡延遲。而前面提到的允許同時多個串流需求控制(Multicast),除了可以降低服務器端的網絡用量,更進而支持多方視頻會議(Video Conference)。

基于以太網的嵌入式視頻監(jiān)控得到越來越廣泛的應用,如通過3G網絡傳給服務器,將移動機器人所采集到的視頻數據通過3G網絡傳給服務器。流媒體技術也在不斷的普及,將目前流行的流媒體傳輸技術應用到視頻監(jiān)控系統中是比較好的選擇,既不會占用太多的網絡帶寬,也可以實現較為流暢視頻監(jiān)控。本文基于H264編碼技術和對Live555二次開發(fā),設計了一種可對柑橘生長進行視頻實時采集,編碼,傳輸的嵌入式流媒體視頻監(jiān)控系統。

1 網絡監(jiān)控視頻技術簡介

RTSP(Real Time Streaming Protocol),即實時流傳輸協議,屬于TCP/IP協議體系顧名思義,它是一個用于流媒體傳輸控制的協議,能夠控制流媒體在傳輸過程中的暫停與繼續(xù),從而方便用戶實現播放器的一些基本播放功能。它也以C/S方式(客戶端服務器)工作,由于結合了很多技術上的優(yōu)點,目前在因特網視頻應用中廣泛流行。

 

 

圖1 RTSP與RTP、RTCP關系

RTSP協議與RTP(Real Time Protocol)協議、RTCP(Real Time Control Protocol)的關系如圖1所示,通常而言,RTSP只用來傳輸控制信息,這些控制信息使得媒體播放器能控制流媒體的傳輸,而流媒體的傳輸則由RTP負責,所以RTSP協議必須與RTP/RTCP協議一起配合使用。

1.2 H.264技術

H.264技術是目前在視頻編碼壓縮中采用的最為普遍的一種技術。由于H.264具有更低的碼率,在同等圖像質量的前提下,它可以達到更高的壓縮率,與前代MPEG-2相比,壓縮比通常是它的2倍以上;H.264在算法方面更加復雜,所以它相比上代壓縮技術也能夠提供高質量的圖像。而且它的容錯能力也很強,網絡適應能力非常好。在本設計中,對于動態(tài)變化不是很明顯的視頻,H.264顯示出了非常強大的壓縮能力,使得網絡帶寬大大減少。本設計只采用了H.264的編碼部分,應用目前最為流行的符合H.264規(guī)范的x264工程作為編碼器。

1.3 Live555開源工程

Live555是一個開源項目,使用C++語言編譯,為RTSP、RTP/RTCP、SIP等標準流媒體傳輸協議提供解決方案,支持目前主流的ts、mpg、mkv、h264格式的視頻,被大多數流媒體服務器應用為開發(fā)平臺,VLC、ffplay等多款播放器能夠點播使用Live555作為流媒體服務器的視頻數據。Live555有四個基本的庫,即BasicUsageEnvironment、UsageEnvironment、GroupSock和LiveMedia。前面三個庫在本設計中均不需要改動,需要改動的是LiveMedia模塊,它是Live555最重要的模塊。這個模塊的主要作用是聲明一個Medium類,在Live555工程中,很多其他類都是它的派生類。

1.4 YUV圖像數據分析

常用的YUV元素圖像格式有YUV422格式和YUV420格式。YUV422格式中,按照U、V在時空上的排列順序不同,可以將他們分為YUYV,YVYU,UYVY,VYUY四種不同的排列方式,目前大部分USB攝像頭輸出的原始圖像都是按照YUYV格式來排列的;按Y和UV的排列方式不同又可以分為打包格式和平面格式,打包格式通常以英文字母planner表示,而平面格式則會用interlaced表示,打包格式較為常見,它的Y分量和UV分量在內存中是連續(xù)放置的,如圖2右側的示意圖所示,而平面格式Y和UV分量則是分開放置的,如圖2左側示意圖所示。

 

 

圖2 YUV排列格式示意圖

YUV420在排列上和YUV422規(guī)律相同,但是Y:U:V是4:1:1的。一般情況下,利用V4L2采集USB攝像頭的視頻數據是YUYV交錯排列的打包YUV422格式的,但是H264編碼庫要求輸入的視頻格式是YUV420P,也即4:1:1的平面格式,所以要經過轉換。本設計采用成熟的libswscale庫來轉換原始圖像數據。

2 流媒體服務器的實現

2.1 系統整體結構

本設計參考目前流行的視頻監(jiān)控系統,基于Linux的平臺,利用V4L2(Video for Linux Two)函數接口,采集USB攝像頭傳過來的數據,因目前一般的USB攝像頭只支持YUYV排列的YUV422格式的數據采集,因此需要將采集到的數據格式轉換為YUV420P之后,再利用x264對每一幀YUV數據進行編碼,最后對Live555開源工程進行二次開發(fā),構建流媒體服務器。本設計系統總框圖如圖3所示。

 

 

圖3 系統架構圖

在本設計中,系統平臺為Linux,USB攝像頭的型號為環(huán)宇飛揚v8,只支持輸出YUYV排列的YUV422格式的圖像數據,x264目前只支持YUV420P的圖像數據輸入,因此為了保證穩(wěn)定可靠,采用FFmpeg工程中的libswscale對其進行數據格式轉換,最后利用構建好的RTSP服務器對編碼的數據進行實時發(fā)送傳輸。

2.2 構建流媒體服務器

對于不同的流媒體源,其數據排列格式不同,因而獲取SDP的方法不同。在構建新的流媒體源的基礎上,需要對SDP獲取部分代碼進行二次開發(fā)。因此,本設計的工作分為下面兩部分。

2.2.1 SDP獲取代碼二次開發(fā)

當RTSPServer收到對某個媒體的DESCRIBE請求時,它會找到對應的ServerMediaSession,調用ServerMediaSession::generateSDPDescription()。generateSDPDescription()中會遍歷調用ServerMediaSession中所有的調用ServerMediaSubsession,通過subsession->sdpLines()取得每個Subsession的sdp,合并成一個完整的SDP返回之。對于不同流媒體格式獲取SDP信息的方式不同,因此,本設計基于OnDemandServerMediaSubsession類構建新的會話類WebcamOndemandMediaSubsession。

 

 

圖4 獲取SDP函數調用關系圖

獲取SDP信息的函數調用關系如圖4所示,sdpLines()函數在OnDemandServerMediaSubsession類中已經實現,為了順利的獲取SDP信息,我們需要對sdpLines()運行時調用的幾個函數作一定的修改,因此,需要對OnDemandServerMediaSubsession類中的幾個虛函數進行重載,具體做法如下:

A、對于createNewStreamSource函數,因為本設計處理的是H264格式的源,函數中應當加入H264VideoStreamFramer::createNew()語句。

B、對于createNewRTPSink函數,同理,函數中應當加入H264VideoRTPSink::createNew()語句。

C、setSDPLinesFromRTPSink取得Subsession的sdp并保存到fSDPLines,這個函數重點是調用getAuxSDPLine,因此需要重構getAuxSDPLine函數。getAuxSDPLine函數所調用的chkForAuxSDPLine也需要重載。對于H.264文件,是不能從rtpSink中取得PPS/SPS的,所以必須調用startPlaying函數對視頻流播放一下才行,播放之后又會關閉,這點在建立連接的時候可以用打印函數調用流程以便了解的更加清楚。在下面的偽代碼中,可以看到之后又調用了chkForAuxSDPLine這個函數,這是為了保證在函數退出前能正確取得AuxSDP,所以在chkForAuxSDPLine函數中需要循環(huán)檢查是否取得AuxSDP。偽代碼如下所示。

rtpsink = sink;

rtpsink->startPlaying(*source, 0, 0);// 開始播放

chkForAuxSDPLine(this); // 循環(huán)檢查

sdp_line = strdup(rtpsink->auxSDPLine());//保存

mp_dummy_rtpsink->stopPlaying(); // 停止播放

return mp_sdp_line; // 返回值

2.2.2 構建WebcamFrameSource類

WebcamFrameSource屬于一個source類,也就是一個能夠提供視頻源的類。流媒體開發(fā)大都具有相似的特征,Live555中也繼承了source和sink的精神,簡而言之,Source就是產生數據的對象,而Sink節(jié)點是數據最終流向的對象,Sink的數據必須通過source讀取。Live555工程中雖然已經實現好眾多的source,但是并沒有能夠實現直播攝像頭過來的數據的功能,因此,二次開發(fā)的主要任務之一便是構建新的source,該source應該具有將H264的打包數據存放在內存中,并且能夠傳送給H264VideoRTPSink。本設計中,基于FramedSource構建WebcamFrameSource類。

對于WebcamFrameSource類,主要開發(fā)工作是在其構造函數中配置好V4L2采集攝像頭數據,x264編碼優(yōu)化設置,作為一個source類,每次從該source中取數據時,都會調用doGetNextFrame函數,該函數作為FramedSource類中的一個虛函數,可以在新構造的WebcamFrameSource類中進行重載。對V4L2設備的初始化流程如圖5所示。

 

 

圖5 V4L2初始化設置

X264視頻編碼初始配置偽代碼如下所示。

ctx->force_keyframe = 0; // 不使用強制關鍵幀

x264_param_default_preset(&ctx->param, "fast", "zerolatency"); //預設為零延遲

ctx->param.b_repeat_headers = 1;

ctx->param.b_cabac = 1; //支持cabac

ctx->param.i_threads = 1; //緩沖區(qū)數據被取完后任使用不會出現死鎖

ctx->param.i_fps_num = 30; // 幀率為30

ctx->param.rc.i_bitrate = 150; // 默認碼率

ctx->x264 = x264_encoder_open(&ctx->param); // 使用設置好的參數打開編碼

x264_picture_init(&ctx->picture); // 輸出圖像初始化

另外,也需要對libswscale的使用做一定的初始化,在本設計中,libswscale主要用來轉換V4L2輸出的yuv422格式數據為YUV420,其中主要是配置圖像高度,寬度,輸入輸出格式,涉及到的函數主要是sws_getContext和avpicture_alloc,在此不再做詳細敘述。

在從WebcamFrameSource這個流媒體源中取數據時,都會調用doGetNextFrame這個函數,此函數是FramedSource類中定義的虛函數,因此需要在構建WebcamFrameSource類時進行重載。從流媒體服務器發(fā)出一幀數據的流程如圖6所示。

 

 

圖6 數據傳輸流程圖

按照流程圖構造新的流媒體源,并且根據幀率設置讀取兩幀的間隔延遲時間,能夠滿足實時性要求。

3 系統實現

3.1 軟硬件環(huán)境

服務器硬件環(huán)境為TI的DM3730處理器,256MB運行內存,該處理器基于Cortex-A8架構,主頻為1GHz,并采用比較通用的環(huán)宇飛揚V8的USB攝像頭。軟件方面,基于Linux 2.3.32內核,并裝載Angstrom文件系統。

客戶端為普通PC,運行Ubuntu 10.04,客戶端連接程序使用FFmpeg項目中的ffplay,該播放器能夠很好的支持RTSP點播。

3.2 移植要點

本設計中需要編譯的庫文件為x264,以及l(fā)ibswscale,V4L2已經包含在Linux內核驅動中,x264可以下載到單獨的工程,而libswscale包含在FFmpeg工程中。

對于x264工程的編譯,本設計直接從x264官網下載版本號為20140104-2245的源碼,使用如下命令配置。

./configure --prefix=/home/x264 --enable-shared --enable-static --enable-debug --cross-prefix=arm-none-linux-gnueabi- --host=arm-linux

命令的含義大致為安裝目錄為/home/x264,同時編譯靜態(tài)和動態(tài)庫文件,使能調試,并設置好交差編譯工具鏈。配置好后使用make;make install即可得到編譯好的目標板文件。然后將x264.h和x264_config.h復制到目標板的/usr/include目錄,庫文件復制到/usr/lib目錄。

要獲取libswscale,需要先編譯FFmpeg,本設計采用的FFmpeg版本號為0.8.15,配置FFmpeg的命令如下所示。

./configure --prefix=/home/FFmpeginstall/ --enable-shared --target-os=linux --enable-cross-compile --cross-prefix=arm-none-linux-gnueabi- --arch=arm

配置好之后,使用make;make install命令,將安裝目錄下include中l(wèi)ibswscale目錄復制到目標板的/usr/include目錄,lib目錄中的libswscale.a和libswscale.so復制到/usr/lib目錄。

然后再使用交叉編譯工具利用剛才編譯好的這些庫文件,編譯目標板可執(zhí)行的流媒體服務器主程序,編譯好之后將可執(zhí)行程序拷貝到目標板的/opt目錄下。

3.3 優(yōu)化

由于運行環(huán)境為嵌入式系統,資源有限,而且又要保證流播放的實時性,因此需要做一些調整。本設計中程序運行負擔主要集中在編碼部分,為了減輕編碼負擔,使用libswscale將分辨率為640x480的視頻流轉換為320x240大小的視頻流。在視頻傳輸過程中,降低幀率,最終確定為15幀的幀率。為了保證實時性,對x264編碼參數預設為快速,零延遲。

3.4 系統測試運行

當服務器開啟之后,客戶端PC通過以太網與目標板連接,設置客戶端PC網卡地址,確保在同一IP網段上面,在客戶端給ffplay傳入RTSP://192.168.71.128:9554/webcam參數。

結語

在當下RTSP技術被普遍應用的背景下,本文構建了一個結合實時視頻采集、編碼和嵌入式技術的RTSP流媒體服務器,并采用目前常用的支持RTSP技術的FFplayer作為客戶端播放器,實現了嵌入式視頻監(jiān)控系統的設計,整個系統成本低廉,穩(wěn)定可靠,并且負荷方面基本能滿足中小型應用的要求,具備一定的參考價值。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

嵌入式硬盤錄像機(Embedded Digital Video Recorder,簡稱EDVR)是一種專用于視頻監(jiān)控系統的數字錄像設備。它結合了計算機技術、視頻壓縮編碼技術和數據存儲技術,通過嵌入式操作系統進行控制和管理...

關鍵字: 嵌入式硬盤錄像機 數字錄像設備 視頻監(jiān)控系統

摘要:隨著中國安防產業(yè)發(fā)展的越來越快,市場規(guī)模不斷擴大,從事安防產業(yè)的公司也越來越多。對于推廣智能安防產品的公司而言,只有抓住了安防市場的脈搏,掌握了關鍵的技術,才能正確應對未來市場的需求而不斷的推陳出新,不斷地在市場競...

關鍵字: 視頻監(jiān)控系統 智能化 目標檢測與識別 智慧安防

摘要:為了更加快捷有效地構建一套高速公路視頻全程監(jiān)控系統,提出了基于H.264視頻壓縮標準的高速公路視頻全程監(jiān)控方案。該系統通過H.264技術的視頻壓縮與網絡傳輸一體化優(yōu)勢,以及數字視頻光纖傳輸交換平臺的各種視頻、數字信...

關鍵字: 視頻監(jiān)控系統 H.264技術 數字視頻光纖傳輸交換平臺

設計一種嵌入式系統,以WinCE操作系統和ARM硬件平臺為核心實現對現場的實時監(jiān)控;通過無線網絡把視頻圖像傳輸到主機端,以實現分析、存儲及顯示等功能。

關鍵字: ARM-WinCE 視頻監(jiān)控系統 無線網絡

隨著社會的不斷發(fā)展和進步,人們日常生活中安全問題得到越來越高的重視。視頻監(jiān)控作為安全防范系統的重要組成部分,使得人們可以遠距離的觀察和調度被控區(qū)域的能力,以其直觀、準確、及時和信息內容豐富等優(yōu)勢廣泛應用于現代化小區(qū)、交通...

關鍵字: 3G 無線網絡 視頻監(jiān)控系統 前端設計

一、概述   隨著網絡通訊技術及圖像壓縮處理技術以及傳輸技術的快速發(fā)展,使得家庭能夠采用最新的通訊和圖像處理技術,通過網絡傳輸數字圖像,可為實現手機家庭監(jiān)控系統提供高效可行而且價格低廉的解決方案。

關鍵字: 視頻監(jiān)控系統

  碼頭作為貨物、集裝箱堆放及中轉機構,其安全保衛(wèi)工作顯得更加重要。建立出入境監(jiān)控系統可實現對港口出入境船舶實施監(jiān)管。由于港口范圍大、碼頭多,港口、碼頭及貨場,實施出入境監(jiān)控系統通過可以把貨物情

關鍵字: 視頻監(jiān)控系統

  1 引言   通過無線網絡與互聯網的結合, 手機移動監(jiān)控系統把監(jiān)控設備的視頻信號通過移動互聯網絡傳輸,實現實時在線監(jiān)控現場情況。本文利用J2ME 的Sprite, 以動畫的效果來顯示

關鍵字: 視頻監(jiān)控系統

  2012年10月18日 –廣播視頻測試、監(jiān)測及分析解決方案的市場領導廠商---泰克公司日前宣布,其升級版Sentry®和Sentry Verify 解決方案的新10GB接

關鍵字: 泰克 qos 視頻監(jiān)控系統 sentry qoe

  隨著現代化科學技術在國內各個行業(yè)的普及和深化發(fā)展,科學的技術信息管理化建設不斷深入,以及國家“十二五”規(guī)劃、平安城市、平安鄉(xiāng)鎮(zhèn)、平安農村的政策要求不斷拓寬。安全防范信

關鍵字: 安防監(jiān)控 視頻監(jiān)控系統
關閉