999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM的移動視頻監控系統設計

2016-03-15 19:47:06吳大中胡江浪
現代電子技術 2016年4期

吳大中 胡江浪

摘 要: 設計一種基于ARM的移動視頻監控系統,介紹嵌入式系統下視頻壓縮、編解碼庫的移植與應用,視頻流媒體的傳輸與控制。系統由視頻采集端和移動監控端組成,視頻采集端主要功能包括視頻數據采集、壓縮編碼、傳輸及控制;移動監控端采用Android智能手機借助3G無線網絡連接視頻采集端,從而實現遠程無線視頻監控功能。實驗結果表明,視頻圖像清晰、播放流暢、延時小且系統穩定可靠,達到了系統的設計要求。

關鍵詞: 嵌入式系統; 視頻監控; 流媒體; 視頻傳輸

中圖分類號: TN911.73?34 文獻標識碼: A 文章編號: 1004?373X(2016)04?0123?05

Abstract: A mobile video monitoring system based on ARM was designed. The video compression, coding, decoding library transplantation, and the transmission and control of stream media under the embedded system are introduced. The system consists of video data acquisition terminal and mobile monitoring terminal. The video data acquisition terminal includes video data acquisition, image compression coding, video transmission and control. The mobile monitoring terminal is connected with video acquisition terminal by means of Android smart phone via 3G wireless network to achieve the remote wireless video monitoring. Experimental results show the system is stable and reliable, its video image is clear; video play is fluent, time delay is short, which can meet the requirements of the system.

Keywords: embedded system; video monitoring; stream media; video transmission

視頻監控系統作為現代樓層、區域管理的重要手段,在維護社會治安、協助交通管制、家居安防等領域做出了巨大貢獻[1]。傳統的視頻監控設備大部分基于PC平臺,而PC機體積相對較大,移動性差,不適合隨身攜帶。近些年來,隨著移動通信技術及流媒體技術的不斷發展,人們對視頻監控提出了新的需求,移動遠程視頻監控系統應運而生。相比傳統的視頻監控系統,移動視頻監控具有體積小、使用便捷、高效、覆蓋范圍廣、實時性強等優點[2]。視頻數據信息量非常大,對網絡帶寬的要求較為苛刻,因此視頻數據在傳輸之前必須對其進行壓縮編碼處理,減少視頻傳輸中網絡負擔。由于移動視頻監控系統通過無線網絡傳輸視頻信號,盡管視頻數據經過壓縮處理,但考慮到無線信道的復雜性及傳輸帶寬的不穩定性,在視頻信號傳輸過程中難免會出現數據包的丟失,進而導致接收端視頻解碼質量的下降。因此,本文利用流媒體技術對視頻數據進行打包處理,實時監控網絡環境并反饋給視頻發送端,本文在此基礎上設計并實現了基于ARM的移動實時視頻監控系統。

1 系統總體設計

本文設計并實現了采用三星S3C6410微處理器芯片作為主控制器的移動實時視頻監控系統。移動視頻監控系統包括硬件系統和軟件系統。操作系統基于嵌入式Linux?2.6.30.4操作系統,硬件部分以S3C6410微處理器為核心,利用高清攝像頭實現視頻采集,無線網絡實現視頻傳輸,手機端實時解碼顯示的功能。系統軟件部分主要由應用軟件、根文件系統、Linux系統內核、硬件驅動程序、Bootloader引導程序組成,應用軟件負責視頻采集、壓縮編碼及傳輸;系統硬件部分包括嵌入式ARM微處理器芯片,SDRAM,FLASH,LED警示燈及各種外圍電路接口。系統采用USB接口攝像頭采集視頻數據,視頻處理模塊對視頻進行壓縮編碼,3G無線發射模塊完成視頻數據的傳輸,系統總體框圖如圖1所示。

2 系統硬件設計

系統硬件平臺包括視頻采集前端和移動監控端兩部分。視頻采集前端包括核心板模塊、視頻采集模塊、視頻數據壓縮處理模塊、液晶顯示模塊、無線傳輸模塊、數據存儲模塊及電源模塊;移動監控端采用Android智能手機作為實時監控設備。視頻監控前端硬件組成結構如圖2所示。

