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

        ?

        基于RTMFP協(xié)議的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2016-04-11 15:15:37陸莉莉裴斌張向通孫延鵬季一木
        電腦知識(shí)與技術(shù) 2016年4期
        關(guān)鍵詞:流媒體視頻監(jiān)控

        陸莉莉+裴斌+張向通+孫延鵬+季一木

        摘要:RTMFP(RealTime Media Flow Protocol,實(shí)時(shí)媒體流協(xié)議)是一種基于UDP的支持P2P安全協(xié)議。為了更好地滿足視頻監(jiān)控流的安全性和實(shí)時(shí)性,文中設(shè)計(jì)一種基于RTMFP的視頻監(jiān)控系統(tǒng)服務(wù)端和客戶端,并重點(diǎn)介紹了平臺(tái)的配置搭建、視頻流編解碼、視頻流發(fā)布流程和視頻流文件控制等模塊的設(shè)計(jì)和實(shí)現(xiàn)。

        關(guān)鍵詞:對(duì)等計(jì)算;視頻監(jiān)控;流媒體

        中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)04-0208-03

        Research of the Application and Analysis for Flash P2P Protocol

        LU Li-li1,PEI Bing1,SUN Yan-peng2,ZHANG Xiang-dong1,JI Yi-mu2

        (1.College of Software, Nanjing College of Information Technology, Nanjing 210046, China; 2.College of Computer, Nanjing University of Posts and Telecommunications, Nanjing 210023, China)

        Abstract:RTMFP (Media Flow Protocol RealTime) was a kind of security protocol based on UDP and supported for P2P. In order to better meet the requirements of the safety and real-time of video monitoring, a video monitoring system server and client based on RTMFP was designed, and introduced the design and implementation of modules in the system, such as the configuration and building of the platform, video stream encoding and decoding, video streaming delivery process, video stream file control, and so on.

        Key words:Peer to Peer; video control; flow media

        1 背景

        RTMFP使用UDP傳輸數(shù)據(jù)以提高數(shù)據(jù)傳輸速度,并采用類似TCP的連接建立方式,保證連接的可靠性[1]。FLASH P2P是由Adobe公司開發(fā)的基于Flash平臺(tái)實(shí)現(xiàn)的P2P技術(shù),該技術(shù)基于RTMFP [2],RTMFP協(xié)議為直播和實(shí)時(shí)通信程序提供了高質(zhì)量通信解決方案。

        目前,RTMFP協(xié)議用在視頻流通信中,主要是用于視頻播放系統(tǒng)和視頻點(diǎn)播系統(tǒng)[3]。但是視頻監(jiān)控是當(dāng)前物流、交通、智慧小區(qū)和公安等應(yīng)用必備支撐技術(shù)之一,無線技術(shù)、P2P技術(shù)和EPON等[4-6]技術(shù)都應(yīng)用到視頻監(jiān)控系統(tǒng)中,但是這些監(jiān)控系統(tǒng)還是基于傳統(tǒng)的RTMP(RealTime Media Protocol,實(shí)時(shí)媒體流協(xié)議),由于視頻監(jiān)控內(nèi)容涉及用戶隱私,而RTMFP協(xié)議在傳統(tǒng)P2P和RTMP協(xié)議基礎(chǔ)上引入了安全機(jī)制[7],所以基于RTMFP協(xié)議搭建視頻監(jiān)控平臺(tái)具有很好的創(chuàng)新性和應(yīng)用價(jià)值。在FLASH P2P 技術(shù)中,兩個(gè)節(jié)點(diǎn)經(jīng)過服務(wù)器驗(yàn)證后可以彼此直接通信,降低了服務(wù)器端的帶寬需求。所以此方案很適合于大范圍的部署應(yīng)用,例如企業(yè)私有視頻點(diǎn)播(VOD)系統(tǒng)、實(shí)時(shí)視頻監(jiān)控、音視頻聊天和多人游戲等。RTMFP因?yàn)槭褂肬DP封裝,在提升傳輸速度的同時(shí),也需要通過兩個(gè)功能提高連接的可靠性。文中主要研究RTMFP協(xié)議在視頻監(jiān)控中的應(yīng)用以及H.264格式視頻的FLV封裝。

        2 基于RTMFP的視頻監(jiān)控系統(tǒng)和實(shí)現(xiàn)架構(gòu)設(shè)計(jì)

        圖1 基于RTMFP的視頻監(jiān)控系統(tǒng)架構(gòu)

        基于RTMFP協(xié)議的FLASH P2P視頻監(jiān)控模塊整體架構(gòu)如圖1所示,具有視頻采集模塊、視頻編碼與發(fā)送模塊、P2P認(rèn)證與管理模塊和視頻播放模塊。其中,視頻采集模塊負(fù)責(zé)監(jiān)控視頻的采集,其中視頻監(jiān)控設(shè)備采用普通IP網(wǎng)絡(luò)攝像頭。視頻編碼與發(fā)送模塊將視頻流進(jìn)行H.264編碼并將H.264視頻以FLV格式封裝,封裝后以RTMP協(xié)議將視頻流發(fā)送給流媒體內(nèi)容服務(wù)器,P2P認(rèn)證與管理模塊負(fù)責(zé)P2P節(jié)點(diǎn)的RTMFP連接認(rèn)證以及P2P共享組的創(chuàng)建、維持與結(jié)束工作,視頻播放模塊播放顯示接收到的FLV視頻流。P2P節(jié)點(diǎn)間以RTMFP協(xié)議進(jìn)行數(shù)據(jù)通信以及視頻流數(shù)據(jù)傳輸。

        為了實(shí)現(xiàn)圖1所示的架構(gòu),系統(tǒng)采用Flash Builder、Eclipse作為實(shí)現(xiàn)平臺(tái),使用ActionScript語言和JAVA語言進(jìn)行開發(fā)。其中,RTMFP協(xié)議分析模塊由JAVA編程實(shí)現(xiàn),視頻監(jiān)控模塊中視頻編碼與發(fā)送模塊由C++編程實(shí)現(xiàn),結(jié)果顯示模塊由ActionScript語言編程實(shí)現(xiàn)。監(jiān)控視頻數(shù)據(jù)以RMTPF協(xié)議傳輸。Flash Builder是一個(gè)軟件開發(fā)工具,由Adobe公司開發(fā)而成,可以作為Flash程序的開發(fā)平臺(tái)。視頻監(jiān)控模塊采用Cumulus作為節(jié)點(diǎn)的RTMFP認(rèn)證服務(wù)器,Cumulus 服務(wù)器具有跨平臺(tái)、體積小和可擴(kuò)展的優(yōu)點(diǎn),是一款可以支持RTMFP協(xié)議認(rèn)證的輕量級(jí)的開源腳本服務(wù)器。RTMFP視頻監(jiān)控模塊功能包括視頻采集、視頻編碼與發(fā)送和視頻播放,其中視頻采集采用普通IP攝像頭,然后視頻編碼模塊對(duì)攝像頭采集的視頻數(shù)據(jù)進(jìn)行H.264編碼并進(jìn)行FLV封裝并發(fā)送到內(nèi)容服務(wù)器。節(jié)點(diǎn)之間以RTMFP協(xié)議通信,OpenRTMFP/Cumulus服務(wù)器負(fù)責(zé)節(jié)點(diǎn)認(rèn)證,Tracker服務(wù)器負(fù)責(zé)P2P共享組的創(chuàng)建、維護(hù)、結(jié)束工作。

        3 基于RTMFP的視頻監(jiān)控系統(tǒng)配置和主要功能實(shí)現(xiàn)

        3.1 Cumulus 服務(wù)器安裝配置

        本章設(shè)計(jì)的基于RTMFP的視頻監(jiān)控系統(tǒng)方案,采用Cumulus服務(wù)器作為認(rèn)證服務(wù)器[8]。Cumulus腳本服務(wù)器的主要有如下功能:1)支持p2p點(diǎn)到點(diǎn)服務(wù);2)支持現(xiàn)場(chǎng)直播;3)支持RPC,pull,push 切換,并能和所有的AMF客戶端與服務(wù)器端通信;4)支持通過腳本程序編寫應(yīng)用。5)支持功能擴(kuò)展;6)支持負(fù)載均衡。

        Cumulus服務(wù)器由官方提供源代碼,若想啟動(dòng)并使用Cumulus服務(wù)器,可以先下載源碼自行編譯運(yùn)行,并且可以動(dòng)過編寫lua腳本程序個(gè)性化服務(wù)器功能。Cumulus服務(wù)器的編譯、安裝、配置過程如下:

        Step1. 下載Cumulus腳本服務(wù)器源碼。//網(wǎng)站搜索下載

        Step2. 下載并安裝POCO運(yùn)行庫(kù)。

        cd D:\poco-1.4.8

        "%VS100COMNTOOLS%\vsvars32.bat"

        buildwin 100 build static_mt both Win32 nosamples devenv

        打開(1)中下載的Cumulus服務(wù)器源碼工程,在“項(xiàng)目“屬性的附加包含目錄里添加下載的poco庫(kù)。

        Step3. 下載并安裝openssl,結(jié)束后同Step2中一樣將代碼庫(kù)添加進(jìn)Cumulus工程中。

        Step4. 編譯Cumulus:

        OpenRTMFP-Cumulus/CumulusLib

        make

        cd ../CumulusServer

        make

        Step4. 進(jìn)行Cumulus服務(wù)器配置:

        打開Cumulus/CumulusServer/CumulusServer.ini文件進(jìn)行如下修改可以完成對(duì)服務(wù)器的重新配置:

        ;CumulusServer.ini

        port = 1935

        udpBufferSize = 114688

        keepAlivePeer = 100

        keepAliveServer = 10

        [logs]

        name=log1

        directory=C:/CumulusServer/logss

        3.2 視頻編碼發(fā)送模塊實(shí)現(xiàn)

        視頻編碼發(fā)送模塊是基于RTMFP協(xié)議的視頻監(jiān)控模塊中的核心部件,它主要實(shí)現(xiàn)以下功能:1)原始圖像數(shù)據(jù)的H.264編碼;2)對(duì)H.264編碼后的數(shù)據(jù)進(jìn)行Flv封裝;3)將封裝后的Flv格式視頻發(fā)送到流媒體內(nèi)容服務(wù)器。視頻編碼采用開源H.264視頻編碼器X.264,視頻經(jīng)H.264編碼之后調(diào)用視頻格式封裝函數(shù)將視頻數(shù)據(jù)封裝成Flv格式并發(fā)送給內(nèi)容服務(wù)器進(jìn)行分發(fā)。

        1)原始圖像數(shù)據(jù)的H.264編碼壓縮

        X.264只是提供源代碼庫(kù),沒有直接可用的接口,為了方便模塊的設(shè)計(jì)實(shí)現(xiàn),本文在將實(shí)現(xiàn)的視頻編碼與發(fā)送模塊中對(duì)X.264的編碼API進(jìn)行了重新封裝,以下是H.264編碼的具體實(shí)現(xiàn)過程:

        2)轉(zhuǎn)換YUV以及RGB的顏色空間

        首先原始的視頻數(shù)據(jù)可以通過一般的IP網(wǎng)絡(luò)攝像頭采集獲得,攝像頭獲取的初始視頻數(shù)據(jù)格式為RGB24。但是X.264標(biāo)準(zhǔn)要求,編碼的輸入流必須符合標(biāo)準(zhǔn)的YUV420的圖像采樣格式。所以,在進(jìn)行H.264編碼前,需要將視頻數(shù)據(jù)的RGB顏色空間進(jìn)行向YUV顏色空間的轉(zhuǎn)換。實(shí)現(xiàn)此功能的接口封裝為:

        InitLookupTable(); //該接口的功能為色彩空間轉(zhuǎn)換前的初始化操作;

        RGB2YUV420(int x_ dim, int y_ dim, unsigned char * bmp, unsigned char * yuv, int flip);

        //該接口的功能為對(duì)色彩空間進(jìn)行實(shí)際轉(zhuǎn)換。

        3)設(shè)置H.264編碼參數(shù)

        對(duì)H.264編碼參數(shù)進(jìn)行設(shè)置,實(shí)現(xiàn)此功能的接口封裝為:x264_ param_ default(x264_ param_ t * param);

        對(duì)當(dāng)前需要編碼的圖像參數(shù)進(jìn)行設(shè)置:需要對(duì)數(shù)據(jù)幀的數(shù)量、視頻數(shù)據(jù)的比特率、采樣圖像的高度以及長(zhǎng)度寬度、視頻數(shù)據(jù)的幀率等參數(shù)進(jìn)行設(shè)置,以完成編碼預(yù)設(shè)置。

        4)初始化編碼器

        第2)步中設(shè)置的編碼參數(shù)將作為編碼器的初始化參數(shù),實(shí)現(xiàn)此功能的接口封裝為:

        x264_t *x264_encoder_open ( x264_param_t *param );

        編碼器初始化失敗時(shí),函數(shù)將返回NULL,此時(shí)需要對(duì)編碼器初始化結(jié)果進(jìn)行處理。

        5)進(jìn)行編碼空間分配

        如果編碼器初始化成功,那么就要給此次編碼分配足夠的內(nèi)存空間,實(shí)現(xiàn)此功能的接口封裝為:

        Void x264_picture_alloc(x264_picture_t *pic, int i_csp, int i_width, int i_height);

        6)圖像編碼

        最后將以上所有步驟初始化完成后的數(shù)據(jù)作為編碼輸入,然后通過以下接口封裝進(jìn)行圖像的編碼:

        int x264_encoder_encode( x264_t *h,x264_nal_t **pp_nal, int *pi_nal,x264_picture_t *pic_in,x264_picture_t *pic_out );

        7)資源回收

        編碼結(jié)束以后,則回收系統(tǒng)資源并且關(guān)閉編碼器,實(shí)現(xiàn)此功能的接口封裝為:

        void x264_picture_clean( x264_picture_t *pic );

        void x264_encoder_close( x264_t *h );

        至此,完成了對(duì)視頻采集模塊(普通IP攝像頭及其驅(qū)動(dòng)系統(tǒng))所采集的初始視頻數(shù)據(jù)的H.264編碼。進(jìn)行H.264編碼后的網(wǎng)絡(luò)抽象層單元(NALU)排列順序依次為:SPS-PPS-SEI-IDR-nonIDR---nonIDR。

        3.3 H.264編碼數(shù)據(jù)的Flv封裝

        視頻原始數(shù)據(jù)進(jìn)行H.264編碼結(jié)束之后,我們可以對(duì)編碼后的數(shù)據(jù)進(jìn)行Flv格式封裝。

        Flv是二進(jìn)制文件,由兩部分組成,分別為Flv Header以及 Flv Body。而Flv Body由多個(gè)Prevoius Tag Size字段和Tag字段組成。Tag又可以細(xì)分成三種類別,分別為代表音頻流的audio標(biāo)志,代表視頻流的video標(biāo)志,以及代表腳本流的script標(biāo)志,同時(shí),每個(gè)tag在組成部分上有兩部分構(gòu)成,分別為Tag Header字段以及Tag data字段對(duì)。

        Flv文件具體組成如下:

        FLV header (9 byte)

        previous tag size0(4byte ,默認(rèn)為00 00 00 00)

        Metadata Tag(有關(guān)Flv視頻和音頻的參數(shù)信息,)

        previous tag size(4byte,代表Metadata的長(zhǎng)度)

        Video Tag1(視頻配置信息,大小通過計(jì)算獲得)

        previous tag size1(占用4個(gè)byte 視頻配置信息大小)

        Audio Tag2(音頻配置信息,大小通過計(jì)算獲得)

        previous tag size2(占用4個(gè)byte 音頻配置信息大小)

        …..

        Tag N

        previous tag size N。

        從第四個(gè)Tag開始,Tag里內(nèi)容依次是音視頻數(shù)據(jù)及其前一個(gè)tag大小。

        將H.264編碼數(shù)據(jù)進(jìn)行Flv封裝的實(shí)質(zhì)是把H.264視頻流數(shù)據(jù)以NALU為單位按上述Flv文件的結(jié)構(gòu)順序?qū)懭隖lv文件的tag中。具體的實(shí)現(xiàn)方式,參考附錄中關(guān)鍵代碼。

        3.4 Flash客戶端實(shí)現(xiàn)

        Flash客戶端為整個(gè)Flash P2P視頻監(jiān)控與分析系統(tǒng)的顯示模塊,其主要功能如下:1)多路監(jiān)控視頻流播放;2)RTMFP視頻傳輸協(xié)議分析模塊結(jié)果顯示。表1為視頻播放模塊所用到主要類。視頻的播放以及播放控制,主要通過NetStream類的方法。

        表1 視頻播放模塊主要類

        [Video類\&創(chuàng)建視頻對(duì)象,作為視頻流容器,對(duì)視頻文件進(jìn)行編碼處理。\&NetConnection類\&創(chuàng)建連接對(duì)象,連接遠(yuǎn)程服務(wù)器,獲取服務(wù)器認(rèn)證。\&NetStream類\&主要作用是創(chuàng)建資源發(fā)布或者接受流。該流的創(chuàng)建依賴于NetConnection對(duì)象。\&]

        3.5 視頻播放流程

        Flv格式封裝的視頻是Flash Player播放基本視頻格式??梢酝ㄟ^一些工具把其他的視頻文件格式轉(zhuǎn)換為.flv格式,比如Flash CS3自帶的工具Flash Video Encode,本文所用的視頻格式封裝方法為3.2所實(shí)現(xiàn)的視頻編碼發(fā)送模塊,經(jīng)過視頻編碼發(fā)送模塊編碼、封裝、發(fā)送后,顯示模塊所得到的視頻流為標(biāo)準(zhǔn)的Flv格式視頻流。

        加載一個(gè)視頻文件并播放,通??梢苑譃槿綄?shí)現(xiàn)。其步驟如下所示。

        Step1:節(jié)點(diǎn)建立與服務(wù)器的連接進(jìn)行認(rèn)證或者建立與其他節(jié)點(diǎn)的連接。完成此步驟的代碼如下所示。

        var nc1:NetConnection = new NetConnection();

        nc.connect(RTMFP:\\);

        Step2:創(chuàng)建視頻數(shù)據(jù)接收流。利用步驟1所建立的連接打通數(shù)據(jù)接收流,完成此步驟的關(guān)鍵代碼如下所示。

        var ns1:NetStream = new NetStream(nc);

        ns.play("monitor");

        Step3:為即將播放的視頻流創(chuàng)建一個(gè)視頻容器。該視頻容器負(fù)責(zé)將接收到的視頻流數(shù)據(jù)進(jìn)行解碼操作。完成此步驟的代碼如下所示:

        var vid:Video = new Video();

        vid.attachNetStream(ns);

        通過以上三個(gè)步驟的操作,視頻文件就被加載并播放。

        3.6 視頻文件信息獲取

        視頻流的信息包括視頻的持續(xù)時(shí)間、視頻顯示寬度及高度、視頻播放幀速等。顯示視頻流的信息可以通過調(diào)用onMetaData函數(shù),onMetaData回調(diào)函數(shù)可以獲取元數(shù)據(jù)的信息。

        4 結(jié)束語

        文中實(shí)現(xiàn)了RTMFP協(xié)議在視頻監(jiān)控中的應(yīng)用,并使用開源Cumulus服務(wù)器作為認(rèn)證服務(wù)器,能夠?qū)P攝像頭采集到的視頻數(shù)據(jù)進(jìn)行H.264壓縮編碼,然后封裝成適合Flash player播放的Flv格式,發(fā)送給視頻服務(wù)器進(jìn)行內(nèi)容分發(fā),用戶可以通過電腦、智能手機(jī)等設(shè)備進(jìn)行觀看。由于采用了Flash P2P技術(shù),使服務(wù)端帶寬開銷減少和服務(wù)端計(jì)算資源開銷也大幅度降低。為視頻監(jiān)控系統(tǒng)在智慧城市、智慧小區(qū)和智慧物流等領(lǐng)域的應(yīng)用推廣趕到借鑒作用,進(jìn)一步可研究基于視頻內(nèi)容的監(jiān)控和搜索。

        參考文獻(xiàn):

        [1] Campennì M. Adobe's RTMFP Profile for Flash Communication[J]. Journal of Theoretical Biology, 2014, 344(6): 49-55.

        [2] Gao Q T, Liu J L, University T, et al. Application of RTMFP to P2P Video Communication[J]. Computer Systems & Applications, 2012.

        [3] 陳木朝, 劉愛華. 基于RTMFP協(xié)議的視頻播放系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦編程技巧與維護(hù), 2013(18): 48-49.

        [4] 付存宇. 基于 3G 網(wǎng)絡(luò)的嵌入式無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)與現(xiàn)代化, 2013(4): 184-186.

        [5] 董春利. 基于 EPON 技術(shù)的智能小區(qū)視頻監(jiān)控系統(tǒng)[J]. 光纖與電纜及其應(yīng)用技術(shù), 2013, 1: 011.

        [6] 蘇愛國(guó), 郭世安, 王杰敏, 等. 基于 P2P 視頻監(jiān)控技術(shù)的應(yīng)急指揮系統(tǒng)研究[J]. 移動(dòng)通信, 2012, 36(6).

        [7] Adobe's RTMFP Profile for Flash Communication[EB/OL].http://tools.ietf.org/html/rfc7425.

        [8] Use RTMFP for developing real-time collaboration applications[EB/OL].http://labs.adobe.com/technologies/cirrus/.

        猜你喜歡
        流媒體視頻監(jiān)控
        流媒體傳輸加密技術(shù)研究
        基于視頻圖像采集移動(dòng)目標(biāo)檢測(cè)系統(tǒng)的設(shè)計(jì)
        數(shù)字化監(jiān)控系統(tǒng)的企業(yè)應(yīng)用
        廣東地區(qū)輸電線路在線監(jiān)測(cè)技術(shù)應(yīng)用探究
        基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        基于HTML5的視頻監(jiān)控微課設(shè)計(jì)淺析
        智能視頻檢索技術(shù)在校園安防建設(shè)中的發(fā)展應(yīng)用
        基于JSP的流媒體播放的設(shè)計(jì)與實(shí)現(xiàn)
        網(wǎng)絡(luò)遠(yuǎn)程教學(xué)系統(tǒng)的設(shè)計(jì)
        基于云服務(wù)的P2P流媒體技術(shù)在遠(yuǎn)程教學(xué)視頻傳輸中的應(yīng)用
        国产福利一区二区三区在线观看 | 最新亚洲人成无码网www电影| 久久露脸国产精品WWW| 国产av午夜精品一区二区入口| 国产一区二区三区三区四区精品| 黑人上司粗大拔不出来电影| 国模精品无码一区二区二区| 厕所极品偷拍一区二区三区视频 | 亚洲码国产精品高潮在线| 无码的精品免费不卡在线| 国产不卡一区在线视频| 成人麻豆视频免费观看| 色www视频永久免费| 亚洲丁香婷婷综合久久小说 | 麻豆免费观看高清完整视频 | av免费在线播放一区二区| 免费a级毛片无码a∨蜜芽试看 | 狠狠综合久久av一区二区蜜桃| 亚洲精品午夜无码电影网| 免费 无码 国产在线观看不卡| 东京热日本道免费高清| 亚洲av成人片色在线观看| 人妻 日韩精品 中文字幕| 欧美精品日韩一区二区三区| 女人18毛片aa毛片免费| 中文字幕一区日韩精品| 麻豆成人在线视频| 都市激情亚洲综合一区| 亚洲国产精品无码成人片久久| 国产成年女人特黄特色毛片免| 亚洲欧美日韩精品久久亚洲区色播| 日本免费看一区二区三区| 久久天天躁狠狠躁夜夜不卡| 亚洲精品国产综合一线久久| 杨幂二区三区免费视频| aaa日本高清在线播放免费观看| 亚洲精品国产av成拍色拍| 亚洲欧美日韩在线中文一| 91九色视频在线国产| 99视频30精品视频在线观看 | 国产美女胸大一区二区三区|