国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RTMP協(xié)議的橋梁視頻監(jiān)控關(guān)鍵技術(shù)研究

2020-12-07 08:45:44崔營營劉洋劉志強
物聯(lián)網(wǎng)技術(shù) 2020年11期
關(guān)鍵詞:流媒體視頻監(jiān)控

崔營營 劉洋 劉志強

摘 要:文中針對視頻監(jiān)控信號對網(wǎng)絡(luò)帶寬要求高,難以通過公網(wǎng)遠程傳輸?shù)葐栴},提出了基于RTMP協(xié)議的實時視頻遠程傳輸解決方案,通過開發(fā)視頻轉(zhuǎn)換軟件將橋梁現(xiàn)場視頻信號轉(zhuǎn)換為RTMP碼流,并將其推流至云平臺端搭建的Nginx流媒體服務(wù)器上。客戶端通過開發(fā)Web端和安卓移動視頻播放軟件,實現(xiàn)了橋梁視頻監(jiān)控信息的跨平臺展示應(yīng)用,提升了橋梁安全的實時監(jiān)管能力。

關(guān)鍵詞:RTMP協(xié)議;流媒體;Nginx服務(wù)器;Web;編碼技術(shù);視頻監(jiān)控

中圖分類號:TP206文獻標識碼:A文章編號:2095-1302(2020)11-00-03

0 引 言

近年來,隨著我國交通基礎(chǔ)設(shè)施建設(shè)的跨越式發(fā)展,各類跨江跨海大橋建立的健康監(jiān)測系統(tǒng)逐漸成為保障橋梁安全的重要手段。視頻監(jiān)控憑借技術(shù)成熟,監(jiān)測方式直觀可靠等優(yōu)點已成為橋梁健康監(jiān)測系統(tǒng)的標配。但視頻信號相較數(shù)字類監(jiān)測信號對網(wǎng)絡(luò)帶寬要求較高,常出現(xiàn)卡頓、掉幀等問題。同時考慮橋梁現(xiàn)場惡劣的工況及數(shù)據(jù)安全要求,導(dǎo)致目前只能采用高速光纖專網(wǎng)實現(xiàn)視頻信號的局域網(wǎng)傳輸,大大限制了網(wǎng)絡(luò)傳輸距離和應(yīng)用范圍。

本文提出了一種基于RTMP(Real Time Messaging Protocol,RTMP)協(xié)議的視頻監(jiān)控數(shù)據(jù)遠程傳輸方案,在不改變橋梁監(jiān)測系統(tǒng)網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)上,實現(xiàn)了視頻監(jiān)控信號的遠程傳輸和多平臺展示應(yīng)用[1-2]。

1 編碼協(xié)議簡介

1.1 RTMP協(xié)議

RTMP協(xié)議是一種進行實時數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,主要用來在支持Flash/AIR平臺和支持RTMP協(xié)議的流媒體服務(wù)器之間進行音視頻數(shù)據(jù)通信[3-4]。

RTMP協(xié)議是建立在TCP協(xié)議之上的應(yīng)用層協(xié)議,其數(shù)據(jù)包由一個固定長度的包頭和最大長度為128 B的包體組成。RTMP協(xié)議數(shù)據(jù)包格式如圖1所示。

協(xié)議包頭中MessageType為消息類型,PayloadLength為報文長度,TimeStamp為消息時間戳,StreamID為視頻流ID。協(xié)議包體主要由基本消息頭(ChunkBasicHeader)、負載消息頭(ChunkMessageHeader)、擴展時間戳(ExtendedTimeStamp)和消息塊數(shù)據(jù)(ChunkData)組成。

為保證在低網(wǎng)絡(luò)帶寬下視頻流的傳輸,在RTMP協(xié)議下視頻消息塊被拆分為若干個小的數(shù)據(jù)塊,各數(shù)據(jù)塊通過ChunkMessageHeader消息頭可重新組裝成完整的消息塊。數(shù)據(jù)采集端將視頻流分割成較小的數(shù)據(jù)塊后以TCP協(xié)議發(fā)送至服務(wù)器端,客戶端獲取服務(wù)器端數(shù)據(jù)塊后重新將其組裝成完整的視頻消息塊,實現(xiàn)視頻流的流暢播放,從而解決了低帶寬情況下的視頻延遲和卡頓問題。

1.2 H.264編碼技術(shù)

