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

嵌入式高清視頻文件的硬解碼播放實現

2017-03-13 05:37:45重慶郵電大學微電子工程重點實驗室王代成朱仁義
電子世界 2017年4期
關鍵詞:嵌入式

重慶郵電大學 微電子工程重點實驗室 王代成 徐 鵬 朱仁義

嵌入式高清視頻文件的硬解碼播放實現

重慶郵電大學 微電子工程重點實驗室 王代成 徐 鵬 朱仁義

現了H264視頻和AAC音頻合成的高清視頻文件在Linux嵌入式平臺的播放方法。采用FFmpeg解碼庫對文件進行格式封裝解碼,利用S5PV210處理器的MFC(Multi Format Codec)硬件編解碼模塊進行音視頻解碼,實現了Linux系統下的音視頻同步播放,同時降低了高清視頻文件播放時對CPU資源的占用率。

嵌入式;高清視頻;硬解碼;音視頻同步

0.引言

高清視頻資源的日益豐富和用戶對移動高清視頻播放需求的增長,使得基于嵌入式的高清視頻播放終端的設計成為巨大的需求。

開源項目FFmpeg提供了一系列的多媒體視頻處理工具,但其包含的音頻/視頻解碼軟件庫在占用的CPU資源巨大,在低主頻的嵌入式終端中并不能良好運行,所以低主頻的嵌入式終端需要配合視頻硬件加速解碼。三星公司推出的多媒體應用處理器S5PV210采用ARM CortexTM-A8內核,內建MFC Multi Format Codec),支持MPEG-1/2/4、H.263、H.264等格式視頻的編解碼,非常適合應用于高清視頻終端。因此本文提出了一種基于FFmpeg與S5PV210處理器的硬解碼相結合的高清視頻文件播放方法。

1.功能實現

1.1 整體設計

高清視頻文件播放的整體方案設計如圖1所示。

圖1 高清視頻播放的整體框圖

首先將高清視頻文件輸入至音視頻分離器,取出封裝中的音視頻幀并儲存于緩存中,為實現同步播放,這里定義一個結構體儲存幀數據和時間戳:

typedef struct av_frame {

double timeStamp;

unsigned int size;

unsigned char* data;

char frameType;

} av_frame;

其中timeStamp代表音視頻幀時間戳; size代表幀長;data代表幀數據指針frameType代表視頻幀類型(音頻幀保留)。

以上述結構作為節點建立音視頻緩存隊列,分別儲存音、視頻幀數據。

然后音視頻解碼器分別從音視頻隊列中取出幀數據進行音視頻解碼,再將音視頻數據根據時間戳進行音視頻同步播放。

1.2 文件封裝格式解碼

文件封裝格式解碼使用FFmpeg庫,FFmpeg庫功能十分強大,解碼步驟如下:

①初始化FFmpeg庫;

②打開本地高清視頻文件;

③讀出媒體文件信息,并使用串口輸出;

④讀取碼流中的音頻若干幀或者視頻一幀,按解碼時間戳dts順序存入緩存隊列中。然后重復步驟④直至碼流中所有數據幀讀取完畢;

⑤最后在程序結束時關閉文件。

1.3 視頻解碼

視頻解碼使用三星公司提供的MFC硬件解碼庫。解碼步驟如下:

①打開MFC設備,將設備的物理地址映射至虛擬地址;②使用獲取設備的虛擬地址,即視頻幀的輸入地址;③初始化MFC設備為H264解碼模式;

④從緩存隊列中取出視頻幀,解析視頻幀按將SEI、SPS、PPS、I組合,而P幀和B幀作為獨立輸入,使用MFC解碼函數進行解碼;

⑤獲取解碼后的數據;

⑥重復步驟④⑤不斷的進行數據解碼。

1.4 音頻解碼

音頻解碼使用開源的的FAAD解碼庫。解碼步驟如下:

①從緩存隊列中取出AAC音頻幀,解析AAC幀頭信息,打開FAAD解碼庫;②使用步驟①中解析出來的幀頭信息對FAAD解碼庫初始化;③從音頻幀中取出去掉幀頭的AAC數據,調用FAAD解碼庫函數進行解碼,然后獲取解碼后的數據;

④不斷的從緩存隊列中取出新的音頻幀,重復調用步驟③。

1.5 音視頻同步播放

