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

基于RTP的機載網絡視頻同步回放技術

2020-05-22 11:24:48朝,王
計算機技術與發展 2020年5期

郝 朝,王 灝

(中國飛行試驗研究院,陜西 西安 710089)

0 引 言

機載視頻數據是飛行試驗測試數據中的重要組成部分,視頻圖像因為全面、直觀、真實地反映當前飛機與設備工作狀態等優點成為試飛工程師給出飛機試飛結論的重要依據[1]。

目前在飛行試驗中,視頻遙測與監控仍然采用主流的PCM[2]架構,將機載數字視頻信號以PCM流的形式傳輸至地面進行解析。一般航電系統多路視頻數據使用機載記錄器對其進行分開記錄,飛行結束后,通過地面卸載將各路視頻數據還原為標準視頻格式文件(*.m2t),采用通用視頻播放軟件如暴風影音即可進行播放。隨著基于Mesh架構[3-4]的網絡電臺的出現,由于任務需求,機載視頻通過網絡電臺以RTP/RTCP協議的網絡數據包的形式實現網絡化遙測與記錄,有別于現有的PCM結構的遙測數字視頻傳輸系統,視頻數據與其他測試參數以網絡數據包的形式全部記錄在一個網絡數據文件(*.enet)中。因為機載采集系統和遙測傳輸方式的改變,導致記錄的視頻數據格式發生變化,現有的視頻回放軟件無法滿足型號任務新需求。

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

1 RTP/RTCP協議

機載網絡攝像頭將視頻圖像以RTP/RTCP協議網絡數據包的形式通過交換機發送給記錄器進行記錄。記錄器將RTP/RTCP網絡數據包進行封裝,加上UDP頭、IP頭、MAC頭寫入文件中。

實時傳輸協議(real-time transport protocol,RTP)是用來為音視頻等多媒體數據提供端到端的實時傳輸服務。RTP實時傳輸音視頻流,傳輸服務質量由對應的實時傳輸控制協議(real-time transport control protocol,RTCP)來控制。在RTP會話期間,網絡攝像頭周期性地以組播形式發送RTCP包,包中含有已發送的視頻數據包數量、丟包數量等信息,因此,網絡攝像頭可以利用這些信息動態地改變視頻圖像的傳輸速率。

當網絡攝像頭開啟時,同時建立了一個RTP會話,確定了一個由一個網絡地址和奇偶兩個端口組成的目的傳輸地址。偶數的UDP端口2n分配給RTP視頻數據包,相鄰的奇數UDP端口2n+1分配給RTCP包,構成一個UDP端口對。RTP/RTCP數據包通過該UDP端口對進行發送。

RTP協議從網絡攝像頭接收視頻圖像碼流,將其進行封裝,得到RTP數據包;RTCP協議從網絡攝像頭接收控制信息,將其進行封裝成RTCP數據包。RTP和RTCP兩種協議的配合使用,可以通過有效的反饋和最小的開銷使視頻數據包的傳輸效率達到最優。

當采用RTP對H.264碼流進行打包封裝時,封裝格式定義三個不同的基本結構,接收端通過RTP包的第一個字節后5位來識別當前打包結構。

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

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

(3)分片封包模式:將一個獨立的NALU打包到多個RTP包。一個獨立的NALU被分割成多個連續的NAL單元字節。相同NALU的分片必須使用遞增的RTP序號進行順序發送,可以通過該序列號判斷RTP數據包的丟包情況。相似地,NAL單元必須按照RTP順序號的順序進行封裝。

2 系統框架設計

機載網絡視頻回放系統功能結構如圖1所示。

圖1 系統功能結構

對于機載記錄數據處理模塊,具體功能如下:

(1)數據分流:通過對數據包進行判別,將機載記錄網絡數據分流提取為普通低采數據、網絡視頻數據和高采振動數據等多個數據文件。

(2)視頻數據預處理:對網絡視頻數據文件進行處理,將RTP視頻數據包進行解封裝與組包,還原成完整的一幀圖像,對RTCP數據包進行解析,在每一幀圖像前加上標識符、時間戳、該幀圖像數據長度等信息。

對于視頻數據回放模塊,具體功能如下:

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

(2)逐幀播放:對關鍵數據段進行逐幀播放,包括上一幀和下一幀;

(3)數據截取:對關鍵數據段進行截取,保存為單獨的視頻文件;

(4)時間跳轉:實現快速跳轉至指定時間的視頻畫面;

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

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

(7)圖像顯示:利用SDL對YUV圖像數據進行顯示;

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

機載網絡視頻數據回放流程如圖2所示。

首先對機載記錄的數據文件進行處理,將網絡視頻數據分流出來,然后對網絡數據包進行解包、計算時間等預處理,形成可用于快速回放的數據文件。網絡遙測記錄的視頻數據包格式與預處理視頻數據文件保持一致,均可進行回放。通過讀取一幀數據送給FFmpeg進行解碼,然后調用SDL進行顯示。

圖2 數據回放流程

3 關鍵技術

3.1 基于FFmpeg和SDL的視頻播放技術

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

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

3.2 機載網絡視頻預處理技術

機載記錄數據格式為標準的以太網數據包,格式為[MAC Header][IP Header][UDP Header][Payload]。記錄器將所有經過機載網絡交換機的數據包均記錄下來,包括普通數據、視頻數據、振動數據和其他網絡數據。因此首先采用數據分流技術將網絡攝像頭視頻數據提取出來。數據分流流程如圖3所示。

圖3 數據分流流程

