• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于DM3730和GStreamer的網(wǎng)絡(luò)視頻傳輸技術(shù)設(shè)計(jì)與實(shí)現(xiàn)

    2014-05-15 02:41:10王洪偉
    應(yīng)用科技 2014年3期
    關(guān)鍵詞:插件嵌入式元件

    王洪偉

    民航黑龍江空管分局技術(shù)保障部,黑龍江哈爾濱 150001

    基于DM3730和GStreamer的網(wǎng)絡(luò)視頻傳輸技術(shù)設(shè)計(jì)與實(shí)現(xiàn)

    王洪偉

    民航黑龍江空管分局技術(shù)保障部,黑龍江哈爾濱 150001

    提出一種低帶寬通用的網(wǎng)絡(luò)傳輸視頻數(shù)據(jù)的方法,該方法的硬件采用德州儀器ARM+DSP雙核的視頻處理平臺;軟件使用基于流水線方式的多媒體框架GStreamer技術(shù),實(shí)現(xiàn)了視頻采集、H.264壓縮與網(wǎng)絡(luò)傳輸?shù)墓δ?;最后通過服務(wù)器將視頻顯示出來,服務(wù)器在Linux操作系統(tǒng)和Windows XP操作系統(tǒng)下都可以將攝像頭采集的視頻信息播放出來,達(dá)到遠(yuǎn)程傳輸實(shí)時(shí)監(jiān)控的效果。

    。DM3730;GStreamer;H.264編碼;網(wǎng)絡(luò)傳輸;視頻處理

    在社會生活中,人類對視頻服務(wù)需求越來越高,研究出一種既占用帶寬少又可以實(shí)時(shí)傳輸視頻數(shù)據(jù)的技術(shù)是非常必要的。尤其在民航行業(yè)內(nèi),外部偏遠(yuǎn)臺站較多,如果可以實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,對民航的保障將起到良好的輔助效果。

    DM3730是德州儀器公司開發(fā)的一款達(dá)芬奇技術(shù)的雙核系統(tǒng)芯片[1-3],達(dá)芬奇技術(shù)是一種專門為高效的數(shù)字視頻系統(tǒng)而設(shè)計(jì)的解決方案,軟件上通過H.264壓縮技術(shù)和GStreamer插件技術(shù)實(shí)現(xiàn)音視頻的開發(fā),H.264壓縮技術(shù)減少了數(shù)據(jù)量,降低了帶寬的使用,GStreamer技術(shù)是采用基于插件和管道的體系結(jié)構(gòu)[4-5],該技術(shù)中所有功能模塊都被實(shí)現(xiàn)成可以插拔的組件,能夠便捷地安裝到任意管道上,減少了代碼的重復(fù)編寫,從而提高了調(diào)試程序效率。

    1 視頻傳輸系統(tǒng)的整體設(shè)計(jì)

    如圖1所示,視頻傳輸系統(tǒng)總體是由2大部分構(gòu)成:一是攝像頭采集視頻,通過DM3730對視頻數(shù)據(jù)進(jìn)行H.264壓縮,再打包成UDP格式轉(zhuǎn)發(fā)到網(wǎng)絡(luò)上;二是服務(wù)器端經(jīng)過UDP接收數(shù)據(jù),然后解壓縮,最后通過顯示器顯示圖像信息。

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

    視頻傳輸系統(tǒng)的軟件基于Linux嵌入式操作系統(tǒng)[6-7]開發(fā),它的源碼公開,節(jié)省成本,另外還具有實(shí)時(shí)性強(qiáng)、安全性好、穩(wěn)定性高、廣泛的網(wǎng)絡(luò)和文件系統(tǒng)的支持等優(yōu)點(diǎn)。

    2 視頻傳輸系統(tǒng)的軟件設(shè)計(jì)

    2.1 嵌入式視頻采集的設(shè)計(jì)

    嵌入式視頻采集系統(tǒng)是由視頻采集、H.264壓縮[8-9]和UDP傳輸3部分組成,如圖2所示。

    圖2 嵌入式視頻采集過程

    視頻采集使用的是TVP5146M2視頻編解碼芯片,該芯片將視頻模擬信號轉(zhuǎn)換成數(shù)字信號,大大降低了嵌入式控制器對數(shù)據(jù)處理的時(shí)間;視頻壓縮方面,DM3730處理器的ARM端發(fā)出視頻數(shù)據(jù)壓縮的開始和結(jié)束命令,而DSP端做H.264壓縮,它們之間的數(shù)據(jù)可以通過共享內(nèi)存分別獲??;傳輸方面,將壓縮后的數(shù)據(jù)打包成UDP格式傳輸?shù)揭蕴W(wǎng)中。

    該部分程序是采用GStreamer軟件框架來實(shí)現(xiàn)視頻網(wǎng)絡(luò)傳輸?shù)模珿Streamer采用基于插件和管道的體系結(jié)構(gòu),在該體系結(jié)構(gòu)中所有的功能模塊都是獨(dú)立的,可以任意進(jìn)行插拔,因此可以很方便地接到任意的管道上運(yùn)行。

    在該傳輸管道中,視頻流要由源元件、修改視頻窗口尺寸元件、H.264壓縮元件和UDP傳輸元件等4個(gè)元件構(gòu)成,完成整個(gè)視頻采集壓縮網(wǎng)絡(luò)傳輸?shù)倪^程。首先,TVP5146M2視頻編碼解碼芯片將模擬信號變成數(shù)字信號,源元件從該芯片中得到視頻數(shù)據(jù),然后將視頻的窗口尺寸調(diào)整到需要的大小,再經(jīng)過H.264壓縮編碼,將數(shù)據(jù)量壓縮到帶寬可以接受的大小,最后傳給下游的UDP傳輸插件,指定目的IP地址和端口號,將視頻數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)上。

    傳輸管道插件的實(shí)現(xiàn)主要體現(xiàn)在以下幾個(gè)方面:1)使用v4l2src做視頻采集的插件;2)使用TIV-idResize插件修改視頻窗口大小;3)使用TIVidenc1插件進(jìn)行H.264壓縮編碼;4)使用udpsink插件進(jìn)行UDP傳輸。

    在DM3730嵌入式平臺上鍵入如下命令,實(shí)現(xiàn)以上的視頻傳輸過程:

    gst-launch-v v4l2src device =/dev/video0 !queue?。ideo/x-raw-y uv,width=720,height=576,format=

    (fourcc)UYVY'!queue!TIVidResize?。 ideo/x-raw-yuv,width=320,height=240'!queue!TIVidenc1 codecName=H264enc engineName=codec- Server!queue!rtpH264pay pt=96!queue!udp-sink host=192.168.1.106 port=5 000。

    其中,rtpH264pa,是對H.264壓縮后的數(shù)據(jù)封包成rtp格式;host=192.168.1.106,是目標(biāo)主機(jī)的IP地址;port=5 000,是目標(biāo)主機(jī)的UDP端口號;TIV-idResize和TIVidenc1是本系統(tǒng)針對DM3730開發(fā)的插件,TIVidResize主要實(shí)現(xiàn)流程如圖3所示。

    圖3 修改窗口大小主體函數(shù)流程

    TIVidResiz插件用于對輸入的視頻窗口大小做修改,主要編寫gst_tividresize_transform函數(shù),流程如下:

    1)開辟輸入輸出緩沖區(qū)。

    hInBuf=GST_TIDMAIBUFFERTRANSPORT_ DMAIBUF(src),hOutBu

    f=GST_TIDMAIBUFFERTRANSPORT_ DMAIBUF(dst);

    2)獲取上游元件的視頻數(shù)據(jù)。

    memcpy(Buffer_getUserPtr

    (hInBuf),GST_BUFFER_DATA(src),GST_ BUFFER_SIZE(src));

    3)創(chuàng)建修改窗口大小的句柄。

    vidresize->hRe

    size=Resize_create(&rszAttrs);

    4)執(zhí)行修改窗口大小函數(shù)。

    Resize_execute(vidresize->hResize,

    hInBuf,hOutBuf)。

    TIVidenc1主要實(shí)現(xiàn)流程如圖4所示。

    TIVidenc1插件用于對輸入的視頻數(shù)據(jù)進(jìn)行H.264壓縮編碼,主要編寫gst_tividenc1_chain函數(shù),流程為:

    1)初始化視頻編碼參數(shù),gst_tividenc1_init_vid-eo,獲取命令行中的引擎名稱engineName,編碼名稱codecName等參數(shù);

    2)獲取上游元件的視頻數(shù)據(jù),qBuf=gst_adapter_t ake_buffer(videnc1->sink Adapter,vi-denc1->upstream BufSize),將分配好的輸入緩沖區(qū)qBuf指向獲取上游的視頻數(shù)據(jù);

    3)H.264編碼,填入輸出緩沖區(qū),gst_tividenc1_ encode(vid enc1qBuf,&outBuf),在該函數(shù)中會調(diào)用接口函數(shù)Venc1_process將獲取的數(shù)據(jù)傳遞給DSP進(jìn)行H.264壓縮,然后將處理后的數(shù)據(jù)返回到ARM端的輸出緩沖區(qū)outBuf;

    4)將輸出緩沖區(qū)的數(shù)據(jù)傳送到下游的元件;gst_tividenc1_parse_and_push(videnc1,outBuf)。

    圖4 H.264壓縮編碼主體函數(shù)流程圖

    2.2 服務(wù)器接收顯示的設(shè)計(jì)

    服務(wù)器接收視頻過程框圖如圖5所示。通過在Ubuntu10.04 Linux操作系統(tǒng)和Windows XP操作系統(tǒng)上安裝 GStreamer插件[10-11],然后鍵入命令接收視頻數(shù)據(jù),經(jīng)過H.264解碼,最后顯示到顯示器上。

    圖5 服務(wù)器接收視頻過程

    在Ubuntu的超級終端下鍵入如下命令,可以實(shí)現(xiàn)上述過程:

    gst-launch-0.10-v udpsrc port=5000 caps="ap-plication/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96"!rtpH264depay!ffdec_H264!ffmpegcol-orspace!ximagesink sync=false。

    其中:port=5000表示本地 UDP端口 500;rt-pH264depay表示對rtp解包處理;ffdec_H264,表示對H.264壓縮數(shù)據(jù)進(jìn)行解壓;ffmpegcolorspace是對視頻格式校正,以適應(yīng)下游元件的顯示插件;ximag-esink是將視頻圖像顯示出來。

    在Windows XP操作系統(tǒng)中的DOS環(huán)境下鍵入如下命令,可以實(shí)現(xiàn)上述過程:

    gst-launch-v udpsrc port=5000caps="applica-tion/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96"!rtph264depay!ffdec_h264!ffmpegcolorspace!autovideosink。

    其中:port=5000表示本地UDP端口5000;rt-pH264depay表示對rtp解包處理;ffdec_H264表示對H.264壓縮數(shù)據(jù)進(jìn)行解壓;ffmpegcolorspace是對視頻格式校正,以適應(yīng)下游元件的顯示插件;au-tovideosink是將視頻圖像顯示出來。

    3 實(shí)驗(yàn)結(jié)果

    本實(shí)驗(yàn)是在實(shí)驗(yàn)室環(huán)境下,使用的DM3730硬件平臺如圖6所示。

    圖6 DM3730硬件平臺

    服務(wù)器端使用百兆網(wǎng)卡測試,Ubuntu10.04 Linux操作系統(tǒng)是在VMware Workstation虛擬機(jī)下安裝,使用橋接的方式虛擬出一個(gè)網(wǎng)卡,使其與DM3730平臺和Windows XP同處于一個(gè)局域網(wǎng)中。

    由于該系統(tǒng)采用的是GStreamer插件的形式,因此在2個(gè)操作系統(tǒng)中都安裝了GStreamer的相關(guān)軟件包,均支持 GStreamer的命令操作。圖 7是Linux系統(tǒng)下測試的效果,左側(cè)是視頻接收的執(zhí)行代碼,右側(cè)的是顯示的大小為320×240的實(shí)時(shí)視頻窗口;圖8是Windows XP系統(tǒng)下測試的效果,左側(cè)是采集視頻鍵入的執(zhí)行代碼,右上角是視頻接收的執(zhí)行代碼,右下角是顯示的大小為320×240的實(shí)時(shí)視頻窗口。

    圖7 Ubuntu10.04 Linux平臺下圖像實(shí)時(shí)顯示

    圖8 Windows XP平臺下視頻實(shí)時(shí)顯示

    4 結(jié)束語

    文中實(shí)現(xiàn)了一種基于DM3730平臺和GStreamer插件的視頻網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì),描述了該系統(tǒng)的總體架構(gòu)、硬件和軟件的實(shí)現(xiàn)方法,重點(diǎn)分析了攝像頭對信息的實(shí)時(shí)采集、修改視頻窗口大小,通過H.264壓縮編碼、UDP封包傳輸。實(shí)驗(yàn)結(jié)果表明本系統(tǒng)具有良好的實(shí)時(shí)性和可靠性,能夠滿足民航在偏遠(yuǎn)臺站的要求。

    [1]彭啟琮.達(dá)芬奇技術(shù)——數(shù)字圖像/視頻信號處理新平臺[M].北京:電子工業(yè)出版社,2008:9-50.

    [2]沈沛意,張亮,周夢.DAVINCI技術(shù)剖析及實(shí)戰(zhàn)應(yīng)用開發(fā)指南[M].西安:西安電子科技大學(xué)出版社,2012:15-100.

    [3]趙勇,袁譽(yù)樂,丁銳.DAVINCI技術(shù)原理與應(yīng)用指南[M].南京:東南大學(xué)出版社,2008:19-120.

    [4]劉尚麟,劉軍.Gstreamer RTP插件的改進(jìn)及應(yīng)用[J].信息安全與通信保密,2009(1):91-92.

    [5]陳洪敏.基于RTP/RTCP協(xié)議流媒體傳輸?shù)难芯浚跩].福建電腦,2010(2):8-14.

    [6]楊宗德,鄧玉春,曾慶華.Linux高級程序設(shè)計(jì)[M].北京:人民郵電出版社,2008:20-56.

    [7]陳立偉,王桐,楊蕾.零基礎(chǔ)學(xué)嵌入式Linux C編程[M].北京:機(jī)械工業(yè)出版社,2010:34-168.

    [8]王永剛.3G視頻監(jiān)控系統(tǒng)中的H.264編碼實(shí)現(xiàn)與應(yīng)用軟件開發(fā)[D].杭州:杭州電子科技大學(xué),2011:74-156.

    [9]李紹榮.H.264編碼器的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2011:25-69.

    [10]賀志強(qiáng).基于 GStreamer媒體播放器的研究與設(shè)計(jì)[D].成都:電子科技大學(xué),2009:58-162.

    [11]劉陽.基于GStreamer的機(jī)頂盒多媒體播放管理模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012:20-158.

    Design and implementation of network video transmission based on DM3730 and GStreamer technology

    WANG Hongwei
    Department of Technology Security,Air Traffic Management Bureau Heilongjiang Branch,Harbin 150001,China

    A general low bandwidth network transmission video data method was put forward in this paper.The hard-ware of the method is based on the platform of Texas instruments with dual core of ARM+DSP.The software em-ploys multimedia framework GStreamer technology based on the assembly line way,achieving the functions of video acquisition,H.264 compression and network transmission,and displaying video images by server.The video infor-mation collected by camera can be displayed by server on both Linux and Windows XP OS,achieving the goal of remote transmission and real-time monitoring.

    DM3730;GStreamer;H.264 encode;network transmit;video processing

    TP393

    A

    1009-671X(2014)03-0019-04

    10.3969/j.issn.1009-671X.201403014

    http://www.cnki.net/kcms/doi/10.3969/j.issn.1009-671X.201403014.html

    2014-03-24.

    日期:2014-06-05.

    王洪偉(1970-),男,工程師.

    王洪偉,E-mail:hwmb3215@163.com.

    猜你喜歡
    插件嵌入式元件
    自編插件完善App Inventor與樂高機(jī)器人通信
    電子制作(2019年22期)2020-01-14 03:16:34
    搭建基于Qt的嵌入式開發(fā)平臺
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
    QFN元件的返工指南
    MapWindowGIS插件機(jī)制及應(yīng)用
    在新興產(chǎn)業(yè)看小元件如何發(fā)揮大作用
    寶馬i3高電壓元件介紹(上)
    基于Revit MEP的插件制作探討
    Altera加入嵌入式視覺聯(lián)盟
    倍福 CX8091嵌入式控制器
    自動化博覽(2014年4期)2014-02-28 22:31:15
    云梦县| 蒙城县| 三原县| 巴塘县| 江津市| 治县。| 淳安县| 滦南县| 镇原县| 苍梧县| 阳城县| 崇义县| 金华市| 米脂县| 同德县| 芮城县| 盈江县| 博野县| 岳普湖县| 宁陕县| 玉树县| 宁阳县| 安顺市| 庐江县| 克什克腾旗| 钟祥市| 辽宁省| 东兰县| 海林市| 阿克| 永城市| 安平县| 苍南县| 北宁市| 三都| 三门县| 左贡县| 清水河县| 皮山县| 卓资县| 香港|