www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于SMP8654的MKV播放器設(shè)計(jì)與實(shí)現(xiàn)

摘要:MKV封裝格式是一種新的由開源組織制定的多媒體封裝格式,具有可擴(kuò)展,支持多種視頻和音頻編碼格式等優(yōu)點(diǎn),是高清影片采用的主要封裝格式之一。本文基于SMP8654平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)MKV播放器,能夠支持對(duì)高清MKV文件的播放,并針對(duì)嵌入式系統(tǒng)和高清媒體的特點(diǎn)做了進(jìn)一步優(yōu)化,具有一定的工程意義和市場(chǎng)價(jià)值。
關(guān)鍵詞:MKV;多媒體封裝;SMP8654;播放器;嵌入式系統(tǒng)

0 引言
    隨著電子技術(shù)和多媒體技術(shù)的進(jìn)步,數(shù)字視頻的分辨率逐步提高,開始由SD(標(biāo)準(zhǔn)清晰度)向HD(高清晰度)演變。伴隨著大屏幕液晶顯示技術(shù)的發(fā)展,高清影片開始逐步進(jìn)入到廣大消費(fèi)者的視野。高清播放機(jī)由于支持眾多的視頻和音頻編碼格式,能夠流暢播放1080i/p清晰度的高清影片,并且在輸出方面支持模擬、數(shù)字、HDMI等多種方式。此外在價(jià)格和片源方面相對(duì)于藍(lán)光播放機(jī)有很大優(yōu)勢(shì),將逐步替代VCD、DVD等傳統(tǒng)播放器,成為下一代家庭影音娛樂(lè)的主流產(chǎn)品。
    MKV是一種新的多媒體封裝格式,支持多種視頻和音頻編碼格式,能夠?qū)⒍噙_(dá)16路不同格式的音頻和不同語(yǔ)言的字幕流封裝到一個(gè)文件中,在高清影片中得到了廣泛的應(yīng)用,越來(lái)越多的視頻和影片采用MKV作為其封裝格式。能否支持MKV封裝格式是高清播放機(jī)性能的一個(gè)重
要指標(biāo)。本文提出了一種基于SMP8654平臺(tái)的MKV播放器設(shè)計(jì)與實(shí)現(xiàn)方案,并針對(duì)嵌入式系統(tǒng)和高清媒體的特點(diǎn)做了進(jìn)一步優(yōu)化,能夠提供對(duì)MKV文件的流暢播放。

1 MKV封裝格式
    MKV全稱為Matroska Video,是一種新的多媒體封裝格式。多媒體封裝格式也稱多媒體容器(Multimedia Container),它不同于H264、MPEG-2、MPEG-4這類編碼格式,它只是為多媒體編碼提供了一個(gè)“外殼”,本身不涉及編碼。MKV是由開源組織Matroska Development Team制定的一個(gè)標(biāo)準(zhǔn),總共包括三部分:MKV(Matroska Video)、MKA(Matroska Audio)和MKS(Matroska Subtitles),后兩種格式分別針對(duì)音頻和字幕,應(yīng)用較少。MKV的目的是代替AVI等傳統(tǒng)封裝格式。AVI是Microsoft于1992年推出一種封裝格式。其含義是Audio Video Interactive,就是把視頻和音頻編碼混合在一起儲(chǔ)存。微軟在1996年推出了AVI的改進(jìn)版本AVl2.0。AVI格式上限制比較多,只能有一個(gè)視頻軌道和一個(gè)音頻軌道,還可以有一些附加軌道,如文字等。AVI格式不提供任何控制功能。總體而言,AVI為主的傳統(tǒng)封裝格式結(jié)構(gòu)陳舊,只能包含少數(shù)幾種音視頻格式,并且不夠開放,可擴(kuò)展性差。正因?yàn)槿绱?,才促成了Matroska這類新的多媒體封裝格式的誕生。
    MKV相對(duì)于傳統(tǒng)的封裝格式,有如下優(yōu)點(diǎn):支持可變比特率(VBR),支持錯(cuò)誤檢測(cè)以及修復(fù)軟字幕,支持流式傳輸,強(qiáng)大的開放性和跨平臺(tái)兼容性,支持16路以上的音頻流和字幕流等。Matroska最大的特點(diǎn)是能容納幾乎所有類型的視頻、音頻及字幕流,除H.264以外,也可包括MPEG4、MPEG2、Ac3、AAC等其他視頻和音頻格式,即使是非常封閉的RealMedia及QuicklTime也被它包括進(jìn)去了,并將它們的音視頻進(jìn)行了重新組織來(lái)達(dá)到更好的效果。
    由于MKV封裝格式本身具有眾多優(yōu)點(diǎn),隨著互聯(lián)網(wǎng)和高清影片的流行,MKV格式得到了廣泛的應(yīng)用,互聯(lián)網(wǎng)上越來(lái)越多的高清影片采用MKV格式。然而,MKV是一個(gè)由開源組織制定和推廣的標(biāo)準(zhǔn),缺乏大商業(yè)公司的支持,導(dǎo)致MKV文件的播放缺乏一個(gè)完整和有效的設(shè)計(jì)實(shí)現(xiàn)。在性能和資源受限的嵌入式平臺(tái)上,這個(gè)問(wèn)題尤為嚴(yán)重。雖然目前有很多高清播放機(jī)都提供了對(duì)MKV格式的支持,但是大部分實(shí)現(xiàn)方案都存在支持不完善、播放效率比較低的問(wèn)題,播放高碼率的影片時(shí)會(huì)出現(xiàn)不流暢、畫面卡頓等問(wèn)題,影響觀看效果。本文提出了一種基于SMP8654平臺(tái)的MKV播放器的設(shè)計(jì)與實(shí)現(xiàn)方案,并針對(duì)嵌入式系統(tǒng)的特點(diǎn)做了優(yōu)化,較好地達(dá)到了MKV文件流暢播放的要求。