H.264是當前一種主流的視頻壓縮編碼標準。與H.261,H.263等視頻編碼標準相比,H.264協(xié)議采用DCT變換編碼加DPCM差分編碼,并融合了運動估計、多幀預(yù)測、基于內(nèi)容的變長編碼等先進技術(shù),使其編碼壓縮效率大幅提升,進而有效提升視頻質(zhì)量及其網(wǎng)絡(luò)適應(yīng)能力。

H.264協(xié)議為解決不同應(yīng)用中網(wǎng)絡(luò)傳輸?shù)牟町悊栴},在架構(gòu)層面定義了兩個層級。

(1)視頻編碼層(VCL):通過視頻信息的編碼,實現(xiàn)視頻內(nèi)容的高效展示;

(2)網(wǎng)絡(luò)提取層(NAL):判斷當前網(wǎng)絡(luò)環(huán)境,并采用相應(yīng)的提取算法打包和傳輸視頻數(shù)據(jù)。

H.264編碼架構(gòu)如圖2所示。

2 總體技術(shù)路線

本文結(jié)合以往項目經(jīng)驗,提出基于RTMP協(xié)議的視頻監(jiān)控信號的遠程傳輸方案,總體技術(shù)路線如下:

(1)橋梁現(xiàn)場視頻攝像機將采集的原始視頻流數(shù)據(jù)通過光纖內(nèi)網(wǎng)傳輸?shù)奖O(jiān)控中心的視頻處理服務(wù)器;

(2)自主開發(fā)RTMP碼流轉(zhuǎn)換軟件并將其部署在視頻處理服務(wù)器上,將橋梁現(xiàn)場傳輸?shù)脑家曨l信號轉(zhuǎn)換為RTMP碼流,并通過加密公網(wǎng)將RTMP信號推流至具有公網(wǎng)IP的云服務(wù)器端;

(3)在云服務(wù)器端部署并配置Nginx流媒體服務(wù)Server端,實現(xiàn)RTMP視頻數(shù)據(jù)的中繼轉(zhuǎn)換功能;

(4)在客戶端開發(fā)基于Web端和安卓移動端的視頻播放軟件,從Nginx服務(wù)器獲取并展示視頻信號,實現(xiàn)橋梁視頻監(jiān)控信息的實時展示[5-6]。

RTMP視頻監(jiān)控網(wǎng)絡(luò)架構(gòu)如圖3所示。

3 關(guān)鍵技術(shù)研究

3.1 RTMP碼流轉(zhuǎn)換開發(fā)

目前主流的RTMP碼流轉(zhuǎn)換方法是采用FFmpeg將RTSP視頻信號轉(zhuǎn)換為RTMP流媒體信號,但FFmpeg存在丟包率高、多路信號傳輸支持性差等缺點。

經(jīng)過多方比選驗證,本文最終采用EasyRTMP直播組件進行二次開發(fā),該組件集成了RTMP基本協(xié)議與異步推送、環(huán)形緩沖區(qū)、網(wǎng)絡(luò)擁塞自動丟幀、事件回調(diào)、緩沖器、關(guān)鍵幀檢索等功能,可兼容市面上大部分RTMP流媒體服務(wù)器。

EasyRTSP直播組件具有Windows,ARM,Linux等不同跨平臺版本[7-8]。實際開發(fā)中采用C++語言引用EasyRTSPClient.dll類庫編寫視頻流接收及RTMP轉(zhuǎn)換功能,其代碼邏輯流程如圖4所示。

本模塊通過RTSPSourceCallback回調(diào)函數(shù)不斷監(jiān)聽視頻數(shù)據(jù),當監(jiān)聽到數(shù)據(jù)類型為EASY_SDK_VIDEO_FRAME_FLAG時,啟動RTMP碼流轉(zhuǎn)換代碼塊,其處理核心邏輯代碼如下:

if(_mediatype== EASY_SDK_VIDEO_FRAME_FLAG)

