陳紹祥, 陽 莉, 羅正華
(成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106)
基于實時流協(xié)議的視頻處理系統(tǒng)設(shè)計
陳紹祥, 陽 莉, 羅正華
(成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106)
采用圖像處理器Hi3516A作為媒體處理平臺設(shè)計了基于實時流協(xié)議的視頻處理系統(tǒng),首先對高清圖像傳感器采集到的原始視頻圖像數(shù)據(jù)按照H.265進行壓縮編碼,然后將編碼后的數(shù)據(jù)按照實時流協(xié)議進行成幀、包封,最后通過以太網(wǎng)接口發(fā)送到IP網(wǎng)絡(luò)中.測試結(jié)果表明,視頻處理系統(tǒng)具有占用網(wǎng)絡(luò)傳輸帶寬低、傳輸延遲小、視頻流暢等特點,能滿足高清網(wǎng)絡(luò)視頻監(jiān)控的需求.
實時流協(xié)議;圖像處理;H.265;視頻壓縮
高清視頻在帶來清晰、逼真的視覺效果的同時,其海量的視頻數(shù)據(jù)要求網(wǎng)絡(luò)傳輸帶寬足夠高,制約了高清視頻監(jiān)控網(wǎng)絡(luò)化的發(fā)展進程[1].對此,一方面,需要對視頻數(shù)據(jù)進行高效壓縮;另一方面,高清視頻網(wǎng)絡(luò)監(jiān)控要求傳輸時延盡可能小[2].實時流協(xié)議(Real Time Streaming Protocol,RTSP)是一個多媒體播放控制協(xié)議,定義了一對多應(yīng)用程序如何有效地通過IP網(wǎng)絡(luò)傳送實時多媒體數(shù)據(jù)[3].本研究從軟件設(shè)計的角度,介紹了實時流協(xié)議視頻處理系統(tǒng)的設(shè)計方案,以期在較低網(wǎng)絡(luò)傳輸帶寬下實現(xiàn)實時高清視頻網(wǎng)絡(luò)監(jiān)控.
Hi3516A是海思公司推出的新一代高清網(wǎng)絡(luò)攝像機SoC,采用業(yè)界最新的H.265視頻壓縮編碼標(biāo)準(zhǔn),具有壓縮碼率低、圖像質(zhì)量高和功率消耗低等優(yōu)勢[4].在H.265視頻編碼標(biāo)準(zhǔn)中,網(wǎng)絡(luò)抽象層(Network Abstraction Layer,NAL)負責(zé)以適合傳輸網(wǎng)絡(luò)的方式對數(shù)據(jù)流進行打包和發(fā)送,實現(xiàn)編碼器與IP傳輸網(wǎng)絡(luò)的結(jié)合,通過提供通用接口在IP網(wǎng)絡(luò)中按照實時傳輸協(xié)議(Real-time Transport Protocol,RTP)實現(xiàn)封包傳輸.RTP協(xié)議對H.265視頻流的封包方式有3種:將1個NAL單元封包成1個RTP包;將1個NAL單元打包成多個RTP包;在1個RTP包中封裝多個NAL單元[5].視頻流媒體服務(wù)器與客戶端之間按照RTSP協(xié)議,建立客戶端與服務(wù)器之間的會話,從而實現(xiàn)實時視頻的傳輸和播放.
基于實時流協(xié)議的視頻處理系統(tǒng)由視頻采集及編碼模塊、數(shù)據(jù)封包及發(fā)送模塊、流媒體客戶端等軟件模塊組成.系統(tǒng)的總體框圖如圖1所示.
圖1 系統(tǒng)總體框圖
圖1所示的系統(tǒng)框圖中,視頻采集及編碼模塊運行于網(wǎng)絡(luò)攝像機端(服務(wù)器端),主要完成對圖像傳感器采集的原始視頻信號進行處理,并按照H.265標(biāo)準(zhǔn)進行壓縮編碼.數(shù)據(jù)封包及發(fā)送模塊按照實時流媒體協(xié)議的規(guī)范完成協(xié)議數(shù)據(jù)封包和發(fā)送,其中,RTP數(shù)據(jù)打包處理部分是將編碼之后的視頻數(shù)據(jù)通過RTP協(xié)議拆分、逐層封裝.RTSP會話建立部分是實現(xiàn)實時流媒體傳輸?shù)年P(guān)鍵,它負責(zé)監(jiān)聽客戶端發(fā)來的請求,根據(jù)請求建立套接字、綁定、會話連接等功能.
流媒體客戶端軟件運行于PC機端,完成與服務(wù)器端建立會話、協(xié)議數(shù)據(jù)解包、重組、去包頭、視頻碼流的解碼及視頻播放等功能.服務(wù)器端和客戶端通過IP網(wǎng)絡(luò)進行數(shù)據(jù)傳遞.在視頻數(shù)據(jù)的傳輸過程中,RTSP主要是對客戶端和服務(wù)器端的通信交互進行控制,以保證視頻數(shù)據(jù)的正確發(fā)送.同時,實時流控制協(xié)議(Real-time Transport Control Protocol,RTCP)主要是對交互過程的信息進行反饋,從而提高通信效率和網(wǎng)絡(luò)傳輸?shù)姆?wù)質(zhì)量.
海思公司所提供的媒體處理軟件平臺(Multimedia Processing Platform,MPP)屏蔽了芯片相關(guān)的復(fù)雜底層處理,并對應(yīng)用軟件直接提供MPI接口.利用MPP所提供的視頻輸入(Video Input,VI)單元、視頻處理(Video Process Sub-system,VPSS)單元及視頻編碼(Video Encode Subsystem,VENC)單元,能夠在HI3516A處理器平臺上實現(xiàn)實時流協(xié)議的視頻處理功能.
3.1 視頻采集及編碼模塊
視頻數(shù)據(jù)的采集及編碼模塊的軟件流程如圖2所示.
圖2 視頻數(shù)據(jù)的采集及編碼模塊的流程圖
高清圖像傳感器采集的圖像信號由VI單元完成視頻圖像的捕捉,按照要求完成剪切、縮放、鏡像等處理.VPSS單元用于接收VI單元發(fā)送來的圖像數(shù)據(jù),完成去噪、圖像增強及銳化等處理.VENC單元接收經(jīng)VPSS處理后的圖像數(shù)據(jù),按H.265協(xié)議進行編碼壓縮,根據(jù)用戶配置要求完成輸出碼流的控制.
3.2 會話管理模塊
服務(wù)器會話線程采用RTSP初始化函數(shù)來實現(xiàn),會話線程函數(shù)的流程如圖3所示.
圖3 服務(wù)器會話線程的流程圖
服務(wù)器會話初始化主要利用網(wǎng)絡(luò)套接字Socket搭建一個TCP服務(wù)器,利用函數(shù)select進行循環(huán)監(jiān)聽是否有客戶端發(fā)來連接請求.一旦監(jiān)聽到有客戶端請求連接,則使用pthread-create函數(shù)來創(chuàng)建一個屬于客戶端與服務(wù)器端的 RTSP會話線程.RTSP協(xié)議的消息格式分為RTSP請求和RTSP應(yīng)答2種.當(dāng)服務(wù)器接收到來自客戶端的請求會話消息后,對消息進行解析,用RTSP應(yīng)答格式回應(yīng)客戶端.客戶端和服務(wù)器之間的RTSP消息類型主要有OPTIONS、DESCRIBE、SETUP、PLAY、TEARDOWN等幾種,通過這些消息可交互建立一個完整的流媒體傳輸過程.
1)OPTIONS.客戶端詢問服務(wù)器可提供的可用方法,服務(wù)器端用所能提供的方法加以回應(yīng).
2)DESCRIBE.客戶端向服務(wù)器發(fā)起DESCRIBE請求,以獲取會話描述協(xié)議(Session Description Protocol,SDP)信息,服務(wù)器端回應(yīng)此會話的SDP信息.在本設(shè)計中,SDP信息中主要的參數(shù)如下:
s=H.265//視頻流類型為H.265
m=video 0 RTP/AVP 96//媒體類型、協(xié)議和格式
a=rtpmap:96 H265/90000//媒體屬性,H265為視頻格式,采用頻率為90000
a=fmtp:96 profile-space=0;profile-id=1;tier-flag=0;
level-id=90;interop-constraints=B00000000000;
sprop-vps=QAEMAf//AWAAAAMAsAAAAwAAAwBaqgJA;sprop-sps=QgEBAWAAAAMAsAAAAwAAAwBaoAUCAeFjaqSTL5A=;sprop-pps=RAHA8vA8kA==//媒體屬性和媒體格式的特殊參數(shù)
3)SETUP.客戶端提醒服務(wù)器建立會話并確定傳輸模式,服務(wù)器端回應(yīng)相應(yīng)的模式.通過該消息,能夠獲得客服端與服務(wù)器的端口號、IP地址等信息.
4)PLAY.客戶端向服務(wù)器端發(fā)送視頻播放請求.
5)TEARDOWN.客戶端向服務(wù)器端發(fā)起關(guān)閉請求,服務(wù)器端收到此消息后,停止發(fā)送視頻流.
3.3 數(shù)據(jù)封包及發(fā)送模塊
數(shù)據(jù)封包及發(fā)送模塊的功能是完成將壓縮編碼之后的碼流進行RTP封包并發(fā)送,其流程圖如圖4所示.
圖4 封包發(fā)送的流程
會話建立之后,服務(wù)器端首先會檢查 RTSP 的會話狀態(tài),判斷是否有客戶端請求播放,即是否處于 PLAY 狀態(tài).如果沒有客戶端請求播放,服務(wù)器端將終止傳輸視頻.如果有客戶端請求播放,服務(wù)器端將從碼流中獲取一個NAL單元數(shù)據(jù)并封裝成一個或多個RTP包.封裝好的RTP包通過sendto函數(shù)發(fā)送給客戶端.如果在此過程中客戶端請求終止數(shù)據(jù)的發(fā)送,服務(wù)器端將終止發(fā)送視頻.
封包發(fā)送部分需要設(shè)置rtp頭信息、NAL單元的頭信息以及發(fā)送方式.通過比較發(fā)送的數(shù)據(jù)大小判斷封包發(fā)送的方式.最后通過sendto函數(shù)將封裝正確的數(shù)據(jù)包發(fā)送到客戶端進行實時流播放.主要參數(shù)設(shè)置代碼如下:
rtp-hdr->payload=265;//rtp頭的凈負荷類型為265
rtp-hdr->marker=0;//標(biāo)志位,對于視頻,置1表示1幀的結(jié)束
rtp-hdr->seq-no=htons(g-rtspClients[is].seqnum++);//序列號,每發(fā)送一個RTP包增1
nalu-hdr=(NALU-HEADER*) & sendbuf[12];//nal單元頭存放的起始位置
nalu-hdr->F=0;//nal單元頭的F位,通常置0
nalu-hdr->TYPE=H265E-NAL-UNSPECIFIED-49;//nal單元頭的類型
nalu-hdr->LayerId=0;//nal單元頭的LayerId位,通常置0
nalu-hdr->TID=1;//nal單元頭的TID位,通常置1
sendto(udpfd,sendbuf,bytes,0,(struct sockaddr *) & server,sizeof(server));//發(fā)送數(shù)據(jù)到客戶端
本視頻處理系統(tǒng)方案設(shè)計中,視頻采集及編碼模塊、數(shù)據(jù)封包及發(fā)送模塊軟件采用C語言編程,并以基于Linux的開源桌面PC操作系統(tǒng)Ubuntu 12.04 LTS作為軟件開發(fā)環(huán)境.所有軟件模塊代碼通過嵌入式交叉編譯工具鏈進行編譯,生成可執(zhí)行程序,并將其下載到Hi3516A Demo板上(流媒體服務(wù)器端)運行,客戶端采用PC機來模擬.測試驗證連接示意圖如圖5所示.
圖5 測試驗證連接示意圖
在測試中,客戶端采用支持H.265解碼標(biāo)準(zhǔn)的開源跨平臺多媒體播放器VLC,采用PC機作為該媒體播放軟件運行的硬件平臺.同時,修改PC機的IP地址設(shè)置,使其與服務(wù)器端(Hi3516A Demo板)的IP地址在同一網(wǎng)段.在本測試方案中,Hi3516A Demo板的IP地址為192.168.1.188.在PC機上安裝并運行VLC,在VLC播放器中設(shè)置視頻服務(wù)器(Hi3516A Demo板)的地址URL:rtsp://192.168.1.188/stream-chn0.265(其中,“stream-chn0.265”表示請求播放H.265實時碼流).點擊“播放”,客戶端與服務(wù)器端建立RTSP會話,VLC開始播放實時流視頻.通過VLC播放器可以看到,在播放幀率為30幀/s的1080P高清視頻時,所占用的網(wǎng)絡(luò)帶寬僅為2 Mibit/s,且圖像清晰、視頻流暢,感覺不到延遲.測試中同時用3臺PC機(模擬多個客戶端)進行并發(fā)訪問,視頻播放依然清晰流暢.
本研究提出的基于實時流協(xié)議的視頻處理系統(tǒng)具有占用網(wǎng)絡(luò)傳輸帶寬低、傳輸延遲小、視頻流暢及支持多客戶并發(fā)訪問等特點,能滿足高清網(wǎng)絡(luò)視頻監(jiān)控的需求.
[1]官營銅.前端智能化引領(lǐng)監(jiān)控智能新常態(tài)[J].A & s:安全 & 自動化,2015,22(3):62-65.
[2]陳德元.新一代視頻壓縮標(biāo)準(zhǔn)H.265應(yīng)用前瞻[J].中國多媒體通信,2013,11(7):17-19.
[3]李羅濤.基于RTSP的H.264實時流媒體傳輸方案的研究與實現(xiàn)[D].廣州:華南理工大學(xué),2014.
[4]海思公司.Hi3516A專業(yè)型HD IP Camera Soc產(chǎn)品簡介.pdf[EB/OL].[2014-07-15].http://www.docin.com/p-1017817937.html.
[5]周淑芳.H.264視頻流RTP打包的傳輸與實現(xiàn)[D].呼和浩特:內(nèi)蒙古大學(xué),2012.
Design of Video Processing System Based on Real-time Stream Protocol
CHENShaoxiang,YANGLi,LUOZhenghua
(School of Information Science and Engineering, Chengdu University, Chengdu 610106, China)
The video processing system based on real-time streaming protocol uses Hi3516A image processor as media processing platform.It firstly compresses and codes the original video image data captured by the HD image sensor according to H.265,then puts the encoded data into frame and encapsulation in accordance with the real-time streaming protocol,and finally sends it to the IP network through the Ethernet interface.The test shows that the video processing system has the characteristics of low network transmission bandwidth,low transmission delay and smooth video display and so on,which can meet the needs of HD network video surveillance.
real-time streaming protocol;image processing;H.265;video compression
1004-5422(2016)04-0371-04
2016-08-25.
成都市科技局科技惠民計劃(2014-HM01-00075-SF)、 四川省教育廳自然科學(xué)基金(14ZA0324)資助項目.
陳紹祥(1968 — ), 男, 碩士, 高級工程師, 從事通信與信息系統(tǒng)研究.
TP391.41
A