2 硬件平臺(tái)和軟件總體設(shè)計(jì)
    硬件平臺(tái)以SMP8654芯片為核心,通過(guò)總線與RAM、SATA硬盤、Flash閃存、輸入輸出設(shè)備等外設(shè)相連。SMP8654是Sigma Design公司推出的多媒體播放SoC解決方案,集成了一個(gè)強(qiáng)大的多媒體處理器、強(qiáng)健的內(nèi)容保障系統(tǒng)、新的DDR2內(nèi)存控制器、多個(gè)片上CPU以及完備的系統(tǒng)外圍設(shè)備接口。從媒體播放角度看,smp8654提供了一個(gè)完整支持高清晰度視頻解碼的先進(jìn)解碼引擎,能夠支持對(duì)MPEGl、MPEG-2、MPEG-4、H.264、WMV9、VCl以及AVS等格式的硬件解碼,支持高效能的圖形加速,支持多標(biāo)準(zhǔn)音頻解碼和先進(jìn)的顯示處理能力。Siena Design公司為方便第三方廠商開發(fā)應(yīng)用,提供了與芯片相關(guān)的開發(fā)工具包和開發(fā)框架。本文的工作也基于這個(gè)框架進(jìn)行二次開發(fā)。軟件平臺(tái)方面,由于一個(gè)完善的播放系統(tǒng)已經(jīng)相當(dāng)復(fù)雜,不適合直接操縱底層硬件來(lái)完成功能,需要操作系統(tǒng)的支持。本項(xiàng)目中操作系統(tǒng)采用uclinux,文件系統(tǒng)采用Romfs。uclinux是專為嵌入式系統(tǒng)定制的一款Linux,它具有標(biāo)準(zhǔn)Linux操作系統(tǒng)的穩(wěn)定性、強(qiáng)大網(wǎng)絡(luò)功能等主要優(yōu)點(diǎn),但是卻不像標(biāo)準(zhǔn)Li-nux那樣復(fù)雜,主要針對(duì)沒(méi)有MMU(內(nèi)存管理單元)的微控制器。Romfs是一款專門為嵌入式系統(tǒng)設(shè)計(jì)的文件系統(tǒng),體積小、可靠性好、讀取速度快,是嵌入式系統(tǒng)常用的文件系統(tǒng)。

[!--empirenews.page--]
    媒體文件的播放流程一般包括如下幾個(gè)步驟:系統(tǒng)初始化、判斷文件類型、文件解析、設(shè)置硬件解碼器和音視頻解碼,其中文件解析和音視頻解碼是關(guān)鍵部分。由于SMP8654集成了完善的音視頻硬件解碼器,解碼工作主要由硬件完成,我們只需將音視頻數(shù)據(jù)按要求送入相應(yīng)的解碼緩沖區(qū)即可。整體的軟件架構(gòu)如圖2所示。

 