{

pChannel->fPusherInfo.rtmpHandle= EasyRTMP_Create();

//創(chuàng)建RTMP句柄對象

EasyRTMP_SetCallback(pChannel->fPusherInfo.rtmpHandle,__EasyRTMP_Callback, pChannel);//設(shè)置RTMP回調(diào)函數(shù)

EasyRTMP_Connect(pChannel->fPusherInfo.rtmpHandle, pChannel->fCfgInfo.destRtmpAddr);//連接目標主機

mediaInfo.u32VideoFps=pChannel->fMediainfo.u32VideoFps;

mediaInfo.u32VideoCodec = frameinfo->codec;

mediaInfo.u32VideoFps = frameinfo->fps;

EasyRTMP_InitMetadata(pChannel->fPusherInfo.rtmpHandle, &mediaInfo, 1024);//初始化RTMP元數(shù)據(jù)

EASY_AV_Frame avFrame;

memset(&avFrame, 0, sizeof(EASY_AV_Frame));

//視頻幀大小

avFrame.u32AVFrameFlag = EASY_SDK_VIDEO_FRAME_FLAG;

avFrame.u32AVFrameLen = frameinfo->length;//視頻長度賦值

avFrame.pBuffer = (unsigned char*)pbuf;//視頻幀內(nèi)容

avFrame.u32VFrameType = EASY_SDK_VIDEO_FRAME_I;

EasyRTMP_SendPacket(pChannel->fPusherInfo.rtmpHandle, &avFrame);//RTMP視頻流發(fā)送目標主機

}

按照以上代碼邏輯編寫軟件程序并封裝成后臺Windows服務(wù),實現(xiàn)了多路視頻信號由RTSP協(xié)議到RTMP協(xié)議解析轉(zhuǎn)碼,并通過公網(wǎng)將轉(zhuǎn)換后的視頻信號推流至云端的Nginx流媒體服務(wù)器。

3.2 Nginx流媒體服務(wù)器搭建

Nginx是一種高性能的Http和反向代理服務(wù)器,通過Nginx可搭建支持RTMP協(xié)議的流媒體服務(wù)平臺,其設(shè)計難點在于如何在網(wǎng)絡(luò)帶寬有限的情況下盡量減少數(shù)據(jù)延遲和數(shù)據(jù)丟幀。

Nginx通過RTMP模塊提供服務(wù),本方案采用阿里云ECS云服務(wù)器作為運行環(huán)境,操作系統(tǒng)為Windows Server 2012,其配置Nginx流媒體服務(wù)關(guān)鍵步驟如下:

(1)通過命令編譯并安裝Nginx依賴包gcc;

(2)下載并通過命令安裝第三方擴展模塊nginx-rtmp-module,使Nginx能夠支持RTMP和HLS協(xié)議;

(3)下載并安裝nginx_mod_h264_streaming模塊,使Nginx支持FLV和MP4流播放功能;

(4)修改nginx.conf配置文件,將nginx-rtmp-module添加到配置文件中。

核心配置信息如下:

# vim nginx.conf

rtmp {

server {

listen 1935;//監(jiān)聽的端口號

application myapp {//自定義的名字

live on;

}

application hls {

live on;

hls on;

hls_path /tmp/hls;

hls_fragment 1s;

hls_playlist_length 3s;

}

}

}

# /etc/init.d/nginx reload

3.3 客戶端視頻播放開發(fā)

Nginx流媒體服務(wù)搭建完成后,客戶端可通過拉流獲取并播放視頻。本文設(shè)計Web端和安卓移動端兩種客戶端播放展示方式,如不支持HTML5則自動切換至Flash播放器。

目前主流的網(wǎng)絡(luò)視頻播放器架構(gòu)包含UI界面、多媒體引擎和解碼器三個部分。UI界面主要實現(xiàn)播放界面的風(fēng)格、UI組件及業(yè)務(wù)邏輯模塊控制。多媒體引擎包含媒體源管理引擎和網(wǎng)絡(luò)管理引擎,主要實現(xiàn)網(wǎng)絡(luò)傳輸及多媒體傳輸控制。解碼器部分包含解碼器和渲染器兩部分,為播放器的內(nèi)核。網(wǎng)絡(luò)視頻播放器架構(gòu)如圖5所示。

為實現(xiàn)Web端視頻播放器的去插件化,需要借助HTML5技術(shù),通過采用Media Source Extension API接口實現(xiàn)基于Web的無插件式流媒體播放功能。

實際開發(fā)中,Web平臺前端視頻播放界面選擇開源類庫video.js,它能夠自動檢測瀏覽器對HTML5的支持情況,若瀏覽器不支持HTML5則自動使用Flash播放視頻,滿足系統(tǒng)對于多種瀏覽器的兼容性需求。Web端視頻播放界面如圖6所示。

安卓移動端采用開源視頻播放器ijkplayer,該播放器包含先進的音視頻編解碼庫libavcodec,能夠?qū)崿F(xiàn)完整的視頻錄制、轉(zhuǎn)換以及流媒體播放等功能。安卓移動端視頻監(jiān)控APP界面如圖7所示。