本系統利用S3C6410微處理器接收、控制攝像頭采集的視頻信號,利用開源多媒體編/解碼器進行基于H.264編碼標準的壓縮編碼;SDRAM用于系統程序的加載及應用程序中間數據的存儲;NAND FLASH用于存儲系統固化程序,例如Bootloader系統引導程序、Linux操作系統等;SD存儲卡用于存儲壓縮后的視頻數據;3G無線發射模塊用于發送壓縮編碼后的視頻數據。

2.1 S3C6410微處理器模塊

S3C6410是韓國三星公司設計的16/32位的RISC微處理器,基于ARM 1176JZF?S內核,最高主頻可達667 MHz,具有獨立的Load/Store和8級流水線設計,集成了多格式的編解碼器(MFC),支持MPEG4/H.263/H.264格式編解碼,是一個低成本、低功耗、高性能的應用型微處理器[3],非常適合多媒體應用程序的開發。

2.2 視頻采集模塊

采用OMNIVISION公司生產的OV2640芯片作為CMOS數字圖像傳感器,該芯片向S3C6410提供SCCB和Camera Interface接口,支持YUV420P格式輸出,另外其內部集成了模/數轉換器和圖像傳感器。其實現原理是通過外界環境的圖像投射到內部的圖像傳感器上,圖像傳感器完成光電轉化,將光信號轉換為電信號后,通過其內部的模/數轉換器轉化為數字信號經DSP芯片處理后,通過USB接口輸出。OV2640和S3C6410接口的連接線如圖3所示。OV2640的DATA[7:0]與S3C6410的CAMDATA[7:0]相連,實現兩者之間的數據傳輸。OV2640的系統時鐘SCLK與S3C6410的CAMCLK相連,用來解決傳輸數據時,同步時鐘信號。S3C6410通過I2C總線對OV2640內部寄存器進行讀/寫來控制該芯片。

2.3 3G無線傳輸模塊

本文選用的無線傳輸模塊AD3812是中興公司推出的3G無線傳輸模塊,該模塊支持WCDMA/CDMA 2000等多種制式[4],上傳速率可達2 Mb/s,下載速率最高可達7.2 Mb/s。該3G無線模塊提供SPI和SDIO接口,通過其中一個接口將視頻信息傳輸給遠程的Android手機端。選擇聯通WCDMA網絡作為無線傳輸網絡,相比另外兩家電信運營商,聯通3G網絡上/下行速率更快,如表1所示。

3 系統軟件設計

系統以嵌入式Linux操作系統作為應用軟件運行環境,使用U?boot作為系統引導程序,系統內核采用Linux?2.6.30.4版本,Linux系統的根文件系統選用yaffs2文件系統。針對不同應用開發平臺對操作系統內核進行裁剪、移植、配置,使Linux系統適用于硬件開發平臺。其中應用程序是整個系統最重要的組成部分,而應用程序中以視頻壓縮編碼、視頻流傳輸控制、視頻解碼三部分最為重要,下面重點闡述應用軟件的總體設計、編碼庫的移植、流媒體傳輸及移動端視頻解碼程序設計。

3.1 軟件總體設計

視頻信號的數據量非常大,必須對其壓縮編碼處理,使之適合信道傳輸,減少視頻存儲空間。H.264視頻編碼標準因其獨有的網絡適應性、豐富的編解碼算法得到了廣泛地使用。本文正是基于H.264編碼標準的X264編解碼庫實現對采集視頻的壓縮編碼。對于壓縮編碼處理后的視頻數據通過RTP/RTCP流媒體傳輸協議將其打包,借助UDP/IP協議實現視頻流的IP格式封裝后,通過3G無線網絡將視頻數據發送到移動端。移動端接收H.264格式視頻碼流,利用FFmpeg開源編解碼庫實現視頻碼流的解碼與播放。視頻傳輸流程如圖4所示。

3.2 視頻采集

V4L2(Video Four Linux Two)是Linux系統內核中的一種通用的視頻設備驅動,不同廠家的視頻設備只要滿足UVC(USB Video Class)標準即可在Linux系統下使用,可以通過在Linux下使用命令lsusb查看該設備是否可以在Linux系統下使用。如果Linux系統下不支持該類視頻設備,需要編寫視頻設備的驅動程序,可以選擇加載視頻驅動程序到系統中或以模塊的方式掛載.ko驅動程序。視頻設備在用戶空間通過調用各種ioctl()函數完成對采集設備的設置。Linux下應用程序獲取采集視頻數據主要通過read/write和內存映射兩種方式,其中read/write方式在系統所在內核空間不斷拷貝數據到用戶空間,此種方式相對簡單,但耗費大量的系統資源,效率比較低。內存映射方式通過把系統內核空間地址直接映射到用戶空間,采用mmap()函數進行內存的映射,用戶直接操作內存空間即可,避免了數據從內核空間拷貝到用戶空間[5?6]。視頻采集主要函數及控制命令如下:

(1) open(“/dev/video0”,O_RDWR):打開視頻設備文件,此處可以選擇以阻塞方式或者非阻塞方式打開視頻采集設備,此處以阻塞方式打開視頻設備。

(2) VIDIOC_QUERYCAP:取得設備的capability,查詢視頻設備是否具備音視頻輸入/輸出功能。

(3) VIDIOC_S_INPUT:選擇視頻輸入格式,可以選擇單輸入模式或多輸入模式。

(4) VIDIOC_S_FMT:視頻制式及幀格式設置。

(5) VIDIOC_REQBUFS:分配視頻存放內存。

(6) VIDIOC_STREAMON:開始視頻數據的采集。

(7) VIDIOC_DQBUF:從內存空間讀取視頻數據。

(8) VIDIOC_QBUF:釋放內存空間并把內存空間放回緩存隊列,等待重新獲取視頻數據。

(9) VIDIOC_STREAMOFF:停止視頻采集程序。

其中V4L2的視頻采集操作流程如圖5所示。關于視頻屬性、幀格式、視頻捕獲格式、視頻設備支持的詳細參數設置可以通過查詢V4L2手冊,此處不再贅述。

3.3 X264編碼庫移植

本文采用X264開源編碼庫對采集視頻進行壓縮編碼。X264是開源的視頻編碼庫,用于對采集的視頻數據進行H.264標準格式的壓縮編碼,H.264支持幀內預測、幀間預測、多幀預測、熵編碼及多模式運動估計技術,在相同圖像條件下H.264編碼壓縮后的數據量相比MPEG4提高了約55%,使得視頻信號更易于通過無線網絡傳輸[7]。另外X264編碼庫相比JM,T264編碼庫而言簡潔、高效、更注重實用性,拋棄了對視頻編碼影響較小而計算復雜度較大的算法實現部分。H.264編碼結構框圖如圖6所示。

X264編碼庫的移植基本步驟如下:

(1) 首先在宿主機中建立交叉編譯環境,下載X264開源編碼庫,本文采用的是x264?snapshot?20120423?2245版本庫文件,交叉編譯器采用arm?linux?gcc 4.3.3,解壓該庫文件到特定目錄下,這里選擇目錄為/usr/local/x264。

(2) 命令行狀態下輸入./configure??host=arm?linux??prefix=/usr/local/x264 ?enable?shared ??disable?asm;進行運行環境配置。

(3) 修改config.mak文件中cc=gcc為cc=arm?linux?gcc;LD=gcc?o為LD=arm?linux?gcc?o;ar=ar rc改為ar=arm?linux?ar rc;ranlib=ranlib改為ranlib=arm?linux?

ranlib。

(4) 命令行狀態下輸入make; make install;在/usr/local/x264目錄下生成libx264可執行文件,復制該文件到ARM目標板,移植結束。

3.4 視頻流媒體傳輸

對于壓縮編碼處理后的視頻數據,通過RTP/RTCP流媒體實時傳輸協議將其打包,借助UDP/IP協議實現視頻流的IP格式封裝后,通過WiFi無線網絡將視頻數據發送到移動端。本方案使用的RTP/RTCP協議是一種實時傳輸控制協議,實時傳輸協議(Real?time Transport Protocol,RTP)是一種提供點對點或者點對多點傳輸服務的實時傳輸協議[8?9]。但它本身無法為按順序傳輸的數據包提供可靠的傳輸機制、流量控制及擁塞控制。它利用實時傳輸控制協議(Real?time Transport Control Protocol, RTCP)來對擁塞及流量控制提供支持。本文采用JRTPLIB?3.9.1版本開源函數庫來實現RTP/RTCP的實時傳輸。JRTPLIB是利用C++面向對象語言實現的開源RTP/RTCP函數庫,采用其中的庫函數可以開發出高質量的視頻傳輸應用程序。由于軟件實現需要在嵌入式ARM平臺上運行,因此需要對JRTPLIB庫針對ARM平臺進行裁剪、優化、交叉編譯。由于JRTPLIB庫需要jthread包的支持,首先下載jthread?1.3.1壓縮包及arm?linux?gcc?4.3.3交叉編譯器,解壓JRTPLIB庫和jthread包至特定安裝目錄,在Linux命令行狀態下對相關參數進行設置,編碼安裝即可。RTP包傳輸流程圖如圖7所示。