3 系統(tǒng)關(guān)鍵技術(shù)設(shè)計(jì)和實(shí)現(xiàn)
3.1 MKV文件解析
    MKV文件解析主要是對(duì)MKV格式的各個(gè)組成元素進(jìn)行解析,以獲得必需的音視頻參數(shù)和媒體數(shù)據(jù)。MKV作為一種封裝格式,實(shí)際的視頻和音頻數(shù)據(jù)都被封裝到某一個(gè)子模塊中,要想獲得實(shí)際的數(shù)據(jù),必須首先對(duì)文件進(jìn)行解析,并且文件解析貫穿播放的全過(guò)程。能否有效并正確的解析,關(guān)系到讀取數(shù)據(jù)的準(zhǔn)確性,進(jìn)而影響播放的效果。MKV格式采用可變長(zhǎng)編碼,能夠減少存儲(chǔ)空間,另一方面,也給解析帶來(lái)了新問(wèn)題。
MKV文件格式建立在EBML(Extensible Binary MetaLanguagel基礎(chǔ)上,EBML是一種類似于XML格式的可擴(kuò)展二進(jìn)制元語(yǔ)言,使用可變長(zhǎng)度的整數(shù)存儲(chǔ),以節(jié)省空間。EBML的基本結(jié)構(gòu)是典型的TLV結(jié)構(gòu),有三部分組成:

    ID標(biāo)志屬性類型,size為后面data部分的大小,data部分為ID所標(biāo)識(shí)屬性的實(shí)際數(shù)據(jù),ID和size均為可變長(zhǎng)編碼的整數(shù)。整數(shù)的長(zhǎng)度為length=1+[number of leading zero bits]。前面的零的個(gè)數(shù)最多為7個(gè),即最多能表示56個(gè)比特的整數(shù)。文件中不允許出現(xiàn)大于56比特的數(shù)。

[!--empirenews.page--]
    MKV文件格式的顯著特點(diǎn)是模塊化、結(jié)構(gòu)化存儲(chǔ)。每一個(gè)高一級(jí)的元素由若干次一級(jí)的元素組成,直至最基本的組成元素,每個(gè)元素都是一個(gè)TLV結(jié)構(gòu)。一個(gè)標(biāo)準(zhǔn)的MKV文件有兩部分組成:EBML Header和Segment。EBML Header由EBMLVersion、DocType等子元素組成,包含了文件的版本、文檔類型等相關(guān)信息。Segment部分保存了媒體文件的視頻和音頻的實(shí)際數(shù)據(jù),其data部分又可以分為SeekHead、Tracks、Cluster等若干子元素(表1)。所有元素的處理都可以按照一個(gè)統(tǒng)一的流程來(lái)進(jìn)行。我們可以仿照TCP/IP協(xié)議分層的思想,對(duì)每一層的每個(gè)功能都用一個(gè)函數(shù)來(lái)完成,使用更底層的函數(shù)完成此項(xiàng)功能,并可被更高層的函數(shù)調(diào)用。文件解析時(shí),從文件頂層開始,每當(dāng)上一級(jí)的元素解析到有某個(gè)子元素時(shí),調(diào)用此函數(shù)進(jìn)行次一級(jí)的解析,依次直至文件結(jié)束,即可完成對(duì)文件的解析處理。整個(gè)MKV的解析調(diào)用過(guò)程如圖3所示。Hea-der Parse和Segment Parse為文件最上層的元素解析函數(shù),Cluster Parse、Tracks_Parse等為次一級(jí)組成元素的解析函數(shù)。ebml_read_ele-ment_idebml read element length為最底層基本組成元素的解析函數(shù)。


3.2 設(shè)置硬件解碼器音視頻核心參數(shù)
    Tracks用來(lái)描述文件中包含的每一路多媒體流的信息。一路多媒體流用一個(gè)TrackEntry描述,所有的track都要在一個(gè)Tracks中進(jìn)行描述。一個(gè)TrackEntry主要包含:TrackNumber(判定屬于哪一路流的ID)、TrackType(video、audio或者subtitle)、TimeScale(時(shí)間戳單位)、CodecID(編碼格式);CodecPrivate(不同的編碼格式所需的私有數(shù)據(jù))等;對(duì)于視頻,還包含以下信息:PixelWidth、PixelHeight等。對(duì)于音頻,track還包含以下信息:channels、Sampling Frequency等。這些是關(guān)于音視頻能否正確解碼播放的關(guān)鍵參數(shù),需要在解析時(shí)獲得,然后通過(guò)硬件操縱函數(shù)設(shè)置。
    Cluster包含實(shí)際的數(shù)據(jù),一個(gè)Cluster塊,通常是幾秒鐘時(shí)間跨度的媒體數(shù)據(jù),一個(gè)文件有數(shù)以千計(jì)的Cluster。每個(gè)Cluster又有若干個(gè)BlockGroup。根據(jù)Cluster和BlockGroup的起始pts和持續(xù)時(shí)間,可以計(jì)算出當(dāng)前Block的實(shí)際pts。PTS是用來(lái)確定播放時(shí)間的重要數(shù)據(jù),也是音視頻同步的關(guān)鍵信息。這部分信息要在送入視頻或音頻數(shù)據(jù)的同時(shí)設(shè)置硬件解碼器。
3.3 性能優(yōu)化
    MKV封裝的影片通常為高清影片,分辨率在1920×1080,即使采用H.264等先進(jìn)編碼格式,碼率依然非常高。同時(shí),MKV支持可變碼率,可變碼率能夠減少文件的體積,但是劇烈波動(dòng)的碼率會(huì)使播放不能流暢進(jìn)行。在高清文件中碼率一般在10~30M/ps之間,最高可達(dá)60Mp/  s,如此高的碼率,如果不做特殊處理,播放時(shí)很容易出現(xiàn)卡頓,播放不流暢等問(wèn)題。為解決這個(gè)問(wèn)題,我們從兩方面考慮。
    在解析方面,解析的效率關(guān)系到能否盡快將數(shù)據(jù)讀入緩沖區(qū),如果處理時(shí)間過(guò)長(zhǎng),造成一段時(shí)間內(nèi)緩沖區(qū)為空,這時(shí)候就會(huì)出現(xiàn)卡頓。  MKV文件中通常包含一路視頻、多路音頻和多路字幕,播放時(shí)只選中其中一路音頻和一路字幕,其他路的數(shù)據(jù)可以被視為無(wú)效數(shù)據(jù)。在解析時(shí),可以根據(jù)Block頭的標(biāo)記判斷出這路數(shù)據(jù)是當(dāng)前播放需要的有效數(shù)據(jù)還是無(wú)效數(shù)據(jù)。如果是有效數(shù)據(jù),則繼續(xù)解析,并將音視頻數(shù)據(jù)送入緩沖區(qū),如果是無(wú)效數(shù)據(jù),不進(jìn)行解析,直接移動(dòng)文件指針到下一個(gè)Block,這樣可大大加快文件解析和數(shù)據(jù)讀取速度。
   在播放方面,通常播放時(shí)的處理流程是讀取一幀數(shù)據(jù),然后送入硬件解碼器,等到收到硬件解碼器為空的信號(hào),再讀取下一幀的數(shù)據(jù)。如果是處理低碼率文件的播放,這樣做不會(huì)有問(wèn)題,但是當(dāng)文件分辨率比較高,碼率比較高時(shí),解析讀取時(shí)問(wèn)和解碼時(shí)間都會(huì)增加,這樣做就會(huì)造成卡頓。為解決這個(gè)問(wèn)題,我們?cè)趦?nèi)存中設(shè)計(jì)了一個(gè)緩沖FIFO,相當(dāng)于一個(gè)滑動(dòng)窗口(圖4),緩沖區(qū)可以存放若干個(gè)幀(一幀就是一個(gè)Block,根據(jù)幀的大小緩沖區(qū)存放的個(gè)數(shù)不等)。當(dāng)緩沖區(qū)未滿時(shí),讀取文件中的一個(gè)Block并解析,然后將實(shí)際數(shù)據(jù)到緩沖區(qū)的隊(duì)尾。當(dāng)發(fā)現(xiàn)