4 結(jié) 語

本文針對橋梁健康監(jiān)測系統(tǒng)采集的視頻監(jiān)控信號對網(wǎng)絡(luò)帶寬要求高,難以通過公網(wǎng)遠距離傳輸?shù)膯栴},提出了基于RTMP協(xié)議的視頻遠程傳輸方案。

橋梁現(xiàn)場通過開發(fā)并部署基于RTMP協(xié)議的碼流轉(zhuǎn)換軟件,將原始視頻信號轉(zhuǎn)換為RTMP碼流并推送至云服務(wù)器端。

云服務(wù)器端通過搭建Nginx流媒體服務(wù)接收轉(zhuǎn)換橋梁現(xiàn)場推送的RTMP碼流,并為客戶端提供拉流服務(wù),同時還具有緩存中繼和公網(wǎng)轉(zhuǎn)發(fā)功能。

實際應(yīng)用中采用Web網(wǎng)頁端和安卓端兩種方式獲取并展示視頻監(jiān)控信息,實現(xiàn)了橋梁視頻監(jiān)控信號的跨平臺展示應(yīng)用,大大提升了橋梁安全的實時監(jiān)管能力。

參考文獻

[1]王艷.Android系統(tǒng)中RTMP流媒體直播的設(shè)計與實現(xiàn)[J]. 電視技術(shù),2017,41(1):64-67.

[2]張印.基于RTMP協(xié)議的流媒體系統(tǒng)的設(shè)計實現(xiàn)[D]. 成都:電子科技大學(xué),2016.

[3]吳楊.基于RTMP協(xié)議的實時視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2017.

[4]吳楊.基于SIP、RTP/RTCP和RTSP協(xié)議的視頻監(jiān)控系統(tǒng)[J].計算機與現(xiàn)代化,2013,29(11):139-142.

[5]隗超,張偉,石瀾.基于Nginx負載均衡及多線程智慧農(nóng)業(yè)系統(tǒng)的設(shè)計[J].物聯(lián)網(wǎng)技術(shù),2017,7(4):110-111.

[6]葉鋒,傅燕云,陳林芳,等. 基于多協(xié)議融合的實時移動視頻監(jiān)控系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2015,25(4):80-85.

[7]孫曉波,王榮浩,季新年,等.基于Web視頻監(jiān)控系統(tǒng)的設(shè)計方案[J].電腦編程技巧與維護,2011,18(2):61-62.

[8]方旭昌.基于H.264的無線視頻采集系統(tǒng)[D].杭州:杭州電子科技大學(xué),2013.

[9]馬丹丹.基于RTMP協(xié)議的視頻流媒體服務(wù)器部分關(guān)鍵技術(shù)研究與實現(xiàn)[D].南京:南京航空航天大學(xué),2012.

[10]許磊.基于RTMP協(xié)議的智能監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D].廣州:廣東工業(yè)大學(xué),2017.

猜你喜歡
流媒體視頻監(jiān)控
流媒體傳輸加密技術(shù)研究
基于視頻圖像采集移動目標檢測系統(tǒng)的設(shè)計
數(shù)字化監(jiān)控系統(tǒng)的企業(yè)應(yīng)用
廣東地區(qū)輸電線路在線監(jiān)測技術(shù)應(yīng)用探究
基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
基于HTML5的視頻監(jiān)控微課設(shè)計淺析
智能視頻檢索技術(shù)在校園安防建設(shè)中的發(fā)展應(yīng)用
基于JSP的流媒體播放的設(shè)計與實現(xiàn)
網(wǎng)絡(luò)遠程教學(xué)系統(tǒng)的設(shè)計
基于云服務(wù)的P2P流媒體技術(shù)在遠程教學(xué)視頻傳輸中的應(yīng)用
新营市| 天祝| 祁阳县| 长岛县| 禄丰县| 夹江县| 公安县| 盐津县| 托克托县| 邯郸市| 金沙县| 乐亭县| 灌南县| 镇平县| 江门市| 大新县| 定边县| 夹江县| 天门市| 盘山县| 北票市| 丰原市| 腾冲县| 利川市| 凉城县| 高台县| 丹凤县| 永顺县| 丰县| 斗六市| 宾阳县| 长海县| 清远市| 台北县| 通化县| 顺昌县| 昌邑市| 安阳市| 南丰县| 朝阳县| 平乡县|