專利名稱:多媒體文件播放方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及多媒體文件數(shù)據(jù)處理技術(shù),尤其涉及一種多媒體文件播放方法和裝置。
背景技術(shù):
當(dāng)前計算機(jī)中或網(wǎng)絡(luò)多媒體中,包含音視頻內(nèi)容的文件類型非常多,如mp3格式、mp4格式、mkv格式、ts格式等;同時音視頻編碼格式也非常多,如音頻有mpeg-2、ac3、aac等編碼格式,視頻有H264、mpeg2、vcl等編碼格式。這些音視頻與字幕內(nèi)容可能通過多種封裝方式組合成一個文件用于傳播或分發(fā)。多媒體文件播放的一般過程為:文件識別過程,音視頻編碼格式識別過程,音頻解碼、視頻解碼及字幕解碼過程,同步與輸出過程。由于文件類型非常多,內(nèi)含的音視頻編碼格式也可能有很多種,因此對一個文件,從打開文件到提取出音視頻及字幕的基本數(shù)據(jù)流用于解碼和輸出需要經(jīng)過很多的準(zhǔn)備過程:包括封裝方式識別(即文件識別),音視頻編碼方式識別,文件時長識別,元數(shù)據(jù)識別,幀列表識別,幀邊界識別等。然后按照一定封裝規(guī)則提取出解碼器可以識別的幀數(shù)據(jù)或基本數(shù)據(jù)流。最初的文件識別,主要是識別封裝方式,找到能進(jìn)行解封裝的對應(yīng)解析器。所以文件識別過程是一個漫長的嘗試和檢測校驗過程。為了快速和準(zhǔn)確的進(jìn)行多媒體文件的文件識別,現(xiàn)有技術(shù)已經(jīng)提出了多種方案。例如,可根據(jù)文件的后綴名進(jìn)行識別,如常見的mp3播放器軟件只識別后綴名為mp3格式的或wma格式文件,其他格式的文件不能用此類軟件打開。這種方法能夠快速根據(jù)后綴名確定文件封裝方式,直接使用mp3文件類型的解析器對文件進(jìn)行識別以快速獲取基本數(shù)據(jù)流。但是這種方式支持類型有限,并且一旦后綴名被人為破壞或更改,將無法用此類軟件打開或播放文件內(nèi)容。另外,一些多功能播放器軟件中內(nèi)置了一批文件解析器。當(dāng)某一個多媒體文件被該軟件打開時,軟件會將文件頭部或文件其他關(guān)鍵部位信息,作為識別信息,與這一批文件解析器進(jìn)行逐一輪詢。若第一個解析器不識別,轉(zhuǎn)交第二個解析器進(jìn)行識別,直到找到能夠識別該文件的文件解析器,然后進(jìn)行播放。或全部輪訓(xùn)完畢得到該文件無法被該軟件打開的結(jié)論。這種方式不關(guān)心也不擔(dān)心文件后綴名的更改或破壞,能夠盡最大可能的提高文件的識別能力,但是逐一輪詢的方式會消耗大量的時間,尤其是在列表播放時快速切換文件進(jìn)行預(yù)覽時,長時間的等待正確識別和音視頻輸出會嚴(yán)重影響用戶體驗。如何面對海量文件格式,能夠快速識別文件封裝格式進(jìn)而快速輸出音視頻內(nèi)容給觀眾,是體現(xiàn)一個多媒體播放器性能的標(biāo)準(zhǔn)之一。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種多媒體文件播放方法和裝置,以快速識別到正確的解析器。第一方面,本發(fā)明實施例提供一種多媒體文件播放方法,包括:
當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識另IJ,以獲得與所述多媒體文件對應(yīng)的解析器;采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。在第一方面的第一種可能的實現(xiàn)方式中,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列包括:根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列包括:根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列。根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列包括:根據(jù)多媒體文件的屬性信息,結(jié)合各解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列。根據(jù)第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述各解析器的屬性信息包括:解析復(fù)雜度、所需字節(jié)長度、文件解析器平均消耗的計算時間或文件解析器重復(fù)需要嘗試的次數(shù);所述播放歷史信息包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率。所述多媒體文件的屬性信息為通用資源標(biāo)識符,所述通用資源標(biāo)識符包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站或文件后綴名。根據(jù)第一方面、第一方面的第一種至第三種可能的實現(xiàn)方式的任意一種,在第四種可能的實現(xiàn)方式中,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器包括:根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列;按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。根據(jù)第一方面、第一方面的第一種至第三種可能的實現(xiàn)方式的任意一種,在第五種可能的實現(xiàn)方式中,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器包括:根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組;按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列;通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別;在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的各解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。第二方面,本發(fā)明實施例提供一種多媒體文件播放裝置,包括:解析器排序模塊,用于當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;
解析器識別模塊,用于按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器;解封裝處理模塊,用于采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。在第二方面的第一種可能的實現(xiàn)方式中,解析器排序模塊具體用于根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列。根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列包括:根據(jù)多媒體文件的屬性信息,結(jié)合各解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列。根據(jù)第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述各解析器的屬性信息包括:解析復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或文件解析器重復(fù)需要嘗試的次數(shù);所述播放歷史信息包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率。所述多媒體文件的屬性信息為通用資源標(biāo)識符,所述通用資源標(biāo)識符包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站或文件后綴名。根據(jù)第二方面、第二方面的第一種至第三種可能的實現(xiàn)方式的任意一種,在第四種可能的實現(xiàn)方式中,解析器識別模塊包括:解析器分組單元,用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列;解析器識別單元,用于按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。根據(jù)第二方面、第二方面的第一種至第三種可能的實現(xiàn)方式的任意一種,在第五種可能的實現(xiàn)方式中,解析器識別模塊包括:解析器隊列建立單元,用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組;解析器添加單元,用于按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列;多媒體文件識別單元,用于通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別;解析器隊列優(yōu)化單元,用于在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的各解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。本發(fā)明實施例提供的技術(shù)方案,由于按照設(shè)定的優(yōu)先級規(guī)則對解析器進(jìn)行了排序,所以能夠更快地在解析器隊列中識別出與多媒體文件對應(yīng)的解析器,提高了識別速度。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例一所提供的多媒體文件的播放方法的流程圖;圖2為本發(fā)明實施例二所提供的多媒體文件的播放方法的流程圖;圖3為本發(fā)明實施例三所提供的多媒體文件的播放方法的流程圖;圖4A為本發(fā)明實施例四所提供的多媒體文件的播放方法的示意圖;圖4B為本發(fā)明實施例四所提供的多媒體文件的播放方法的流程圖;圖5為本發(fā)明實施例五所提供的多媒體文件播放裝置的結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例六所提供的多媒體文件播放裝置600的結(jié)構(gòu)示意圖;圖7為本發(fā)明實施例七所提供的一個多媒體文件播放器的基本組成示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。實施例一圖1為本發(fā)明實施例一所提供的多媒體文件的播放方法的流程圖。本實施例的方法適用于在打開多媒體文件時,快速找到最合適的解析器對多媒體文件進(jìn)行最快的識別和解析。本實施例的多媒體文件的播放方法可以由配置在計算機(jī)、播放器、電視機(jī)、手機(jī)、手持多媒體終端等的多媒體文件的播放裝置來執(zhí)行,該播放裝置可以由硬件或軟件的形式實現(xiàn)。本實施例的方法包括如下步驟:步驟110、當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;本實施例典型地適用于可提供多種解析器的多功能媒體播放器軟件,在進(jìn)行多媒體文件識別之前,首先依據(jù)優(yōu)先級規(guī)則對解析器進(jìn)行重新排序,而區(qū)別于現(xiàn)有技術(shù)的解析器隊列始終固定不變的方案。所謂的優(yōu)先級規(guī)則可以有多種,例如按照解析器的屬性信息等進(jìn)行排序。所述的優(yōu)先級規(guī)則指的是需要參考多種因素對解析器進(jìn)行排序,所述的多種因素例如是文件解析器相關(guān)的因素,即各解析器的屬性信息,一般是指能區(qū)分其解析多媒體文件能力的信息。解析器的屬性信息優(yōu)選可包括解析器的解析復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或解析器重復(fù)需要嘗試的次數(shù)等,上述屬性信息可以單獨用來排序,也可以結(jié)合多個屬性用來進(jìn)行解析器排序。所需字節(jié)長度即解析器識別多媒體文件可能需要的輸入數(shù)據(jù)的長度。此外,文件特性、協(xié)議類型、網(wǎng)絡(luò)下載速度等影響到數(shù)據(jù)讀取和計算等各方面因素也可作為對解析器進(jìn)行排序的依據(jù)。優(yōu)先級規(guī)則可隨當(dāng)前情況動態(tài)變化,也可以由用戶維護(hù)更新。例如,根據(jù)解析器的算法復(fù)雜度對多個解析器進(jìn)行了重排序后得到了一個解析器隊列,在逐一通過該解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別的過程中,如果該解析器隊列中的前兩個解析器都不能識別該多媒體文件,則可以按照解析器平均消耗的計算時間對其余的解析器進(jìn)行重新排序。對于優(yōu)先級規(guī)則,還可以通過場景辨識,人工干預(yù)等確定解析器的排序,從而實現(xiàn)最快的識別和解析速度。通過場景辨識的方法識別解析器排序,例如可以是判斷當(dāng)前場景是直播或點播,例如某些網(wǎng)站提供直播和點播專區(qū),而當(dāng)前多數(shù)的直播場景是通過HLS的方式進(jìn)行直播的,所以可預(yù)先設(shè)置一優(yōu)先級規(guī)則為,在識別到多媒體文件打開的場景是直播場景時,就選擇HLS解析器的排序優(yōu)先。在此基礎(chǔ)上,后面的解析器可以根據(jù)其他屬性信息進(jìn)行排序。優(yōu)先級規(guī)則也可以是根據(jù)多媒體文件所在路徑對解析器進(jìn)行排序。例如對于電視錄制(PVR)的文件一般提供一個.ts后綴名的文件,同時提供一個.1dx的服務(wù)索引文件,如果是發(fā)現(xiàn)需要打開的.ts文件相同目錄下有.1dx的文件,則可以將pvr的文件解析器優(yōu)先排序。再例如藍(lán)光文件的文件夾也符合某些特定規(guī)則,播放器可以通過目錄敏感性等方式識別出當(dāng)前播放可能是藍(lán)光播放場景/pvr播放場景等,將使用場景支持的解析器進(jìn)行優(yōu)先排序。通過人工干預(yù)的方法對解析器進(jìn)行排序的優(yōu)先級規(guī)則,例如可以是根據(jù)多媒體文件的IP地址和解析器的關(guān)聯(lián)關(guān)系強行把IP地址對應(yīng)的解析器排在解析器隊列的最前面,從而最先使用排在最前面的解析器進(jìn)行識別解析。上述各種優(yōu)先級規(guī)則可以單獨采用也可以結(jié)合采用,例如在場景辨識的優(yōu)先級規(guī)則基礎(chǔ)上,再使用基于人工干預(yù)的優(yōu)先級規(guī)則。步驟120、按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器;步驟130、采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。具體而言,通過根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列,再按照解析器的排序,采用解析器注意對獲取到的多媒體文件進(jìn)行識別,以識別到對應(yīng)的解析器,以實現(xiàn)采用最適合的解析器對多媒體文件進(jìn)行解封裝處理并輸出基本數(shù)據(jù)流。本發(fā)明實施例提供的多媒體文件播放方法,通過在打開多媒體文件時,考慮到設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,從而能夠?qū)崿F(xiàn)快速準(zhǔn)確的找到解析器對多媒體文件進(jìn)行解封裝處理,進(jìn)而實現(xiàn)快速的音視頻字幕輸出,提升了用戶體驗。進(jìn)一步的,在上述實施例的基礎(chǔ)上,步驟110的具體執(zhí)行操作為:根據(jù)各解析器的屬性信息、播放歷史信息與解析器的關(guān)聯(lián)關(guān)系、和多媒體文件的屬性信息中的一個或任意組合,對多個解析器進(jìn)行排序,形成解析器隊列。優(yōu)選是可以根據(jù)多媒體文件的屬性信息對多個解析器進(jìn)行排序,形成解析器隊列。當(dāng)然,在本可選擇的實施例中,也可以根據(jù)多媒體文件的屬性信息,并結(jié)合各解析器的屬性信息、播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對解析器進(jìn)行排序。所述多媒體文件的屬性信息為通用資源標(biāo)識符(URI),所述URI包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站和文件后綴名中的一個或任意組合。所述各解析器的屬性信息可以包括:解析器的算法復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或解析器重復(fù)需要嘗試的次數(shù)。所述播放歷史信息可以包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率。上述的根據(jù)多媒體文件的屬性信息,并結(jié)合解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列可以參考下面的具體操作來說明:例如一個多媒體文件交給播放器中的文件解析器進(jìn)行識別時包含的因素主要是多媒體文件的 URI,例如 URI=http://video, qiy1.com/live/003.m3u8,所述 URI 包括文件的協(xié)議類型(http://協(xié)議),多媒體文件所在的網(wǎng)站(qiy1.com),文件后綴名(.m3u8)信息,根據(jù)此URI類型,可以得到的信息是:后綴名(.m3u8)類型基本使用http livestreaming的HLS的文件解析器,因此可以將HLS的解析器作為最優(yōu)選的解析器,排序在先。再根據(jù)本地解析器的解析復(fù)雜度知道的信息是,HLS的解析器只需要對前面幾行信息進(jìn)行識別,如不超過128字節(jié)就可以確定是否是HLS可以識別的文件。綜合得到的信息是:HLS作為最優(yōu)選識別器,識別時間為I個運算周期(為容易理解I個運算周期此處可以簡單定義為:對于IGHz的CPU運算周期是10ms),使用字節(jié)長度128字節(jié)。其次,根據(jù)URI,.m3u8文件類型是基于ts文件分片的文件列表類型,文件內(nèi)容還有可能是ts類型或mp3的playlist列表類型。再根據(jù)解析ts文件的解析器的解析復(fù)雜度(如大約需要100個運算周期)和識別ts文件需要的數(shù)據(jù)長度(對ts文件,默認(rèn)設(shè)置的512K字節(jié)可能是不夠的,大概需要2048K數(shù)據(jù)),mp3的playlist解析器可能需要0.5個運算周期,使用64個字節(jié)即可。綜上URI信息和本地解析器的解析復(fù)雜度,我們可以優(yōu)先使用HLS的解析器,其次使用MPEGTS解析器(ts格式的解析器),然后是M3U (mp3playlist解析器)解析器,文件讀取使用http方式,可以先下載128字節(jié)供HLS解析器使用,后續(xù)再下載2048K字節(jié)給MPEGTS解析器使用。上述的對解析器進(jìn)行排序的過程考慮了 http協(xié)議的數(shù)據(jù)下載耗時,HLS及MPEGTS等解析器的算法復(fù)雜度,每個解析器使用的數(shù)據(jù)長度和URI。同時,對于之前播放過的歷史信息,類似 UR1:http: //video, qiy1.com/live/001.m3u8 或 002.m3u8 等符合設(shè)定規(guī)律的一批文件,設(shè)定規(guī)律例如是多媒體文件來自同一路徑且多媒體文件后綴名相同的文件,但不限于此。最終使用的是MPEGTS文件解析器,這樣003.m3u8可以優(yōu)選MPEGTS作為最優(yōu)解析器使用。實施例二圖2為本發(fā)明實施例二所提供的多媒體文件的播放方法的流程圖,在上述實施例技術(shù)方案的基礎(chǔ)上,進(jìn)一步進(jìn)行了優(yōu)化。參照圖2,本實施例中,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器的操作具體包括如下步驟:步驟210、根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列;步驟220、按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。本發(fā)明實施例通過分組形成了多個解析器隊列,特別適用于具備多核并行處理能力的情況,多媒體文件可以在多個解析器隊列同時進(jìn)行識別,從而進(jìn)一步提高了識別解析器的速度。根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)所進(jìn)行的分組,主要可考慮可并行處理的各系統(tǒng)的負(fù)載情況。例如,若當(dāng)前有兩個并行處理單元空閑,則可將解析器分為兩組,啟用兩個任務(wù)對解析器隊列進(jìn)行遍歷。實施例三圖3為本發(fā)明實施例三所提供的多媒體文件的播放方法的流程圖,在上述實施例一的基礎(chǔ)上,進(jìn)一步進(jìn)行了優(yōu)化。參照圖3,本實施例中仍然適用于多核處理系統(tǒng),在對解析器進(jìn)行排序之后,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器的操作具體也可以包括如下步驟:步驟310、根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組;本實施例中,首先是建立一個或多個解析器組,優(yōu)選是至少兩個解析器組,而并不確定每個解析器歸屬于哪個組。步驟320、按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列;在前述步驟110已排序的解析器隊列中,按照排序逐個選擇解析器,添加至各解析器中,每組中形成一個解析器子隊列。不必將所有已排序的解析器都添加至解析器組中,優(yōu)選是每組的解析器子隊列僅包括一個解析器。步驟330、通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別;由于有多個解析器子隊列,所以多核處理系統(tǒng)可以并行對各個子隊列進(jìn)行文件識別。步驟340、在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。若某個解析器子隊列獲取到對應(yīng)的解析器,則識別操作停止,否則,按照解析器隊列的排序,將后續(xù)的解析器逐個添加至已識別完的解析器組中,繼續(xù)識別。本發(fā)明實施例提供的多媒體文件播放方法,一方面能多核并行處理來提高速度,另一方面,各解析器組的解析器并非初始時即確定,而是隨著識別的過程逐個添加到組中,則避免出現(xiàn)某個解析器子隊列的處理速度快,而變?yōu)榭臻e,所以能充分利用多核并行處理的功能。本實施例中,在識別過程中,可以根據(jù)解析器識別情況、解析器執(zhí)行時間或解析器算法復(fù)雜度對解析隊列進(jìn)行優(yōu)化,可以將后續(xù)的未進(jìn)行識別的解析器按照優(yōu)先級順序分配到已經(jīng)識別過的解析器所在的子隊列中進(jìn)行識別,或者根據(jù)系統(tǒng)能力,開辟一個新的解析器子隊列進(jìn)行識別。上述動態(tài)將解析器進(jìn)行分組的方法保證了解析器的整體優(yōu)先級順序,加快了解析器的識別速度和解析速度。實施例四本發(fā)明實施例四提供了一種多媒體文件播放方法的優(yōu)選實例,在該實例中,以包括四種解析器為例進(jìn)行說明。圖4A為本發(fā)明實施例四所提供的多媒體文件的播放方法的示意圖,參照圖4A,A、B、C和D分別代表四個具體的解析器,將排序后的解析器隊列A-C-B-D分解成兩個任務(wù)隊列,第一個任務(wù)隊列為A-D,第二個任務(wù)隊列為C-B。圖4B為本發(fā)明實施例四所提供的多媒體文件的播放方法的流程圖,參照圖4B,本發(fā)明實施例的播放方法的具體操作可以為:步驟410、通過根據(jù)設(shè)定的優(yōu)先級規(guī)則對所述的四個解析器進(jìn)行排序,形成一個按照優(yōu)先級順序排序的解析器隊列A-C-B-D ;步驟420、考慮當(dāng)時系統(tǒng)處理能力能支持同時開啟兩個任務(wù)隊列進(jìn)行處理,可以將上述的解析器隊列A-C-B-D分解成兩個任務(wù)隊列。上述的排序方式只是一個示例,需要考慮各種因素,根據(jù)設(shè)定的優(yōu)先級規(guī)則對解析器進(jìn)行排序,形成一個按照優(yōu)先級順序排序的隊列。上述的考慮當(dāng)時系統(tǒng)處理能力能支持同時開啟兩個任務(wù)隊列進(jìn)行處理,可以將上述的解析器隊列A-C-B-D分解成兩個任務(wù)隊列的具體執(zhí)行操作可以為:第一個任務(wù)隊列為使用A-D解析器的任務(wù)隊列,第二個任務(wù)隊列為使用C-B解析器的任務(wù)隊列。原因為考慮到A解析器的優(yōu)先級雖然最高,但A解析器的算法復(fù)雜度或平均文件解析識別時間比較長,C解析器的優(yōu)先級雖然低于A解析器的優(yōu)先級,但C解析器的算法復(fù)雜度或平均文件解析識別時間較短。這樣既考慮到了解析器的優(yōu)先級(可以實現(xiàn)從優(yōu)先級最高的解析器開始),也考慮到了兩組任務(wù)隊列的執(zhí)行時間(第一個隊列的遍歷時間和第二個隊列的遍歷時間接近),又考慮到了后續(xù)的解析器按照優(yōu)先級進(jìn)行解析(B解析器的執(zhí)行時間早于低優(yōu)先級的D解析器的時間)。也可以對這個按照優(yōu)先級順序排序的隊列進(jìn)行動態(tài)分組。例如上述隊列中A解析器的執(zhí)行時間(如得到不識別該文件的結(jié)論)早于C解析器的執(zhí)行時間,此時待處理的最優(yōu)選的是B解析器,因此可以將B解析器實時分配給A解析器所在的任務(wù)隊列進(jìn)行處理,以保證解析器隊列A-C-B-D解析器的整體優(yōu)先級順序。或者在執(zhí)行過程中,由于其他模塊或運算單元釋放了部分系統(tǒng)計算能力,此時可以開辟一個新的任務(wù)隊列進(jìn)行執(zhí)行,可以動態(tài)將待處理的B解析器放入新任務(wù)隊列中進(jìn)行處理,也保證了解析器隊列A-C-B-D的整體優(yōu)先級順序。解析器的分組方法也可以在播放器的使用過程中,進(jìn)行智能學(xué)習(xí)和智能擴(kuò)充。例如某一用戶總喜歡在某一個網(wǎng)站中觀看某連續(xù)劇,這樣我們可以收集更多歷史信息作為參考,方便進(jìn)行快速視頻切換或無縫的連續(xù)劇播放。例如另一用戶喜歡從硬盤中播放海量視頻,這種情況下可以把先期進(jìn)行的媒體掃描數(shù)據(jù)作為優(yōu)先參考信息,快速識別出解析器并輸出音視頻字幕數(shù)據(jù)流,加快了多媒體文件的切換時間,提升了用戶體驗。本發(fā)明實施例中按照設(shè)定的優(yōu)先級規(guī)則對解析器進(jìn)行排序和根據(jù)系統(tǒng)能力、場景辨識或人工干預(yù)對按照優(yōu)先級順序排序的解析器隊列進(jìn)行分組的方法,采用了兩個或多個任務(wù)隊列并行處理,因此本發(fā)明實施例還可能同時得到兩個都支持的解析器,如對某一個ts文件,一個任務(wù)得到MPEG支持該文件,另一任務(wù)幾乎同時得到MPEGTS也支持該文件,這種情況下還可以對這兩個解析器再進(jìn)行一輪篩選,使用更多信息來檢測(這些信息可以是媒體掃描、后綴名、歷史信息、解析器復(fù)雜度等信息),保證檢測的準(zhǔn)確度更加精確,例如得到MPEGTS是最支持該文件的解析器。本發(fā)明實施例采用兩個任務(wù)隊列并行處理的方式,避免了單任務(wù)中首先遍歷到MPEG解析器后就終止,從而錯過最精確的MPEGTS解析器,不但充分利用了系統(tǒng)資源,而且提高了識別解析器的速度和解析器識別多媒體文件的正確率。實施例五圖5為本發(fā)明實施例五所提供的多媒體文件播放裝置的結(jié)構(gòu)示意圖,本實施例的多媒體文件播放裝置包括如下模塊:解析器排序模塊610、解析器識別模塊620和解封裝處理模塊630。其中,解析器排序模塊610用于當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;解析器識別模塊620用于按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器;解封裝處理模塊630用于采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。上述方案中,解析器排序模塊610具體可用于根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列,其中,根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列包括:根據(jù)多媒體文件的屬性信息,結(jié)合各解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列。所述各解析器的屬性信息優(yōu)選包括:解析復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或解析器重復(fù)需要嘗試的次數(shù);所述播放歷史信息優(yōu)選包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率;所述多媒體文件的屬性信息為URI,URI包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站或文件后綴名。本發(fā)明實施例所提供的多媒體文件播放裝置可以用于執(zhí)行本發(fā)明任意實施例提供的多媒體文件播放方法,具備相應(yīng)的功能模塊和有益效果。在上述方案中,解析器識別模塊620可具體包括解析器分組單元621和解析器識別單元622。其中,解析器分組單元621用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列;解析器識別單元622用于按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。本發(fā)明實施例提供的多媒體文件播放裝置,通過根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列,將每個解析器隊列中的解析器對多媒體文件進(jìn)行識別,獲得多媒體文件對應(yīng)的解析器。從而提高了識別解析器的速度。實施例六圖6為本發(fā)明實施例六所提供的多媒體文件播放裝置600的結(jié)構(gòu)示意圖,參照圖6,多媒體文件播放裝置600包括解析器排序模塊610,解析器識別模塊620和解封裝處理模塊630,其中解析器識別模塊620具體也可以包括如下單元:解析器隊列建立單元6211,解析器添加單元6212,多媒體文件識別單元6213和解析器隊列優(yōu)化單元6214。其中,解析器隊列建立單元6211用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組;解析器添加單元6212用于按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列;多媒體文件識別單元6213用于通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別;解析器隊列優(yōu)化單元6214用于在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的各解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。本發(fā)明實施例提供的多媒體文件播放裝置,通過根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立各組解析器隊列,以形成至少兩個解析器組,可以解析器隊列的排序向每個解析器組中分別添加至少一個解析器形成至少兩個解析器子隊列,再通過每個解析器子隊列中的解析器逐一對獲取的多媒體文件進(jìn)行識別。在識別過程中,根據(jù)解析器識別情況、解析器執(zhí)行時間或解析器算法復(fù)雜度對解析隊列進(jìn)行優(yōu)化,可以將后續(xù)的未執(zhí)行任務(wù)的解析器按照優(yōu)先級順序分配到已經(jīng)執(zhí)行完任務(wù)的解析器所在的子隊列中進(jìn)行識別,或者可以根據(jù)系統(tǒng)能處理力,開辟一個新的解析器子隊列進(jìn)行識別。保證了解析器的整體優(yōu)先級順序,加快了解析器的識別速度和解析速度。綜上所述,本發(fā)明各實施例的技術(shù)方案,通過優(yōu)化解析器排序和識別過程,能夠快速地識別出多媒體文件的封裝格式所適用的解析器,獲得基本數(shù)據(jù)流,進(jìn)而能夠?qū)崿F(xiàn)快速的音視頻輸出,提升了用戶的使用體驗。本發(fā)明實施例提供的多媒體文件播放裝置可適用于各種多媒體文件播放器,除了文件識別功能之外,播放器一般還包括識別器和數(shù)據(jù)提取器等,識別器可用于將文件頭數(shù)據(jù)送入具體的文件解析器中進(jìn)行識別。數(shù)據(jù)提取器用于提取多媒體文件中的基本數(shù)據(jù)流,并把提取出來的基本數(shù)據(jù)流提供給解碼器進(jìn)行解碼及后續(xù)的輸出工作。實施例七圖7為本發(fā)明實施例七所提供的一個多媒體文件播放器的基本組成示意圖,參照圖7,一個多媒體文件播放器的基本組成主要包括:文件解析模塊710,包含了所有的解析器,如M0V、MPEGTS、MP3等多種具體的解析器;數(shù)據(jù)獲取模塊720,主要用于讀取磁盤或網(wǎng)絡(luò)中的多媒體文件內(nèi)容,通過各種存儲設(shè)備或網(wǎng)絡(luò)協(xié)議類型(如http/rtsp/file等協(xié)議)實現(xiàn)多媒體文件的內(nèi)容讀取以及seek操作等;解碼器模塊730,主要用于將解析器中由某一個具體的解析器對多媒體文件進(jìn)行解析,提取到基本數(shù)據(jù)流并對基本數(shù)據(jù)流進(jìn)行解碼,形成輸出設(shè)備可以識別的內(nèi)容;同步處理模塊740,主要用于將多媒體文件的基本數(shù)據(jù)流進(jìn)行同步處理;輸出模塊750,主要是將解碼后的基本數(shù)據(jù)流輸出到輸出設(shè)備上,提供給觀眾收看。 本發(fā)明實施例提供的多媒體文件播放器可以包括本發(fā)明實施例提供的多媒體文件播放裝置,該裝置可與文件解析模塊710連接,對解析器進(jìn)行排序和識別。該裝置可以與數(shù)據(jù)獲取模塊720連接,基于獲取的多媒體文件的屬性或歷史信息等來對解析器進(jìn)行排序。該裝置可以與解碼器模塊730連接,把通過該裝置處理后獲取的基本數(shù)據(jù)流輸出給解碼器模塊730進(jìn)行解碼。該裝置還可以與同步處理模塊740連接,由同步處理模塊對該裝置輸出的基本數(shù)據(jù)流進(jìn)行同步處理。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫罔本發(fā)明各實施例技術(shù)方案的范圍。
權(quán)利要求
1.一種多媒體文件播放方法,其特征在于,包括: 當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列; 按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器; 采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列包括: 根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列包括: 根據(jù)多媒體文件的屬性信息,結(jié)合各解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于: 所述各解析器的屬性信息包括:解析復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或解析器重復(fù)需要嘗試的次數(shù); 所述播放歷史信息包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率; 所述多媒體文件的屬性信息為通用資源標(biāo)識符,所述通用資源標(biāo)識符包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站或文件后綴名。
5.根據(jù)權(quán)利要求1-4任一所述的方法,其特征在于,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器包括: 根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列; 按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。
6.根據(jù)權(quán)利要求1-4任一所述的方法,其特征在于,按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器包括: 根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組; 按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列; 通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別; 在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。
7.一種多媒體文件播放裝置,其特征在于,包括: 解析器排序模塊,用于當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;解析器識別模塊,用于按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器; 解封裝處理模塊,用于采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,解析器排序模塊具體用于 根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,根據(jù)多媒體文件的屬性信息,對多個解析器進(jìn)行排序,形成解析器隊列包括: 根據(jù)多媒體文件的屬性信息,結(jié)合各解析器的屬性信息、或播放歷史信息與解析器的關(guān)聯(lián)關(guān)系,對多個解析器進(jìn)行排序,形成解析器隊列。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于: 所述各解析器的屬性信息包括:解析復(fù)雜度、所需字節(jié)長度、解析器平均消耗的計算時間或解析器重復(fù)需要嘗試的次數(shù); 所述播放歷史信息包括:歷史播放網(wǎng)站訪問概率或各文件格式的歷史播放概率; 所述多媒體文件的屬性信息為通用資源標(biāo)識符,所述通用資源標(biāo)識符包括:文件的協(xié)議類型、多媒體文件所在的網(wǎng)站或文件后綴名。
11.根據(jù)權(quán)利要求7-10任一所述的裝置,其特征在于,解析器識別模塊包括: 解析器分組單元,用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)將排序后的各解析器進(jìn)行分組,形成多個解析器隊列; 解析器識別單元,用于按照每個解析器隊列中的排序,通過每個所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器。
12.根據(jù)權(quán)利要求7-10任一所述的裝置,其特征在于,解析器識別模塊包括: 解析器隊列建立單元,用于根據(jù)系統(tǒng)處理能力、場景辨識或人工干預(yù)建立至少兩個解析器組; 解析器添加單元,用于按照解析器隊列的排序,向每個解析器組添加至少一個解析器,形成至少兩個解析器子隊列; 多媒體文件識別單元,用于通過每個解析器子隊列中的解析器逐一對獲取到的多媒體文件進(jìn)行識別; 解析器隊列優(yōu)化單元,用于在未識別到對應(yīng)的解析器時,按照所述解析器隊列的排序,將后續(xù)的各解析器添加至已識別完成的空閑解析器組中對多媒體文件進(jìn)行識別,直至識別到與多媒體文件對應(yīng)的解析器。
全文摘要
本發(fā)明實施例提供一種多媒體文件播放方法和裝置。本發(fā)明多媒體文件播放方法,包括當(dāng)接收多媒體文件的打開指令時,根據(jù)設(shè)定的優(yōu)先級規(guī)則對多個解析器進(jìn)行排序,形成解析器隊列;按照排序,逐一通過所述解析器隊列中的解析器對獲取到的多媒體文件進(jìn)行識別,以獲得與所述多媒體文件對應(yīng)的解析器,采用獲得的解析器,對多媒體文件進(jìn)行解封裝處理,并輸出基本數(shù)據(jù)流。通過采用本發(fā)明提供的多媒體文件播放方法,提高了識別多媒體文件的速度和正確率。
文檔編號G11B20/10GK103165151SQ20131010873
公開日2013年6月19日 申請日期2013年3月29日 優(yōu)先權(quán)日2013年3月29日
發(fā)明者張志剛 申請人:華為技術(shù)有限公司