硬件緩沖區(qū)空閑時(shí),將FIFO隊(duì)首的數(shù)據(jù)從內(nèi)存直接送入硬件緩沖區(qū),不需要再去讀取文件。由于緩沖區(qū)中有多個(gè)幀,能夠提供一定的緩沖,這樣在碼率波動(dòng)時(shí)就仍然能夠及時(shí)提供數(shù)據(jù),避免出現(xiàn)硬件緩沖區(qū)為空造成的卡頓,播放不流暢等問(wèn)題。

 

4 結(jié)語(yǔ)
    本文詳細(xì)介紹了MKV封裝格式的特點(diǎn)。并基于SMP8654提出了一種MKV播放器的設(shè)計(jì)與實(shí)現(xiàn)方案,經(jīng)驗(yàn)證,能夠達(dá)到對(duì)高清MKV文件的流暢播放,并已經(jīng)實(shí)際應(yīng)用到產(chǎn)品上。接下來(lái)將做進(jìn)一步研究,在MKV播放器的基礎(chǔ)上,設(shè)計(jì)一種針對(duì)多種封裝格式的通用媒體播放器框架,將FLV、FLAC等其他格式也融合進(jìn)來(lái),并提供較好的可擴(kuò)展性,方便后續(xù)擴(kuò)充其他的封裝格式。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟(jì)和信息化委員會(huì)、上海市發(fā)展和改革委員會(huì)、上海市商務(wù)委員會(huì)、上海市教育委員會(huì)、上海市科學(xué)技術(shù)委員會(huì)指導(dǎo),東浩蘭生(集團(tuán))有限公司主辦,東浩蘭生會(huì)展集團(tuán)上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動(dòng)駕駛

