• 
    

    
    

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

      基于H.264的云端視頻監(jiān)控系統(tǒng)設(shè)計(jì)

      2015-03-17 11:52:09艾博文沈永良張金富
      關(guān)鍵詞:函數(shù)調(diào)用流程圖編碼器

      艾博文,沈永良,張金富

      (黑龍江大學(xué) 電子工程學(xué)院,哈爾濱 150080)

      基于H.264的云端視頻監(jiān)控系統(tǒng)設(shè)計(jì)

      艾博文,沈永良*,張金富

      (黑龍江大學(xué) 電子工程學(xué)院,哈爾濱 150080)

      提出了一種基于H.264視頻編碼算法并采用云服務(wù)器實(shí)現(xiàn)的視頻監(jiān)控系統(tǒng)設(shè)計(jì)方案。該方案是視頻采集端與監(jiān)控控制端分離的分布式監(jiān)控系統(tǒng)。視頻采集部分采用三星Exynos4412處理器基于Linux實(shí)時(shí)操作系統(tǒng)進(jìn)行軟件設(shè)計(jì);視頻實(shí)時(shí)編碼采用FFmpeg音視頻解決方案,對USB攝像頭采集的視頻基于H.264編碼,選用實(shí)時(shí)消息傳輸協(xié)議(RTMP)通過網(wǎng)絡(luò)傳輸給監(jiān)控控制端。監(jiān)控控制端基于云服務(wù)器平臺設(shè)計(jì),云服務(wù)器選用流媒體直播服務(wù)器,對視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)解碼、播放與存儲。測試結(jié)果顯示,系統(tǒng)具有良好的實(shí)時(shí)性,滿足了基本的設(shè)計(jì)需求。

      H.264;云服務(wù)器;視頻監(jiān)控;FFmpeg

      0 引 言

      2015年的《政府工作報(bào)告》中指出,制定“互聯(lián)網(wǎng)+”行動計(jì)劃,推動移動互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等與現(xiàn)代制造業(yè)結(jié)合,而在“互聯(lián)網(wǎng)+”時(shí)代下,安防領(lǐng)域?qū)⒂瓉砬八从械臋C(jī)遇和挑戰(zhàn)。如今,基于H.264視頻編碼算法[1]的720P高清實(shí)時(shí)監(jiān)控的碼率達(dá)到2 Mbps,錄像1 h·d大約需要21 GB存儲空間,這對于傳統(tǒng)監(jiān)控設(shè)備來說,需要巨大的存儲空間,價(jià)格不僅十分昂貴,由于各個(gè)監(jiān)控設(shè)備的存儲空間是分離的,無法整合存儲資源,從而導(dǎo)致了資源浪費(fèi)。隨著云計(jì)算、大數(shù)據(jù)的蓬勃發(fā)展與成熟,云視頻監(jiān)控系統(tǒng)[2]的出現(xiàn)使得上述問題得到了很好的解決,它將云端存儲空間進(jìn)行合理整合并分配。

      基于現(xiàn)有的云視頻監(jiān)控系統(tǒng)方案設(shè)計(jì)復(fù)雜、占有帶寬高等情況,本文提出了一種新的分布式的云視頻監(jiān)控系統(tǒng)方案,并且給出了更加詳盡的設(shè)計(jì)方法。本文所采用的H.264視頻編碼算法能在相同視頻質(zhì)量的情況下節(jié)約30%的網(wǎng)絡(luò)帶寬[3]。針對監(jiān)控控制端,本方案提出了一種新的設(shè)計(jì)思想。監(jiān)控控制端不再采用傳統(tǒng)的視頻采集監(jiān)控一體的監(jiān)控設(shè)備,而是以云服務(wù)器為監(jiān)控控制平臺,對視頻流數(shù)據(jù)進(jìn)行實(shí)時(shí)解碼播放,從而實(shí)現(xiàn)流媒體的直播,并且利用云服務(wù)器巨大的存儲空間,對視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)存儲。

      1 系統(tǒng)方案及硬件平臺

      本系統(tǒng)采用友善之臂最新推出的NanoPC-T1[4]開發(fā)板作為視頻監(jiān)控端的硬件平臺,開發(fā)板的軟件平臺基于Linux系統(tǒng)。系統(tǒng)的總體方案設(shè)計(jì)流程如下:USB高清攝像頭采集到實(shí)時(shí)視頻數(shù)據(jù)流,數(shù)據(jù)流經(jīng)H.264算法編碼后,利用實(shí)時(shí)消息傳輸協(xié)議(RTMP)將編碼后的視頻數(shù)據(jù)傳送到云端服務(wù)器,云服務(wù)器集成的流媒體服務(wù)器可以對視頻數(shù)據(jù)進(jìn)行解碼播放及存儲,最終用戶可通過PC終端或手機(jī)APP訪問及控制云端服務(wù)器。系統(tǒng)結(jié)構(gòu)圖見圖1。

      圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure chart of the system

      由于視頻監(jiān)控的數(shù)據(jù)采集及編碼對實(shí)時(shí)性要求很高,尤其是基于H.264視頻編碼算法,更需要性能優(yōu)異的CPU。因此本文所采用的硬件平臺是基于三星Exynos4412四核處理器的一款高性能開發(fā)板。Exynos4412是一款基于ARM Cortex-A9架構(gòu)研發(fā)的CPU,其主頻最高達(dá)到1.5 GHz,并且支持USB 2.0版本的通信協(xié)議從而能實(shí)時(shí)讀取USB攝像頭采集的數(shù)據(jù),此外它還支持視頻圖像的硬件編解碼[5]。本系統(tǒng)的USB攝像頭采用Gsou A20高清USB攝像頭,采集640×480的視頻幀,采樣速率為30 fps/s,完全滿足實(shí)驗(yàn)需求。

      2 軟件平臺設(shè)計(jì)

      2.1 操作系統(tǒng)平臺搭建

      嵌入式Linux操作系統(tǒng)主要由Bootloader、Linux內(nèi)核、根文件系統(tǒng)和應(yīng)用程序4部分組成[6]。

      Bootloader是Linux系統(tǒng)的引導(dǎo)加載程序。本系統(tǒng)采用UBoot作為引導(dǎo)加載程序,它是開源的,最后根據(jù)源代碼編譯成適合于本系統(tǒng)硬件平臺的二進(jìn)制文件。Linux內(nèi)核采用Linux 3.5版本的內(nèi)核。在內(nèi)核的配置中,主要添加USB、USB攝像頭、網(wǎng)卡、串口等驅(qū)動程序,最終編譯成二進(jìn)制文件。根文件系統(tǒng)是用busybox軟件制作而成的Ext4文件系統(tǒng),是目前主流的文件系統(tǒng)之一[7]。它是第四代擴(kuò)展文件系統(tǒng),能夠支持大容量文件系統(tǒng)和大容量文件。在進(jìn)行項(xiàng)目開發(fā)時(shí),則采用NFS網(wǎng)絡(luò)文件系統(tǒng),方便程序的調(diào)試,提高開發(fā)效率。

      2.2 視頻采集端主程序設(shè)計(jì)

      2.2.1 視頻采集總體方案

      視頻采集端的主程序設(shè)計(jì)是本文設(shè)計(jì)的核心部分,該應(yīng)用程序是基于FFmpeg音視頻解決方案之上的二次開發(fā)。FFmpeg是一款優(yōu)秀的多媒體框架,它集成了視頻的解碼、編碼、轉(zhuǎn)碼、流化、濾波、復(fù)用以及播放為一體,為視頻類應(yīng)用程序開發(fā)者提供了完整的解決方案[8-9]。主程序采用Linux V4L2采集USB視頻數(shù)據(jù),它是Linux系統(tǒng)中針對USB免驅(qū)設(shè)備的編程框架,簡化了視頻系統(tǒng)的開發(fā)[10]。視頻傳輸部分采用實(shí)時(shí)消息傳輸協(xié)議(RTMP),它是一種實(shí)時(shí)數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,廣泛用于直播、點(diǎn)播、聊天等應(yīng)用。

      主程序流程圖見圖2。采用Linux V4L2采集USB視頻數(shù)據(jù),用X264編碼器進(jìn)行視頻數(shù)據(jù)編碼,最后基于RTMP協(xié)議傳輸視頻數(shù)據(jù)。

      圖2 主程序流程圖Fig.2 Flow chart of the main program

      2.2.2 USB攝像頭視頻采集

      基于Linux V4L2的USB攝像頭視頻采集流程圖見圖3。

      圖3 V4L2視頻捕捉流程圖Fig.3 Flow chart of video capture based on V4L2

      在此視頻捕捉過程中,采用了內(nèi)存映射的方式,提高了視頻原始數(shù)據(jù)的采集速度。由于V4L2在FFmpeg中已經(jīng)封裝好了對應(yīng)函數(shù),只需要調(diào)用即可,F(xiàn)Fmpeg中V4L2部分的函數(shù)調(diào)用步驟見圖4。

      圖4 視頻捕捉函數(shù)調(diào)用流程圖Fig.4 Flow chart of function call about video capture

      2.2.3 視頻編碼

      H.264是國際標(biāo)準(zhǔn)化組織和國際電信聯(lián)盟共同提出的新一代數(shù)字視頻編碼算法,它是當(dāng)前在視頻監(jiān)控設(shè)備中運(yùn)用最廣泛的。H.264具有抗誤碼特性強(qiáng)、丟包率高自適應(yīng)調(diào)節(jié)的特點(diǎn),而且在干擾嚴(yán)重的信道中也能有很好的表現(xiàn)。因此本文設(shè)計(jì)的系統(tǒng)采用H.264視頻編碼算法。

      目前,基于H.264標(biāo)準(zhǔn)的編碼器主要分為硬件解碼器和軟件解碼器,為節(jié)約成本,本文采用軟件編碼器。H.264軟件編碼器主要有JM、T264、X264。

      JM:實(shí)現(xiàn)了H.264算法標(biāo)準(zhǔn)的所有要求,但其程序結(jié)構(gòu)復(fù)雜,編碼復(fù)雜度很高,不實(shí)用。

      T264:由T264編碼器編碼的視頻數(shù)據(jù)只能由T264進(jìn)行解碼,因此其通用性較弱。

      X264:開源且注重實(shí)用。在基本不降低編碼性能的前提下,計(jì)算復(fù)雜度卻低于前兩者,源代碼結(jié)構(gòu)類似于Linux系統(tǒng)源代碼,適合于Linux程序員使用,并且軟件更新頻率比較高。

      基于以上對比,本系統(tǒng)采用X264作為視頻的軟件編碼器。

      基于X264編碼器的視頻編碼流程圖見圖5。

      圖5 視頻編碼流程圖Fig.5 Flow chart of video encoding

      由于FFmpeg中集成多種編碼器于一體,其中也支持X264編碼器,但是對于不同編碼器,其函數(shù)調(diào)用卻相同。FFmpeg中視頻編碼部分的函數(shù)調(diào)用步驟見圖6。

      圖6 視頻編碼函數(shù)調(diào)用流程圖Fig.6 Flow chart of function call about video encoding

      2.2.4 視頻傳輸

      視頻傳輸部分基于RTMP協(xié)議,主要實(shí)現(xiàn)過程分為握手、建立網(wǎng)絡(luò)連接、建立網(wǎng)絡(luò)流3個(gè)步驟。FFmpeg中基于RTMP協(xié)議傳輸H.264壓縮視頻的函數(shù)調(diào)用步驟見圖7。

      圖7 RTMP數(shù)據(jù)發(fā)送函數(shù)調(diào)用流程圖Fig.7 Flow chart of function call about RTMP data-sending

      2.3 云端服務(wù)器設(shè)計(jì)方案

      本系統(tǒng),采用了杭州奧點(diǎn)科技有限公司的云服務(wù)器,該公司主要為客戶提供流媒體直播、智能通訊等PaaS云平臺服務(wù)。該公司的流媒體直播服務(wù)LSS(Live Streaming Service)可適用于遠(yuǎn)程視頻監(jiān)控服務(wù)。

      若購買奧點(diǎn)云500 M以上的云流媒體服務(wù),就可使一千個(gè)用戶同時(shí)使用,配置先進(jìn)。如果選用該公司的流媒體服務(wù),只需要花費(fèi)很短的時(shí)間,就能在業(yè)務(wù)系統(tǒng)中運(yùn)行,并且奧點(diǎn)云服務(wù)器在網(wǎng)絡(luò)節(jié)點(diǎn)貨服務(wù)器發(fā)生故障時(shí),不會導(dǎo)致用戶無法訪問,實(shí)時(shí)監(jiān)控并檢測著各個(gè)服務(wù)環(huán)節(jié),確保服務(wù)器正常運(yùn)行。這給開發(fā)者帶來了便利。

      鑒于以上優(yōu)點(diǎn),本系統(tǒng)租用了10 GB直播流量,10 GB點(diǎn)播流量,10 GB存儲容量的套餐。此云服務(wù)器只需輸入RTMP輸出流地址,即自動生成HTML語言,用戶可在遠(yuǎn)程訪問并錄制視頻。

      3 系統(tǒng)測試

      3.1 系統(tǒng)測試平臺

      系統(tǒng)的嵌入式平臺選用友善之臂公司的NanoPC開發(fā)系統(tǒng),嵌入式系統(tǒng)內(nèi)核版本采用Linux-3.5,交叉編譯工具選用arm-linux-gcc-4.5.1,編碼器版本為x264-snapshot-20141218-2245,接收端是云服務(wù)器端。本系統(tǒng)采用了NFS網(wǎng)絡(luò)文件系統(tǒng),有助于開發(fā)時(shí)的調(diào)試,調(diào)試時(shí)宿主機(jī)為Linux虛擬機(jī),通過RS232串口輸出調(diào)試信息。

      3.2 測試結(jié)果分析

      首先連接好硬件平臺,掛載NFS文件系統(tǒng),并且設(shè)置Linux虛擬機(jī)與ARM開發(fā)板在同一個(gè)網(wǎng)段下并且能ping通網(wǎng)絡(luò),則說明網(wǎng)絡(luò)連接正確;當(dāng)插入U(xiǎn)SB攝像頭后,在終端運(yùn)行cat /dev/video15命令,若有數(shù)據(jù)輸出則表明當(dāng)前USB攝像頭驅(qū)動在當(dāng)前Linux中運(yùn)行正確。當(dāng)主程序運(yùn)行后,登錄云服務(wù)器網(wǎng)頁就可看見實(shí)時(shí)視頻播放效果,見圖8。

      經(jīng)過多次實(shí)驗(yàn)測試,在編碼640×480分辨率的實(shí)時(shí)視頻時(shí),在最大編碼速度情況下本系統(tǒng)可達(dá)到20 fps的碼率,基本滿足了實(shí)時(shí)性的要求。

      圖8 戶外實(shí)時(shí)視頻畫面Fig.8 Real-time video outdoors

      4 結(jié) 論

      本系統(tǒng)采用了三星Exynos4412四核處理器作為控制芯片,以云服務(wù)器為基礎(chǔ),設(shè)計(jì)了一種基于H.264的云端視頻監(jiān)控系統(tǒng),系統(tǒng)運(yùn)行于友善之臂NanoPC開發(fā)系統(tǒng)之上,通過移植Linux操作系統(tǒng),F(xiàn)Fmpeg音視頻處理庫,X264編碼庫,使用RTMP網(wǎng)絡(luò)協(xié)議,實(shí)現(xiàn)了視頻的實(shí)時(shí)編碼與云端的顯示。實(shí)驗(yàn)過程中,發(fā)現(xiàn)長時(shí)間的視頻監(jiān)控會導(dǎo)致視頻延遲比較嚴(yán)重,這是由于視頻采集端與接收端時(shí)間戳的設(shè)計(jì)不理想,今后將對此缺陷深入的研究與實(shí)踐。

      [1]畢厚杰. 新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M]. 北京: 人民郵電出版社,2005.

      [2]熊永華, 張因升, 陳 鑫, 等. 云視頻監(jiān)控系統(tǒng)的能耗優(yōu)化研究[J]. 軟件學(xué)報(bào), 2015, (3):680-698.

      [3]張洪濤, 王 洋, 毛洪飛, 等. 基于H.264的嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J]. 湖北工業(yè)大學(xué)學(xué)報(bào), 2010, (5): 11-13.

      [4]Nano PC User’s Manual[EB/OL]. http://www.arm9.net, 2013.

      [5]Samsung Electronics. Exynos4412 SCP RISC Microprocessor User’s Manual(revision 0.10)[EB/OL]. http:// www.samsung.com, 2012.

      [6]韋東山. 嵌入式Linux應(yīng)用開發(fā)完全手冊[M]. 北京: 人民郵電出版社, 2008.

      [7]陳海燕, 任松巖. 嵌入式Linux根文件系統(tǒng)的研究[J]. 現(xiàn)代電子技術(shù), 2010, (4): 73-75.

      [8]Wikipedia.FFmpeg[EB/OL]. http://en.wikipedia.org/wiki/FFmpeg.[9]孫艷茹,沈永良.基于相位相關(guān)匹配法的圖像復(fù)原技術(shù)[J].黑龍江大學(xué)工程學(xué)報(bào),2014,5(4):69-75.[10]Video for Linux Two API Specification(revision 3.19)[EB/OL].http://www.linuxtv.org, 2014.

      Design of cloud video surveillance system based on H.264

      AI Bo-Wen, SHEN Yong-Liang*, ZHANG Jin-Fu

      (School of Electronic Engineering, Heilongjiang University, Harbin 150080, China)

      A design method of the video surveillance system based on H.264 and cloud server is proposed. It is a distributed monitoring system which separates the video capture and monitor control into two parts. The software design of video capture part using a central processing unit from Samsung named Exynos4412 is based on the Linux real-time operating system. The real-time encoding of video uses FFmpeg solution which encodes the video captured by USB camera based on H.264 and then transmits it by real time messaging protocol through the Internet. The control and monitoring system is based on cloud server, adopting the live streaming server. It has the function of real-time decoding, real-time playing and storage. According to the test results, the system has good real-time capability and meets the need of design requirement.

      H.264; cloud server; video surveillance; FFmpeg

      10.13524/j.2095-008x.2015.04.067

      2015-07-14;

      2015-08-05

      2015年黑龍江大學(xué)研究生創(chuàng)新科研項(xiàng)目(YJSCX2015-019HLJU)

      艾博文(1991-),男,江蘇常熟人,碩士研究生,研究方向:智能儀器和智能測控技術(shù),E-mail:252719278@qq.com;*通訊作者:沈永良(1964-),男,黑龍江雙鴨山人,教授,博士,研究方向:圖像檢測與測控儀表,E-mail:shen-yl@163.com。

      TP277

      A

      2095-008X(2015)04-0068-05

      猜你喜歡
      函數(shù)調(diào)用流程圖編碼器
      基于C語言的數(shù)學(xué)菜單的設(shè)計(jì)與實(shí)現(xiàn)
      基于FPGA的同步機(jī)軸角編碼器
      基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
      探討C++編程中避免代碼冗余的技巧
      Unity3D項(xiàng)目腳本優(yōu)化分析與研究
      中國新通信(2017年1期)2017-03-08 03:12:21
      基于PRBS檢測的8B/IOB編碼器設(shè)計(jì)
      專利申請審批流程圖
      河南科技(2016年8期)2016-09-03 08:08:22
      專利申請審批流程圖
      河南科技(2016年6期)2016-08-13 08:18:29
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      寧??h村級權(quán)力清單36條
      綦江县| 尖扎县| 成武县| 大渡口区| 长宁区| 松滋市| 剑河县| 岢岚县| 山阳县| 阿鲁科尔沁旗| 五莲县| 谷城县| 南川市| 茌平县| 安达市| 嘉定区| 嵊州市| 闽侯县| 全椒县| 丽水市| 铜山县| 宁武县| 探索| 禄丰县| 汶川县| 阿瓦提县| 保山市| 信宜市| 九江县| 民乐县| 会同县| 龙南县| 安平县| 柳江县| 佳木斯市| 马边| 贵州省| 瓦房店市| 宜宾市| 象山县| 清涧县|