亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ARM11的嵌入式視頻傳輸系統(tǒng)的實現(xiàn)

        2013-06-29 01:47:34陳宗成鄧華秋
        電視技術(shù) 2013年9期
        關(guān)鍵詞:播放器嵌入式編碼

        陳宗成,鄧華秋

        (華南理工大學(xué)理學(xué)院物理系,廣東 廣州 510640)

        隨著圖像處理技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,視頻監(jiān)控系統(tǒng)大致經(jīng)歷了三個發(fā)展階段,前兩代分別以黑白電視為代表的模擬監(jiān)控系統(tǒng)和以硬盤錄像機(jī)為代表的半數(shù)字化監(jiān)控系統(tǒng)[1],第三代視頻監(jiān)控系統(tǒng)是指以前端網(wǎng)絡(luò)視頻為代表的全數(shù)字視頻監(jiān)控系統(tǒng),視頻從前端的采集、壓縮、傳輸和瀏覽、存儲全部數(shù)字化。CCD和CMOS攝像頭為數(shù)字視頻采集提供便利。隨著視頻壓縮算法的發(fā)展,高壓縮比、還原能力強(qiáng)的壓縮算法不斷出現(xiàn),特別是伴隨著流媒體技術(shù)產(chǎn)生的H.264視頻壓縮技術(shù),為視頻的實時傳輸和實時瀏覽提供便捷。

        伴隨著數(shù)字化視頻監(jiān)控系統(tǒng)的到來,對視頻監(jiān)控系統(tǒng)的要求也不斷提高,要求實時可靠、操作簡單、功能豐富、經(jīng)濟(jì)適用等。而嵌入式系統(tǒng)的基本特點恰好滿足了以上要求,嵌入式視頻監(jiān)控系統(tǒng)應(yīng)運(yùn)而生。目前嵌入式視頻系統(tǒng)普遍采用BS架構(gòu),雖然實現(xiàn)起來簡單方便[2],卻不利于顯示端功能的升級和改進(jìn)。本文根據(jù)嵌入式視頻監(jiān)控系統(tǒng)的發(fā)展現(xiàn)狀,在ARM-Linux嵌入式系統(tǒng)上搭建監(jiān)控系統(tǒng)必須的軟件平臺,通過CS架構(gòu)實現(xiàn)視頻的采集、編碼、發(fā)送和顯示功能。編碼方面采用最新的H.264標(biāo)準(zhǔn),有效地降低了碼率,和MPEG-2和MPEG-4 ASP等標(biāo)準(zhǔn)相比,在同等圖像質(zhì)量下,采用H.264技術(shù)壓縮后的數(shù)據(jù)量只有MPEG-2的1/8,MPEG-4 的 1/3[3]。在視頻發(fā)送方面,采用協(xié)議 UDP/RTP/RTCP,既滿足視頻服務(wù)器所需的組播特性,又能通過RTP/RTCP協(xié)議保證流媒體的實時傳輸[4]。

        1 系統(tǒng)結(jié)構(gòu)

        本文在ARM-Linux嵌入式平臺實現(xiàn)遠(yuǎn)程視頻實時監(jiān)控系統(tǒng),利用現(xiàn)有的網(wǎng)絡(luò)設(shè)備,滿足用戶遠(yuǎn)程監(jiān)控的目的。需要實現(xiàn)的主要工作包括前端視頻采集、網(wǎng)絡(luò)傳輸和終端接收播放,主要功能總結(jié)如下:

        1)監(jiān)控前端設(shè)備通過COMS攝像頭實現(xiàn)視頻的采集;

        2)在ARM-Linux平臺對原始視頻數(shù)據(jù)編碼;

        3)前端服務(wù)器與客戶端通過局域網(wǎng)或者因特網(wǎng)實現(xiàn)視頻數(shù)據(jù)的組播發(fā)送;

        4)客戶端接受H.264視頻數(shù)據(jù),實時解碼播放。

        考慮到視頻監(jiān)控系統(tǒng)需要視頻的實時采集、編碼和發(fā)送,因此,需要集成度高、穩(wěn)定、實時性好的SoC系統(tǒng)。在綜合考慮成本的情況下,選擇三星公司S3C6410作為主控芯片。S3C6410是以功能強(qiáng)大的ARM11為核心的SoC芯片,使用廣州友善之臂技術(shù)有限公司開發(fā)的mini6410嵌入式平臺。整體硬件平臺如圖1所示。

        2 視頻采集、編碼及發(fā)送

        2.1 視頻采集

        圖1 系統(tǒng)硬件平臺

        利用V4L2接口函數(shù)獲取視頻幀數(shù)據(jù)有3種方式:直接通過read()函數(shù)讀取視頻幀,用戶指針方式,mmap內(nèi)存映射。本文通過內(nèi)存映射方式采集,采用這種方法讀取方便,而且省去了大量的內(nèi)存拷貝,效率較高,具體操作步驟如圖2 所示[5]。

        圖2 視頻采集流程

        2.2 視頻編碼

        本文利用S3C6410提供的MFC硬件編碼器對原始視頻數(shù)據(jù)進(jìn)行H.264格式編碼,與V4L2視頻采集操作相同,MFC進(jìn)行編碼時,絕大多數(shù)操作都是通過I/O control接口函數(shù)來完成的,S3C6410已經(jīng)提供了針對H.264視頻編碼的I/O control接口的封裝API函數(shù)。為了減小編程工作量,本文使用這些已經(jīng)比較穩(wěn)定的API函數(shù)進(jìn)行視頻編碼操作,主要步驟如下:

        1)初始化編碼句柄。在進(jìn)行編碼之前需要初始化一個編碼句柄handles,該變量是一個結(jié)構(gòu)體變量,其中存儲了視頻編碼的控制信息,初始化該結(jié)構(gòu)體的API函數(shù)是:void*SsbSipH.264EncodeInit(unsigned int uiWidth,unsigned int uiHeight,nsigned int uiFramerate,unsigned int uiBitrate_kbps,unsigned int uiGOPNum)。

        2)將編碼信息寫入MFC驅(qū)動層,初始化MFC硬件。完成這一工作的API函數(shù)是:int SsbSipH.264EncodeExe(void*openHandle)。

        3)獲取輸入緩存地址。通過函數(shù)void*SsbSipH.264EncodeGetInBuf(void*openHandle,long size)獲得內(nèi)核存儲原始數(shù)據(jù)的幀緩存地址。

        4)將原始視頻大小存入內(nèi)核緩沖區(qū)。通過memcpy函數(shù),將采集到的視頻數(shù)據(jù)發(fā)送該內(nèi)核驅(qū)動空間,用于MFC對視頻進(jìn)行編碼。

        5)對視頻數(shù)據(jù)進(jìn)行編碼。視頻編碼的API函數(shù)是:int SsbSipH.264EncodeExe(void*openHandle)。在進(jìn)行編碼時,有些編碼器會在每個關(guān)鍵幀前面都添加序列參數(shù)集(Sequence Parameter Set,SPS)和圖像參數(shù)集(Picture Parameter Set,PPS),造成無用的碼率增加。MFC只對第一幀H.264碼流上添加SPS和PPS。SPS和PPS中含有解碼所必須的參數(shù),包括幀頻、圖像大小等。

        6)獲取編碼后的幀緩存地址和大小。通過API函數(shù)GetOutBuf函數(shù)獲取編碼后視頻數(shù)據(jù)在內(nèi)核中的緩沖區(qū)地址。返回的編碼數(shù)據(jù),除了第一幀圖像外,每次緩沖區(qū)內(nèi)保存的都包含并且只包含一個完整的NAL單元;第一幀圖像編碼完成之后,緩沖區(qū)除了第一個NAL單元之外,還有序列參數(shù)集和圖像參數(shù)集2個NAL單元。

        7)將編碼數(shù)據(jù)放入環(huán)形存儲隊列。8)釋放資源,關(guān)閉編碼設(shè)備。

        2.3 視頻發(fā)送

        本系統(tǒng)采用流媒體最常用的RTP/RTCP協(xié)議發(fā)送視頻數(shù)據(jù)。編碼后的視頻數(shù)據(jù)按照RTP協(xié)議打包,并利用UDP協(xié)議對局域網(wǎng)組播。RTP協(xié)議的定位是應(yīng)用層協(xié)議,這樣便于擴(kuò)展。本文利用RTP的一個C++庫JRTPLIB進(jìn)行視頻發(fā)送,該庫封裝了網(wǎng)絡(luò)協(xié)議的配置,只要調(diào)用其中的API函數(shù)就可以輕易配置網(wǎng)絡(luò),不過JRTPLIB本身不是針對某一種實時數(shù)據(jù)的開發(fā)庫,因此,發(fā)送不同的數(shù)據(jù)流需要用戶根據(jù)相應(yīng)的協(xié)議進(jìn)行RTP的分包和打包。

        1)移植JRTPLIB到ARM平臺

        本系統(tǒng)使用的JRTPLIB版本是3.7.1。該C++庫是根據(jù)RTP標(biāo)準(zhǔn)RFC3550寫成的,支持Windows和類Linux操作系統(tǒng),為用戶提供了RTP頭和網(wǎng)絡(luò)配置接口,只要將需要傳輸?shù)臄?shù)據(jù)根據(jù)RTP協(xié)議進(jìn)行適當(dāng)修飾就可以輕易使用RTP協(xié)議發(fā)送數(shù)據(jù)。同時,JRTPLIB會自動發(fā)送RTCP控制信息到接收端。

        2)初始化RTP會話實例

        聲明三個變量:RTPSession rtpsess,RTPSessionParams sessionparams,RTPUDPv4TransmissionParams transparams。

        通過實例化類RTPSession建立RTP會話,RTP傳輸?shù)拇蠖鄶?shù)操作都是通過RTPSession對象提供的。同時,用到的2個參數(shù)類是RTPSessionParams和RTPUDPv4 TransmissionParams,分別用來設(shè)置RTP協(xié)議的頭信息和傳輸信息。

        3)對H.264視頻數(shù)據(jù)進(jìn)行RTP打包

        S3C6410的MFC對視頻進(jìn)行H.264編碼時,為了存儲到介質(zhì)上之后解碼器能夠區(qū)分每一個NAL單元,MFC在每一個NAL單元之前添加起始碼0x00000001,這也是H.264標(biāo)準(zhǔn)的建議[6],但是,實時遠(yuǎn)程播放系統(tǒng),解碼器會根據(jù)RTP時間戳區(qū)分不同的NAL單元,因此在發(fā)送數(shù)據(jù)之前需要去掉該起始碼。為了解碼器獲取序列信息和圖像信息,MFC在第一個NAL單元之前添加序列參數(shù)集和圖像參數(shù)集,這兩個參數(shù)集分別作為獨立的NAL單元與第一個視頻NAL單元形成一個數(shù)據(jù)組。MFC編碼后,輸出緩沖區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)如圖3所示。

        圖3 MFC輸出緩沖區(qū)中數(shù)據(jù)結(jié)構(gòu)

        為了將H.264視頻數(shù)據(jù)按照RTP協(xié)議傳輸,并且能夠讓接收端的解碼器能夠識別,需要有統(tǒng)一的標(biāo)準(zhǔn)對H.264數(shù)據(jù)打包和解包。本系統(tǒng)根據(jù)標(biāo)準(zhǔn) RFC3984[7]對H.264打包。

        4)發(fā)送視頻數(shù)據(jù)

        JRTPLIB調(diào)用RTPSession的成員函數(shù)完成發(fā)送:int SendPacket(const void*data,size_t len,uint8_t pt,bool mark,uint32_t timestampinc)。其中,data是打包完成的視頻數(shù)據(jù)首地址;len是待發(fā)送視頻數(shù)據(jù)長度;pt是發(fā)送的數(shù)據(jù)類型;mark是標(biāo)示位,本文用來標(biāo)示一個NAL單元的最后一個分包;timestampinc是時間戳的增量,由于每個NAL單元中的內(nèi)容都是在同一時刻采集的視頻數(shù)據(jù),發(fā)送同一個NAL單元分包期間,時間戳不變,該值為0。

        3 視頻的接收和播放

        本文在PC機(jī)上通過會話描述協(xié)議(Session Description Protocol,SDP)[8]文本與發(fā)送端通信,并使用 VLC 播放器解析該協(xié)議文本對視頻流實時播放。

        本系統(tǒng)利用BOA網(wǎng)絡(luò)服務(wù)器將SDP文件發(fā)送到接收端,BOA使用http傳輸協(xié)議。接收端的VLC播放器通過http協(xié)議接收SDP文件,然后對SDP文件解析,通過RTP協(xié)議接收并播放實時視頻數(shù)據(jù)。在PC端,使用VLC播放器通過http協(xié)議打開服務(wù)器端的SDP文件實時播放視頻。接收端PC環(huán)境為Intel Core 2 Duo處理器,2.67 GHz,1.75 Gbyte 內(nèi)存,視頻采集格式為 YUV420,大小480 ×272,幀頻30 f/s(幀/秒)。

        圖4a是單個VLC播放器實時播放效果圖,經(jīng)測試,播放延遲在0.5 s以內(nèi),考慮到傳輸延時和VLC播放器的緩沖,0.5 s以內(nèi)的延遲屬于正常。在視頻監(jiān)控期間,丟包率在0.3%以內(nèi)。圖4b是單個VLC播放器實時播放效果圖。圖4b是4個VLC播放器同時播放效果,表1為同時打開4個VLC播放器測得的數(shù)據(jù)。由于使用組播發(fā)送視頻數(shù)據(jù),同時打開多個播放器同時進(jìn)行播放,畫面清晰流暢,沒有明顯抖動,丟包率沒有沒有明顯增加。

        圖4 使用VLC播放器實時播放效果

        表1 4個VLC播放器信息

        4 結(jié)論

        隨著社會的發(fā)展,視頻監(jiān)控系統(tǒng)成為安防系統(tǒng)中越來越重要的監(jiān)控工具。近些年,網(wǎng)絡(luò)技術(shù)和視頻處理技術(shù)的不斷進(jìn)步,視頻監(jiān)控不斷向智能化、網(wǎng)絡(luò)化和集成化發(fā)展?;谝陨媳尘?,本文設(shè)計并實現(xiàn)了一款嵌入式實時視頻服務(wù)系統(tǒng)。在本文的完成過程中,使用了嵌入式技術(shù)、視頻壓縮編碼技術(shù)、流媒體實時傳輸技術(shù)、SDP會話描述協(xié)議和Web技術(shù),最終實現(xiàn)了基本功能。經(jīng)過測試,視頻播放流暢,支持多用戶同時在線播放,丟包率較低,達(dá)到了預(yù)期的設(shè)計目標(biāo)。

        [1]淺析視頻監(jiān)控系統(tǒng)發(fā)展歷程[EB/OL].[2012-07-20].http://wenku.baidu.com/view/4de33302e87101f69e3195a9.html.

        [2]楊曉姣,黃云霞.嵌入式視頻監(jiān)控系統(tǒng)視頻服務(wù)器的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2011(6):184-186.

        [3]胡興軍.視頻編碼標(biāo)準(zhǔn)H.264的技術(shù)革新及應(yīng)用[J].影像技術(shù),2009(1):24-27.

        [4]李長銀.基于UDP組播的分布式仿真系統(tǒng)實現(xiàn)[D].成都:電子科技大學(xué),2008.

        [5]白長青,陳沛.嵌入式終端基于Linux V4L2的圖像采集系統(tǒng)[J].信息技術(shù),2012(2):22-23.

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

        [7]RFC3984,RTP Payload Format for H.264 Video[S].2005.

        [8]王榮生.SDP協(xié)議在視頻點播系統(tǒng)中的應(yīng)用[J].計算機(jī)應(yīng)用與軟件,2005(1):74-76.

        猜你喜歡
        播放器嵌入式編碼
        基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
        《全元詩》未編碼疑難字考辨十五則
        子帶編碼在圖像壓縮編碼中的應(yīng)用
        電子制作(2019年22期)2020-01-14 03:16:24
        Walkman誕生40周年 索尼適時發(fā)布NW-ZX500和NW-A100系列播放器
        基于STM32的MP3播放器設(shè)計
        電子制作(2019年9期)2019-05-30 09:41:44
        Moon ACE播放器/放大器一體機(jī)
        Genome and healthcare
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        播放器背板注塑模具設(shè)計
        中國塑料(2015年8期)2015-10-14 01:10:55
        亚州精品无码人妻久久| 虎白女粉嫩粉嫩的18在线观看 | 美女视频永久黄网站免费观看国产| av男人的天堂手机免费网站| 国产一区二区三区视频地址| 极品少妇hdxx麻豆hdxx| 精品女同一区二区三区| 人人鲁人人莫人人爱精品| 四川老熟妇乱子xx性bbw| 亚洲Va中文字幕久久无码一区| 国内色精品视频在线网址| 女人18毛片aa毛片免费| 无码国内精品人妻少妇蜜桃视频| 久久人人爽人人爽人人片av东京热 | 欧美大屁股xxxx高潮喷水| 白又丰满大屁股bbbbb| 日本免费一区二区三区在线看| 91大神蜜桃视频在线观看| 亚洲精品偷拍自综合网| 久人人爽人人爽人人片av| 内射少妇36p九色| 亚洲欧美日韩中文综合在线不卡| 亚洲一区二区av免费观看| 精品福利一区二区三区| 精品人妻系列无码人妻漫画 | 日本a级免费大片网站| 亚洲精品少妇30p| 一夲道无码人妻精品一区二区| 女性女同性aⅴ免费观女性恋| 全部免费国产潢色一级| 麻豆激情视频在线观看| 国产精品一区二区三区专区| 日韩放荡少妇无码视频| 国产精品亚洲一区二区杨幂| 中文字幕亚洲日本va| 亚洲精选自偷拍一区二| 日韩精品久久久久久久电影蜜臀 | 春色成人在线一区av| 日本免费三片在线视频| 曰韩内射六十七十老熟女影视 | 精品国产亚洲亚洲国产|