Linux聲卡設備為阻塞性IO,只要用AAC幀頭信息中的參數設置,音頻就可以按固定速率進行播放,并阻塞輸入。因此本文采用視頻同步到音頻的方式進行音視頻同步。根據當前音視頻顯示時間戳pts動態調整每一幀視頻畫面播放的持續時間。

2.功能測試

實驗采用天嵌E8開發板,該開發板采用S5PV210為處理器,內存512MB,主頻1GHz,操作系統為Linux。

圖3 高清視頻文件信息

圖4 高清視頻播放效果圖

整個程序編譯后代碼2.58MB。程序運行后,內存耗費140MB,CPU耗費14%。

程序運行后,視頻解碼流暢且音視頻播放同步,使用調試串口輸出的視頻文件信息如圖3所示。

由以上信息,可知視頻是分辨率1920*1080的1080p高清視頻。

播放效果如圖4所示。

3.結束語

提出了嵌入式高清視頻文件硬解碼播放方法,使用功能豐富的FFmpeg開源解碼庫進行文件格式封裝解碼,同時使用S5PV210處理器進行H264硬解碼,既支持了多格式的視頻文件封裝又降低了高清視頻播放時的對處理器資源的占用率。

[1]顧艷華,王闖.基于樹莓派的高清視頻播放器的設計與實現[J].科技視界,2015(29):30-30.

[2]楊富豪.高清視頻解碼技術研究[J].數字技術與應用,2016(5): 86-86.

[3]王國裕,羅子文,張紅升.基于Linux系統的DMB接收終端設計[J].數字技術與應用,2014(11):146-147.

[4]康維新.嵌入式Linux系統開發與應用[M].機械工業出版社,2011.

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 亚洲三级视频在线观看| 在线观看的黄网| 色视频国产| 最新无码专区超级碰碰碰| 无码人妻热线精品视频| 亚洲无码精彩视频在线观看| 少妇被粗大的猛烈进出免费视频| 国产乱子伦无码精品小说| 精品国产一区二区三区在线观看 | 欧美国产成人在线| 日韩精品中文字幕一区三区| 久久久久免费看成人影片 | 中文字幕亚洲乱码熟女1区2区| 久久国产精品嫖妓| 美女国内精品自产拍在线播放| 久久永久精品免费视频| 99精品国产电影| Aⅴ无码专区在线观看| 久久久久免费精品国产| 国产日韩AV高潮在线| 美女黄网十八禁免费看| 国禁国产you女视频网站| 国产亚洲精品97在线观看| 国产成人福利在线| 亚洲婷婷在线视频| 欧美成人精品一级在线观看| 久久精品视频亚洲| 国产在线观看91精品亚瑟| 青青草原偷拍视频| 国产精品美女自慰喷水| 欧美午夜理伦三级在线观看| 在线中文字幕日韩| 国产亚洲视频中文字幕视频| 国产精品999在线| 国产电话自拍伊人| 亚洲国产AV无码综合原创| 欧美国产视频| 99久久精品美女高潮喷水| 99热这里只有免费国产精品 | 欧美日本视频在线观看| 无码精品国产VA在线观看DVD| 久久91精品牛牛| 成人无码一区二区三区视频在线观看| 亚洲无限乱码| 亚洲无码免费黄色网址| 97久久超碰极品视觉盛宴| 国产成熟女人性满足视频| 欧美精品一二三区| 亚洲啪啪网| 国产精品亚欧美一区二区| 九色国产在线| 久久婷婷五月综合97色| 亚洲天堂网视频| 天天操天天噜| 干中文字幕| 色播五月婷婷| 国产菊爆视频在线观看| 午夜精品区| 丁香六月激情综合| 欧美综合中文字幕久久| 小说 亚洲 无码 精品| 国产成人福利在线视老湿机| 欧美特黄一级大黄录像| 国产一区二区在线视频观看| 日本福利视频网站| 亚洲精品无码日韩国产不卡| 午夜视频在线观看免费网站 | 在线观看国产精美视频| 欧美在线视频a| 色九九视频| 2020国产免费久久精品99| 亚洲αv毛片| 欧美国产日韩在线| 久久精品aⅴ无码中文字幕| 国产全黄a一级毛片| 久久这里只有精品66| 色噜噜在线观看| 又爽又大又光又色的午夜视频| 欧美成人亚洲综合精品欧美激情| 狠狠躁天天躁夜夜躁婷婷| 久久久久亚洲AV成人网站软件| 日韩欧美中文在线|