推進(jìn)卓越制造,擴(kuò)大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會(huì)正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項(xiàng)目。...

關(guān)鍵字: 智能制造 BSP 汽車系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團(tuán)宣布,新世代首款量產(chǎn)車型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車展。中國(guó)專屬版車型也將在年內(nèi)與大家見(jiàn)面,2026年在國(guó)內(nèi)投產(chǎn)。 寶馬集團(tuán)董事...

關(guān)鍵字: 寶馬 慕尼黑 BSP 數(shù)字化

北京2025年9月4日 /美通社/ --?在全球新一輪科技革命與產(chǎn)業(yè)變革的澎湃浪潮中,人工智能作為引領(lǐng)創(chuàng)新的核心驅(qū)動(dòng)力,正以前所未有的深度與廣度重塑各行業(yè)發(fā)展格局。體育領(lǐng)域深度融入科技變革浪潮,駛?cè)霐?shù)字化、智能化轉(zhuǎn)型快車...

關(guān)鍵字: 人工智能 智能體 AI BSP

上海2025年9月2日 /美通社/ -- 近日,由 ABB、Moxa(摩莎科技)等八家企業(yè)在上海聯(lián)合發(fā)起并成功舉辦"2025 Ethernet-APL 技術(shù)應(yīng)用發(fā)展大會(huì)"。會(huì)議以"破界?融合...

關(guān)鍵字: ETHERNET 智能未來(lái) BSP 工業(yè)通信

傳感器模塊能實(shí)現(xiàn)便捷無(wú)接觸的后備箱或側(cè)滑門開啟,適配各種車輛架構(gòu) 該24 GHz雷達(dá)傳感器可集成于保險(xiǎn)杠或底盤上,并通過(guò)特定的手勢(shì)或腳部動(dòng)作觸發(fā)響應(yīng) 已為多家歐洲主流車企啟動(dòng)量產(chǎn)交付 德國(guó)布爾2025...

關(guān)鍵字: 傳感器 BSP 觸發(fā) 保險(xiǎn)杠

以高效節(jié)能方案繪制AI算力綠色未來(lái) 上海2025年8月29日 /美通社/ -- 8月28日,臺(tái)達(dá)受邀出席"2025中國(guó)智算產(chǎn)業(yè)綠色科技大會(huì)",全方位分享臺(tái)達(dá)在智算領(lǐng)域的前沿洞見(jiàn)與綠色解決方...

關(guān)鍵字: AI 可持續(xù)發(fā)展 數(shù)據(jù)中心 BSP

淄博2025年8月29日 /美通社/ -- 8月26日至27日,TÜV南德意志集團(tuán)(以下簡(jiǎn)稱"TÜV南德")受邀參加由淄博市...

關(guān)鍵字: BSP 人工智能 信息安全 新加坡

北京2025年8月28日 /美通社/ -- 近日,北京亦莊創(chuàng)新發(fā)布消息,北京經(jīng)濟(jì)技術(shù)開發(fā)區(qū)(簡(jiǎn)稱北京經(jīng)開區(qū),又稱北京亦莊)以"高效辦成一件事"為抓手,圍繞企業(yè)信用修復(fù)的全流程全環(huán)節(jié),打造經(jīng)開區(qū)特色的&...

關(guān)鍵字: 數(shù)字化 集成 BSP 數(shù)據(jù)共享

全球半導(dǎo)體封裝市場(chǎng)正向PLP、ECP等先進(jìn)技術(shù)傾斜,以應(yīng)對(duì)5G和高性能計(jì)算需求。但國(guó)內(nèi)上規(guī)模的PLP廠商不超過(guò)五家,芯友微憑借技術(shù)創(chuàng)新和成本優(yōu)勢(shì)已占據(jù)一席之地。面對(duì)行業(yè)競(jìng)爭(zhēng)和終端需求波動(dòng),張博威認(rèn)為:“機(jī)會(huì)永遠(yuǎn)都在,關(guān)鍵...

關(guān)鍵字: PLP ECP 封裝 芯友微 XINYOUNG
關(guān)閉
關(guān)閉