• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      崔營(yíng)營(yíng) 劉洋 劉志強(qiáng)

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

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

      中圖分類(lèi)號(hào):TP206文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2020)11-00-03

      0 引 言

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

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

      1 編碼協(xié)議簡(jiǎn)介

      1.1 RTMP協(xié)議

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

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

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

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

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

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

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

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

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

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

      2 總體技術(shù)路線

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

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

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

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

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

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

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

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

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

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

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

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

      if(_mediatype== EASY_SDK_VIDEO_FRAME_FLAG)

      {

      pChannel->fPusherInfo.rtmpHandle= EasyRTMP_Create();

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

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

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

      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;//視頻長(zhǎng)度賦值

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

      avFrame.u32VFrameType = EASY_SDK_VIDEO_FRAME_I;

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

      }

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

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

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

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

      (1)通過(guò)命令編譯并安裝Nginx依賴(lài)包gcc;

      (2)下載并通過(guò)命令安裝第三方擴(kuò)展模塊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)聽(tīng)的端口號(hào)

      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 客戶端視頻播放開(kāi)發(fā)

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

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

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

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

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

      4 結(jié) 語(yǔ)

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

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

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

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

      參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

      猜你喜歡
      流媒體視頻監(jiān)控
      基于云服務(wù)的P2P流媒體技術(shù)在遠(yuǎn)程教學(xué)視頻傳輸中的應(yīng)用
      侯马市| 昭通市| 兰考县| 葫芦岛市| 秦皇岛市| 留坝县| 五原县| 枝江市| 高碑店市| 大理市| 玉田县| 鲁甸县| 瑞昌市| 长海县| 民权县| 武鸣县| 淮南市| 余干县| 大埔县| 万州区| 会昌县| 罗定市| 且末县| 华蓥市| 桂平市| 河津市| 开封县| 资中县| 崇礼县| 高雄市| 叶城县| 连平县| 南宫市| 康乐县| 玉树县| 灵宝市| 调兵山市| 尤溪县| 洪洞县| 屯门区| 上栗县|