3.5 視頻解碼

Android手機端視頻解碼采用FFmpeg編解碼庫實現對基于RTP/RTCP協議傳輸的H.264視頻碼流的解碼[10]。FFmpeg提供音視頻編解碼、錄制、轉化、解碼視頻的縮放及音視頻流化的完整解決方案。FFmpeg支持FLV,MPEG,DV等多種編碼格式,以及MPEG,AVI,ASF和H.264等90多種解碼格式。由于Android系統自帶的OpenCore多媒體框架支持的多媒體格式有限,因此本文采用FFmpeg作為系統視頻流的解碼方案。而FFmpeg開源解碼庫并不能直接運行在Android平臺,需要對FFmpeg庫進行裁剪移植,使之適用于Android平臺。FFmpeg庫移植過程中要注意config.h和config.mak兩個文件進行配置參數的修改,移植完成后產生libffmpeg.so動態鏈接庫文件,Android平臺Java層通過JNI(Java Native Interface,JNI)方式調用動態鏈接庫實現對視頻碼流解碼[11?12]。解碼視頻流為YUV420格式,Android系統無法直接顯示,使用sws_scale()函數對YUV420格式轉為RGB格式,Android系統可以直接對RGB格式圖像渲染顯示。

其中解碼過程中涉及的主要函數功能描述如下:

(1) avcodec_init():初始化libavformat/libavcodec解碼庫,申請解碼需要的內存空間,為接下來解碼做準備。

(2) av_register_all():注冊所有的編解碼器以及解析器、碼流過濾器,實現對特定碼流格式的編解碼。

(3) av_open_input_file():打開輸入的視頻碼流文件。

(4) av_find_stream_info():從文件中提取碼流信息,利用AVFormatContext結構體輸出視頻對應的碼流參數信息。

(5) codec_type_video():查找對應的視頻流格式。

(6) avcodec_find_decoder():查找對應的解碼器。

(7) avcodec_open():打開對應編解碼器。

(8) avcodec_alloc_frame():為將要解碼視頻幀分配內存空間,存儲解碼后視頻數據。

(9) av_read_frame():從視頻碼流中不斷提取視頻幀數據,為下一步的解碼作準備。

(10) avcodec_decode_video():進行幀的類型的判定并根據需要進行幀格式轉化后保存。

(11) avcodec_close():完成視頻編解碼,釋放解碼器。

(12) av_close_input_file():關閉輸入的視頻碼流文件,停止解碼視頻文件。

4 系統測試

在本次實驗中,視頻采集前端采用基于ARM 1176JZF?S內核的實驗板,手機端測試系統為Android 4.1系統。在Android手機應用程序窗口輸入遠端實驗板的IP地址及端口號,實現手機與實驗板連接。視頻采集端監控畫面如圖9所示。鑒于3G無線網絡的不穩定性,系統在無線網絡不同上行速率的情況下對視頻數據壓縮率、傳輸時間進行了測試。表2為采用聯通WCDMA網絡傳送視頻數據時,視頻采集端數據壓縮率及數據傳輸時間。

5 結 語

本文設計并實現了一種基于嵌入式ARM平臺和3G網絡的移動視頻監控系統,分別在PC端和手機端實現了視頻的解碼與播放。PC端利用VLC播放器實現H.264視頻流的解碼與播放,針對Android平臺開發手機端視頻監控應用程序,監控效果如圖10所示。

實驗結果表明,系統在3G網絡覆蓋條件下幀率可達20 f/s,圖像清晰、播放流暢,能夠滿足遠程移動視頻監控的要求。相對目前市場上類似的設備,本文提出的基于ARM的移動實時視頻監控系統,體積小、結構簡單、成本低,具有廣闊的市場應用前景。

參考文獻

[1] 盧秋波.視頻監控技術簡介與發展趨勢[J].安防科技,2007 (5):21?23.

[2] 賀禮,唐倫,陳前斌,等.移動視頻監控系統的設計與實現[J].電視技術,2007,31(6):59?62.