將視頻數據提取出來之后,為了實現視頻數據的快速拖動回放,首先將對RTP協議封裝的H.264視頻數據進行解包,還原成完整的一幀NALU,在每一幀圖像數據前加上標識符、時間戳和數據長度。標識符代表一幀圖像的開始,時間戳代表當前圖像的時間,數據長度代表當前圖像所占字節數。

3.3 機載多路網絡視頻快速同步回放技術

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

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

圖4 時間跳轉邏輯處理流程

時間跳轉處理邏輯流程如圖4所示。首先讀取當前一幀數據,比較當前時間Tn(s)與指定時間Td(s),如果Tn

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

BMP[14-15]格式位圖文件是Windows操作系統中的標準圖像文件格式,是一種設備無關位圖。為了實現截圖功能,將YUV數據轉換為RGB數據,然后加上54字節的文件頭和位圖信息頭寫入BMP文件。

YUV與RGB的彩色空間變換關系[8]如下:

對變換得出的R、G、B值進行檢查,如果RGB數值大于255,則賦值為255;如果小于0,則賦值為0。

一個BMP圖像文件由位圖文件頭、位圖信息頭、調色板和位圖數據4部分組成[16]:

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

struct stcBITMAPFILEHEADER

{

INT16 FileType; //必須為“BM”

INT32 FileSize; //文件大小

INT16 Reserved1; //為0

INT16 Reserved2; //為0

INT32 DataOffset; //位圖數據起始位置

};

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

struct stcBITMAPINFOHEADER

{

INT32 Size;//所占字節數

INT64 PicWidth; //寬度

INT64 PicHeight; //高度

INT16 Planes; //為1

INT16 Bits; //每個像素所需位數

INT32 CprssType; //壓縮類型

INT32 ImageSize;

INT64 XDPI; //水平分辨率

INT64 YDPI ; //垂直分辨率

INT32 lrUsed;

INT32 lrmajor;

};

當每個像素所需位數為1時,代表1個字節為8個像素;

當每個像素所需位數為4時,代表1個字節為2個像素;

當每個像素所需位數為8時,代表1個字節為1個像素;

當每個像素所需位數為24時,代表3個字節為1個像素。

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

(4)位圖數據。按照行內從左到右、行間從下到上的順序對位圖的每一個像素值進行掃描。

4 應用效果

機載多路網絡視頻數據同步回放界面如圖5所示,能夠實現多路網絡視頻數據文件的同步回放,具有暫停、上一幀、下一幀、截圖、圖像旋轉、時間跳轉等功能。

圖5 機載多路網絡視頻數據同步回放軟件界面

5 結束語

論述了多路機載網絡視頻數據同步回放系統的設計與實現。通過對網絡包數據進行分流提取,對RTP視頻數據包進行解包、時間計算等預處理形成預處理文件,采用FFmpeg和SDL對一幀圖像進行解碼與顯示,采用時間戳同步機制實現多路網絡視頻的精確同步回放。實際應用效果表明該系統能夠實現多路機載網絡視頻數據的快速同步回放,有效提高試飛效率。

主站蜘蛛池模板: 五月婷婷激情四射| 精品人妻一区二区三区蜜桃AⅤ| 人妻中文字幕无码久久一区| 日韩黄色大片免费看| 在线中文字幕日韩| 免费看一级毛片波多结衣| 国产第二十一页| 2022国产无码在线| 欧美日本在线观看| 在线国产资源| 亚洲中文精品久久久久久不卡| 无码aⅴ精品一区二区三区| 国产精品无码影视久久久久久久| 一级高清毛片免费a级高清毛片| 九色视频在线免费观看| 午夜国产精品视频| 国产精品欧美在线观看| 狠狠综合久久久久综| 五月天综合婷婷| 精品国产乱码久久久久久一区二区| 国产精品亚洲专区一区| 97色婷婷成人综合在线观看| 最新国产网站| 91亚瑟视频| 女人18毛片久久| 精品无码专区亚洲| 亚洲最猛黑人xxxx黑人猛交| 国产菊爆视频在线观看| 99久久精品国产精品亚洲| 韩国自拍偷自拍亚洲精品| 欧美在线综合视频| 国产高清无码麻豆精品| 精品国产美女福到在线不卡f| 国产免费黄| 日韩精品免费一线在线观看| 国产亚洲欧美日韩在线观看一区二区| 亚洲区视频在线观看| 国产污视频在线观看| 免费国产高清视频| 免费在线国产一区二区三区精品| 99re在线视频观看| 欧美中文字幕一区| 亚洲人妖在线| 老司机精品久久| 香蕉伊思人视频| yy6080理论大片一级久久| 国产网站在线看| 99久久性生片| 久久香蕉欧美精品| 999国产精品| 国产农村妇女精品一二区| 成人国产精品2021| 久久青草免费91线频观看不卡| 久久一级电影| 成人午夜精品一级毛片| 色婷婷成人网| 中文字幕色站| 高清国产va日韩亚洲免费午夜电影| 一区二区欧美日韩高清免费| 久久中文字幕av不卡一区二区| 久久激情影院| 久久无码高潮喷水| 性欧美在线| 亚洲A∨无码精品午夜在线观看| 四虎成人在线视频| 亚洲日本www| 亚洲国内精品自在自线官| 午夜限制老子影院888| 蜜桃视频一区二区| 欧美在线观看不卡| 狠狠综合久久久久综| 欧美国产在线精品17p| 人妻精品久久久无码区色视| 2022国产91精品久久久久久| 2020国产精品视频| 亚洲成人动漫在线| 自慰高潮喷白浆在线观看| 亚洲综合片| 欧美午夜视频在线| 国产精品三级av及在线观看| 国产精品永久不卡免费视频| 中文字幕免费播放|