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

        ?

        基于RTP的機(jī)載網(wǎng)絡(luò)視頻同步回放技術(shù)

        2020-05-22 11:24:48朝,王

        郝 朝,王 灝

        (中國(guó)飛行試驗(yàn)研究院,陜西 西安 710089)

        0 引 言

        機(jī)載視頻數(shù)據(jù)是飛行試驗(yàn)測(cè)試數(shù)據(jù)中的重要組成部分,視頻圖像因?yàn)槿妗⒅庇^、真實(shí)地反映當(dāng)前飛機(jī)與設(shè)備工作狀態(tài)等優(yōu)點(diǎn)成為試飛工程師給出飛機(jī)試飛結(jié)論的重要依據(jù)[1]。

        目前在飛行試驗(yàn)中,視頻遙測(cè)與監(jiān)控仍然采用主流的PCM[2]架構(gòu),將機(jī)載數(shù)字視頻信號(hào)以PCM流的形式傳輸至地面進(jìn)行解析。一般航電系統(tǒng)多路視頻數(shù)據(jù)使用機(jī)載記錄器對(duì)其進(jìn)行分開記錄,飛行結(jié)束后,通過地面卸載將各路視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)視頻格式文件(*.m2t),采用通用視頻播放軟件如暴風(fēng)影音即可進(jìn)行播放。隨著基于Mesh架構(gòu)[3-4]的網(wǎng)絡(luò)電臺(tái)的出現(xiàn),由于任務(wù)需求,機(jī)載視頻通過網(wǎng)絡(luò)電臺(tái)以RTP/RTCP協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)包的形式實(shí)現(xiàn)網(wǎng)絡(luò)化遙測(cè)與記錄,有別于現(xiàn)有的PCM結(jié)構(gòu)的遙測(cè)數(shù)字視頻傳輸系統(tǒng),視頻數(shù)據(jù)與其他測(cè)試參數(shù)以網(wǎng)絡(luò)數(shù)據(jù)包的形式全部記錄在一個(gè)網(wǎng)絡(luò)數(shù)據(jù)文件(*.enet)中。因?yàn)闄C(jī)載采集系統(tǒng)和遙測(cè)傳輸方式的改變,導(dǎo)致記錄的視頻數(shù)據(jù)格式發(fā)生變化,現(xiàn)有的視頻回放軟件無法滿足型號(hào)任務(wù)新需求。

        根據(jù)以上需求,為了保證機(jī)載多路網(wǎng)絡(luò)視頻數(shù)據(jù)回放任務(wù),研究基于RTP/RTCP[5-6]的機(jī)載網(wǎng)絡(luò)視頻同步回放技術(shù)。通過對(duì)機(jī)載記錄網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行提取,將網(wǎng)絡(luò)視頻數(shù)據(jù)分流并進(jìn)行預(yù)處理,使用FFmpeg進(jìn)行圖像解碼,并利用SDL進(jìn)行顯示。

        1 RTP/RTCP協(xié)議

        機(jī)載網(wǎng)絡(luò)攝像頭將視頻圖像以RTP/RTCP協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包的形式通過交換機(jī)發(fā)送給記錄器進(jìn)行記錄。記錄器將RTP/RTCP網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行封裝,加上UDP頭、IP頭、MAC頭寫入文件中。

        實(shí)時(shí)傳輸協(xié)議(real-time transport protocol,RTP)是用來為音視頻等多媒體數(shù)據(jù)提供端到端的實(shí)時(shí)傳輸服務(wù)。RTP實(shí)時(shí)傳輸音視頻流,傳輸服務(wù)質(zhì)量由對(duì)應(yīng)的實(shí)時(shí)傳輸控制協(xié)議(real-time transport control protocol,RTCP)來控制。在RTP會(huì)話期間,網(wǎng)絡(luò)攝像頭周期性地以組播形式發(fā)送RTCP包,包中含有已發(fā)送的視頻數(shù)據(jù)包數(shù)量、丟包數(shù)量等信息,因此,網(wǎng)絡(luò)攝像頭可以利用這些信息動(dòng)態(tài)地改變視頻圖像的傳輸速率。

        當(dāng)網(wǎng)絡(luò)攝像頭開啟時(shí),同時(shí)建立了一個(gè)RTP會(huì)話,確定了一個(gè)由一個(gè)網(wǎng)絡(luò)地址和奇偶兩個(gè)端口組成的目的傳輸?shù)刂?。偶?shù)的UDP端口2n分配給RTP視頻數(shù)據(jù)包,相鄰的奇數(shù)UDP端口2n+1分配給RTCP包,構(gòu)成一個(gè)UDP端口對(duì)。RTP/RTCP數(shù)據(jù)包通過該UDP端口對(duì)進(jìn)行發(fā)送。

        RTP協(xié)議從網(wǎng)絡(luò)攝像頭接收視頻圖像碼流,將其進(jìn)行封裝,得到RTP數(shù)據(jù)包;RTCP協(xié)議從網(wǎng)絡(luò)攝像頭接收控制信息,將其進(jìn)行封裝成RTCP數(shù)據(jù)包。RTP和RTCP兩種協(xié)議的配合使用,可以通過有效的反饋和最小的開銷使視頻數(shù)據(jù)包的傳輸效率達(dá)到最優(yōu)。

        當(dāng)采用RTP對(duì)H.264碼流進(jìn)行打包封裝時(shí),封裝格式定義三個(gè)不同的基本結(jié)構(gòu),接收端通過RTP包的第一個(gè)字節(jié)后5位來識(shí)別當(dāng)前打包結(jié)構(gòu)。

        (1)單個(gè)封包模式:一個(gè)獨(dú)立的NALU用一個(gè)RTP包封裝。序列參數(shù)集SPS與圖像參數(shù)集PPS由于數(shù)據(jù)量較少,小于MTU(最大傳輸單元),一般為單個(gè)NALU,采用單個(gè)RTP包封裝模式進(jìn)行傳輸。NAL頭類型域與原始 NAL單元類型相同。。

        (2)聚合封包模式:用于將多個(gè)NAL單元打包到單個(gè)RTP數(shù)據(jù)包中。由于視頻圖像數(shù)據(jù)較大,一幀圖像數(shù)據(jù)量一般均大于RTP數(shù)據(jù)包長(zhǎng)度,因此這種封裝格式應(yīng)用較少。

        (3)分片封包模式:將一個(gè)獨(dú)立的NALU打包到多個(gè)RTP包。一個(gè)獨(dú)立的NALU被分割成多個(gè)連續(xù)的NAL單元字節(jié)。相同NALU的分片必須使用遞增的RTP序號(hào)進(jìn)行順序發(fā)送,可以通過該序列號(hào)判斷RTP數(shù)據(jù)包的丟包情況。相似地,NAL單元必須按照RTP順序號(hào)的順序進(jìn)行封裝。

        2 系統(tǒng)框架設(shè)計(jì)

        機(jī)載網(wǎng)絡(luò)視頻回放系統(tǒng)功能結(jié)構(gòu)如圖1所示。

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

        對(duì)于機(jī)載記錄數(shù)據(jù)處理模塊,具體功能如下:

        (1)數(shù)據(jù)分流:通過對(duì)數(shù)據(jù)包進(jìn)行判別,將機(jī)載記錄網(wǎng)絡(luò)數(shù)據(jù)分流提取為普通低采數(shù)據(jù)、網(wǎng)絡(luò)視頻數(shù)據(jù)和高采振動(dòng)數(shù)據(jù)等多個(gè)數(shù)據(jù)文件。

        (2)視頻數(shù)據(jù)預(yù)處理:對(duì)網(wǎng)絡(luò)視頻數(shù)據(jù)文件進(jìn)行處理,將RTP視頻數(shù)據(jù)包進(jìn)行解封裝與組包,還原成完整的一幀圖像,對(duì)RTCP數(shù)據(jù)包進(jìn)行解析,在每一幀圖像前加上標(biāo)識(shí)符、時(shí)間戳、該幀圖像數(shù)據(jù)長(zhǎng)度等信息。

        對(duì)于視頻數(shù)據(jù)回放模塊,具體功能如下:

        (1)多路視頻同步回放:實(shí)現(xiàn)多路視頻的同步回放,保持時(shí)間基本一致;

        (2)逐幀播放:對(duì)關(guān)鍵數(shù)據(jù)段進(jìn)行逐幀播放,包括上一幀和下一幀;

        (3)數(shù)據(jù)截取:對(duì)關(guān)鍵數(shù)據(jù)段進(jìn)行截取,保存為單獨(dú)的視頻文件;

        (4)時(shí)間跳轉(zhuǎn):實(shí)現(xiàn)快速跳轉(zhuǎn)至指定時(shí)間的視頻畫面;

        (5)截圖:將當(dāng)前時(shí)刻的圖像保存為BMP文件;

        (6)視頻解碼:將一幀視頻圖像解碼為YUV數(shù)據(jù);

        (7)圖像顯示:利用SDL對(duì)YUV圖像數(shù)據(jù)進(jìn)行顯示;

        (8)圖像處理:采用一定算法實(shí)現(xiàn)圖像旋轉(zhuǎn)、1/4局部顯示等功能。

        機(jī)載網(wǎng)絡(luò)視頻數(shù)據(jù)回放流程如圖2所示。

        首先對(duì)機(jī)載記錄的數(shù)據(jù)文件進(jìn)行處理,將網(wǎng)絡(luò)視頻數(shù)據(jù)分流出來,然后對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行解包、計(jì)算時(shí)間等預(yù)處理,形成可用于快速回放的數(shù)據(jù)文件。網(wǎng)絡(luò)遙測(cè)記錄的視頻數(shù)據(jù)包格式與預(yù)處理視頻數(shù)據(jù)文件保持一致,均可進(jìn)行回放。通過讀取一幀數(shù)據(jù)送給FFmpeg進(jìn)行解碼,然后調(diào)用SDL進(jìn)行顯示。

        圖2 數(shù)據(jù)回放流程

        3 關(guān)鍵技術(shù)

        3.1 基于FFmpeg和SDL的視頻播放技術(shù)

        FFmpeg[7-9]是一個(gè)開源的、跨平臺(tái)的音視頻流方案,可對(duì)音視頻進(jìn)行錄制、轉(zhuǎn)換以及流化的操作。libavcodec是一套先進(jìn)的音頻/視頻編解碼庫,用于各種類型聲音/圖像的編碼與解碼。libavformat用于解析各種格式封裝的音視頻,包括獲取音視頻解碼所需的關(guān)鍵信息等功能;libswscale實(shí)現(xiàn)各種圖像像素格式的轉(zhuǎn)換以及圖像大小縮放功能。libavutil是一個(gè)公共工具函數(shù)庫。在獲得完整的NALU后,將其送入FFmpeg緩存進(jìn)行解碼,解碼流程為:(1)初始化解碼器;(2)注冊(cè)容器和CODEC;(3)查找H.264解碼器;(4)打開H.264解碼器;(5)為解碼器分配內(nèi)存;(6)解碼一幀視頻圖像,得到Y(jié)UV數(shù)據(jù)。

        SDL[10-11](simple direct media layer)是開源的、跨平臺(tái)的多媒體開發(fā)庫。SDL本身不具備字符顯示的功能,需要用外部擴(kuò)展庫SDL_ttf顯示文字。SDL顯示YUV[12-13]數(shù)據(jù)流程為:(1)初始化SDL和TTF庫;(2)創(chuàng)建window,打開字體;(3)基于窗口創(chuàng)建渲染器;(4)創(chuàng)建圖像紋理,設(shè)置文本表面;(5)設(shè)置圖像紋理數(shù)據(jù);(6)創(chuàng)建文本紋理數(shù)據(jù);(7)將圖像紋理和文本紋理復(fù)制給渲染器。

        3.2 機(jī)載網(wǎng)絡(luò)視頻預(yù)處理技術(shù)

        機(jī)載記錄數(shù)據(jù)格式為標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)包,格式為[MAC Header][IP Header][UDP Header][Payload]。記錄器將所有經(jīng)過機(jī)載網(wǎng)絡(luò)交換機(jī)的數(shù)據(jù)包均記錄下來,包括普通數(shù)據(jù)、視頻數(shù)據(jù)、振動(dòng)數(shù)據(jù)和其他網(wǎng)絡(luò)數(shù)據(jù)。因此首先采用數(shù)據(jù)分流技術(shù)將網(wǎng)絡(luò)攝像頭視頻數(shù)據(jù)提取出來。數(shù)據(jù)分流流程如圖3所示。

        圖3 數(shù)據(jù)分流流程

        將視頻數(shù)據(jù)提取出來之后,為了實(shí)現(xiàn)視頻數(shù)據(jù)的快速拖動(dòng)回放,首先將對(duì)RTP協(xié)議封裝的H.264視頻數(shù)據(jù)進(jìn)行解包,還原成完整的一幀NALU,在每一幀圖像數(shù)據(jù)前加上標(biāo)識(shí)符、時(shí)間戳和數(shù)據(jù)長(zhǎng)度。標(biāo)識(shí)符代表一幀圖像的開始,時(shí)間戳代表當(dāng)前圖像的時(shí)間,數(shù)據(jù)長(zhǎng)度代表當(dāng)前圖像所占字節(jié)數(shù)。

        3.3 機(jī)載多路網(wǎng)絡(luò)視頻快速同步回放技術(shù)

        對(duì)多路視頻進(jìn)行同步回放時(shí),采用時(shí)間戳同步技術(shù),將視頻畫面精確到幀。一般視頻幀率為25 fps,相鄰兩幀視頻畫面的時(shí)間差為40 ms,因此只需開始播放2路視頻畫面時(shí)間保持一致,逐幀順序播放顯示即可保持多路視頻之間同步。

        在拖動(dòng)進(jìn)度條時(shí),只需移動(dòng)文件指針至指定位置,查找標(biāo)識(shí)符直到一幀圖像開始。然后以某一路視頻為基準(zhǔn),對(duì)其他路視頻進(jìn)行查找,當(dāng)時(shí)間戳相差最小時(shí),開始逐幀播放即可保持多路視頻間的同步。首先以視頻1為時(shí)間戳基準(zhǔn),讀取并顯示當(dāng)前一幀圖像,然后該線程進(jìn)入等待狀態(tài)并通知視頻2線程。視頻2線程依次讀取一幀圖像并計(jì)算當(dāng)前時(shí)間差,如果該幀與基準(zhǔn)幀時(shí)間差最小,則顯示該圖像并且通知視頻1線程讀取下一幀圖像。

        圖4 時(shí)間跳轉(zhuǎn)邏輯處理流程

        時(shí)間跳轉(zhuǎn)處理邏輯流程如圖4所示。首先讀取當(dāng)前一幀數(shù)據(jù),比較當(dāng)前時(shí)間Tn(s)與指定時(shí)間Td(s),如果Tn

        3.4 基于BMP位圖文件的截圖功能

        BMP[14-15]格式位圖文件是Windows操作系統(tǒng)中的標(biāo)準(zhǔn)圖像文件格式,是一種設(shè)備無關(guān)位圖。為了實(shí)現(xiàn)截圖功能,將YUV數(shù)據(jù)轉(zhuǎn)換為RGB數(shù)據(jù),然后加上54字節(jié)的文件頭和位圖信息頭寫入BMP文件。

        YUV與RGB的彩色空間變換關(guān)系[8]如下:

        對(duì)變換得出的R、G、B值進(jìn)行檢查,如果RGB數(shù)值大于255,則賦值為255;如果小于0,則賦值為0。

        一個(gè)BMP圖像文件由位圖文件頭、位圖信息頭、調(diào)色板和位圖數(shù)據(jù)4部分組成[16]:

        (1)位圖文件頭包含BMP位圖文件的類型、文件大小、位圖起始位置等信息,其結(jié)構(gòu)定義如下:

        struct stcBITMAPFILEHEADER

        {

        INT16 FileType; //必須為“BM”

        INT32 FileSize; //文件大小

        INT16 Reserved1; //為0

        INT16 Reserved2; //為0

        INT32 DataOffset; //位圖數(shù)據(jù)起始位置

        };

        (2)位圖信息頭數(shù)據(jù)結(jié)構(gòu)。包含BMP圖像的尺寸、壓縮類型等信息,其結(jié)構(gòu)定義如下:

        struct stcBITMAPINFOHEADER

        {

        INT32 Size;//所占字節(jié)數(shù)

        INT64 PicWidth; //寬度

        INT64 PicHeight; //高度

        INT16 Planes; //為1

        INT16 Bits; //每個(gè)像素所需位數(shù)

        INT32 CprssType; //壓縮類型

        INT32 ImageSize;

        INT64 XDPI; //水平分辨率

        INT64 YDPI ; //垂直分辨率

        INT32 lrUsed;

        INT32 lrmajor;

        };

        當(dāng)每個(gè)像素所需位數(shù)為1時(shí),代表1個(gè)字節(jié)為8個(gè)像素;

        當(dāng)每個(gè)像素所需位數(shù)為4時(shí),代表1個(gè)字節(jié)為2個(gè)像素;

        當(dāng)每個(gè)像素所需位數(shù)為8時(shí),代表1個(gè)字節(jié)為1個(gè)像素;

        當(dāng)每個(gè)像素所需位數(shù)為24時(shí),代表3個(gè)字節(jié)為1個(gè)像素。

        (3)調(diào)色板。真彩色圖(24位的BMP)不需要調(diào)色板。

        (4)位圖數(shù)據(jù)。按照行內(nèi)從左到右、行間從下到上的順序?qū)ξ粓D的每一個(gè)像素值進(jìn)行掃描。

        4 應(yīng)用效果

        機(jī)載多路網(wǎng)絡(luò)視頻數(shù)據(jù)同步回放界面如圖5所示,能夠?qū)崿F(xiàn)多路網(wǎng)絡(luò)視頻數(shù)據(jù)文件的同步回放,具有暫停、上一幀、下一幀、截圖、圖像旋轉(zhuǎn)、時(shí)間跳轉(zhuǎn)等功能。

        圖5 機(jī)載多路網(wǎng)絡(luò)視頻數(shù)據(jù)同步回放軟件界面

        5 結(jié)束語

        論述了多路機(jī)載網(wǎng)絡(luò)視頻數(shù)據(jù)同步回放系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。通過對(duì)網(wǎng)絡(luò)包數(shù)據(jù)進(jìn)行分流提取,對(duì)RTP視頻數(shù)據(jù)包進(jìn)行解包、時(shí)間計(jì)算等預(yù)處理形成預(yù)處理文件,采用FFmpeg和SDL對(duì)一幀圖像進(jìn)行解碼與顯示,采用時(shí)間戳同步機(jī)制實(shí)現(xiàn)多路網(wǎng)絡(luò)視頻的精確同步回放。實(shí)際應(yīng)用效果表明該系統(tǒng)能夠?qū)崿F(xiàn)多路機(jī)載網(wǎng)絡(luò)視頻數(shù)據(jù)的快速同步回放,有效提高試飛效率。

        东京热人妻无码一区二区av| 国产一区二区三区小向美奈子| 亚洲av网站在线观看一页| 成午夜精品一区二区三区| 四虎影视永久在线精品| 无码伊人66久久大杳蕉网站谷歌 | 日韩av高清在线观看| 亚洲av片不卡无码久久| 春色成人在线一区av| 久久熟女少妇一区二区三区| 欧美肥妇毛多水多bbxx水蜜桃 | 夜爽8888视频在线观看| 人妻无码ΑV中文字幕久久琪琪布| 日本女优中文字幕亚洲| 中国美女a级毛片| 久久久久亚洲av无码观看| 国内精品久久久久影院蜜芽| 日韩精品久久午夜夜伦鲁鲁| 欧美日韩亚洲中文字幕二区| 欧美人与动牲交片免费| 久久迷青品着产亚洲av网站| 国产一区二区三区亚洲avv| 黑人上司粗大拔不出来电影| 久久精品国产99精品国偷| 开心激情网,开心五月天| 成人日韩熟女高清视频一区| 国产在线精品一区二区| 色婷婷精品综合久久狠狠| 国产三级不卡视频在线观看| 亚洲国产精品无码专区| 国产鲁鲁视频在线播放| 国产精品国产三级国产专区51区 | 国产内射一级一片内射视频| 人妻少妇精品中文字幕av蜜桃| 国产亚洲精品综合一区| 青青草免费在线视频久草| 情人伊人久久综合亚洲| 亚洲人在线观看| 久久老熟女乱色一区二区| 中文字幕亚洲欧美在线不卡| 国产欧美一区二区精品性色|