[3] Samsung Electronics. S3C6410x32?bit RISC microprocessor user manual (revision 1.2). [EB/OL]. [2011?08?10]. http://www.samsung.com.

[4] 張成偉,程文青,黑曉軍.基于Android平臺的3G移動網絡測量研究及性能分析[J].計算機科學,2015,42(2):24?28.

[5] 黃俊偉,巴義.基于V4L2移動視頻監控系統的設計[J].電視技術,2012,36(17):159?161.

[6] 錢華明,劉英明,張振旅.基于S3C2410嵌入式無線視頻監控系統的設計[J].計算機測量與控制,2009,17(6):1132?1134.

[7] 楊宇,何小海,呂瑞.基于H.264標準的碼率控制算法[J].計算機應用,2009,29(3):675?680.

[8] 陳明,梁興東,吳一戎.基于H.264的嵌入式無線視頻監控系統[J].微計算機信息,2008,24(14):10?12.

[9] 賀禮,陳前斌,唐倫,等.基于3G無線網絡實時傳輸MPEG?4流媒體的設計與實現[J].計算機應用研究,2008,25(6):1856?1859.

[10] 胡成,任平安,李文莉.基于Android系統的FFmpeg多媒體同步傳輸算法研究[J].計算機技術與發展,2012,21(10):85?88.

[11] 劉誠,段紅光,巴義.基于Android移動視頻監控系統客戶端的研究與設計[J].電視技術,2013,37(4):86?87.

[12] ??》?基于Android的智能視頻監控系統的研究與實現[D].武漢:武漢科技大學,2013.

主站蜘蛛池模板: 四虎永久在线视频| 99精品视频在线观看免费播放| 亚洲 日韩 激情 无码 中出| 制服丝袜国产精品| 日本午夜三级| 97无码免费人妻超级碰碰碰| 国产另类视频| 免费a级毛片视频| 狠狠色噜噜狠狠狠狠奇米777| 中文字幕乱码中文乱码51精品| 无遮挡一级毛片呦女视频| 色综合中文| 成人日韩视频| 亚洲精品高清视频| 欧美日韩另类国产| 精品一区二区三区中文字幕| 幺女国产一级毛片| 人妻出轨无码中文一区二区| 国产97色在线| 成人综合网址| 亚洲综合片| 99久久国产精品无码| 天天做天天爱夜夜爽毛片毛片| 国产欧美视频综合二区| 国产高清国内精品福利| 亚洲天堂视频网站| 久久久噜噜噜久久中文字幕色伊伊 | 日韩国产一区二区三区无码| 日本伊人色综合网| 丁香亚洲综合五月天婷婷| 亚洲小视频网站| 亚洲视屏在线观看| 国产在线视频福利资源站| 午夜福利在线观看入口| 女人毛片a级大学毛片免费| 国产精品福利在线观看无码卡| 精品久久综合1区2区3区激情| 欧美精品黑人粗大| 黄色网在线免费观看| 国产99免费视频| 精品一区二区三区波多野结衣 | 在线观看av永久| 精品视频福利| 国产日本欧美在线观看| 亚洲精品中文字幕无乱码| 亚洲六月丁香六月婷婷蜜芽| 蜜桃视频一区| 日韩一区二区在线电影| 亚洲午夜久久久精品电影院| 欧美亚洲欧美| a级毛片在线免费| 四虎永久在线| 思思热在线视频精品| 亚洲高清国产拍精品26u| 欧美成人精品在线| 国产av一码二码三码无码| 国产96在线 | 亚洲黄色激情网站| 国产v精品成人免费视频71pao| 日韩精品无码免费一区二区三区 | 国产又爽又黄无遮挡免费观看 | 精品久久高清| 激情无码视频在线看| 亚洲AV无码乱码在线观看裸奔| 亚洲欧美日韩中文字幕在线一区| 国产浮力第一页永久地址| 全部免费毛片免费播放| 国产一区二区三区免费| 亚洲欧美日韩视频一区| 亚洲成a∧人片在线观看无码| 久久人体视频| 萌白酱国产一区二区| 波多野结衣在线se| 国产人人射| 在线国产综合一区二区三区| 这里只有精品在线| 国产精品一区二区在线播放| 欧美色视频在线| 国产成人三级| 无码专区第一页| 精品综合久久久久久97| 亚洲一区二区约美女探花|