播放媒體文件的方法和設(shè)備的制造方法【專利摘要】本發(fā)明提供了一種播放媒體文件的方法和設(shè)備。該方法包括:確定起播媒體文件所需的媒體幀的數(shù)量N,所述媒體文件包括頭數(shù)據(jù)和K個(gè)媒體幀,所述頭數(shù)據(jù)攜帶所述K個(gè)媒體幀的關(guān)鍵信息,N≥1,K>N;從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,所述N個(gè)媒體幀為播放所述K個(gè)媒體幀時(shí)的前N個(gè)媒體幀,暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息;根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述K個(gè)媒體幀中的所述N個(gè)媒體幀;解碼并呈現(xiàn)所述N個(gè)媒體幀。本發(fā)明的技術(shù)方案能夠縮短媒體文件的起播時(shí)間?!緦@f(shuō)明】播放媒體文件的方法和設(shè)備
技術(shù)領(lǐng)域:
[0001]本發(fā)明實(shí)施例涉及多媒體領(lǐng)域,尤其涉及播放媒體文件的方法和設(shè)備?!?br>背景技術(shù):
】[0002]在用戶通過(guò)播放設(shè)備觀看視頻節(jié)目時(shí),用戶先點(diǎn)擊設(shè)備上顯示的節(jié)目鏈接,設(shè)備將調(diào)用播放模塊從媒體服務(wù)器(或本地存儲(chǔ))獲取對(duì)應(yīng)的文件數(shù)據(jù),再調(diào)用文件解析器解析并分離出音頻、視頻和字幕幀,接下來(lái)調(diào)用解碼器解碼幀數(shù)據(jù),解碼器解碼完成后的數(shù)據(jù)進(jìn)行視頻后處理及發(fā)送給視頻輸出端口,最后視頻顯示設(shè)備顯示視頻畫面。[0003]—般來(lái)說(shuō),將用戶點(diǎn)擊(可以包括直接點(diǎn)擊或通過(guò)遙控器點(diǎn)擊等)開(kāi)始播放,直到設(shè)備上開(kāi)始顯示視頻畫面的過(guò)程稱為起播。目前,在起播媒體文件時(shí),需要從媒體文件中讀取并解析文件中的所有頭數(shù)據(jù),即解析出媒體文件中所有媒體幀(例如音頻幀、視頻幀、字幕幀或其他數(shù)據(jù)幀)的關(guān)鍵信息,才能起播。這種起播方式常常導(dǎo)致播放媒體文件時(shí),要讀取并解析大量的數(shù)據(jù),非常耗費(fèi)時(shí)間,從而導(dǎo)致起播時(shí)間過(guò)長(zhǎng),最終影響用戶的觀看滿意度?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明提供一種播放媒體文件的方法和設(shè)備,能夠縮短媒體文件的起播時(shí)間。[0005]第一方面,提供了一種播放媒體文件的方法,包括:確定起播媒體文件所需的媒體幀的數(shù)量N,所述媒體文件包括頭數(shù)據(jù)和K個(gè)媒體幀,所述頭數(shù)據(jù)攜帶所述K個(gè)媒體幀的關(guān)鍵信息,N2I,K>N;從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,所述N個(gè)媒體幀為播放所述K個(gè)媒體幀時(shí)的前N個(gè)媒體幀,暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息;根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述N個(gè)媒體幀;解碼并呈現(xiàn)所述N個(gè)媒體幀。[0006]本發(fā)明實(shí)施例的技術(shù)方案中,只需要獲取起播媒體文件所需的少量媒體幀的關(guān)鍵信息,然后根據(jù)該關(guān)鍵信息獲取并解碼所述少量的媒體幀,從而起播媒體文件,而不用獲取所有媒體幀的關(guān)鍵信息,因此能夠縮短媒體文件的起播時(shí)間。[0007]在一種可能的實(shí)現(xiàn)方式中,所述K個(gè)媒體幀的關(guān)鍵信息包括M個(gè)部分,所述頭數(shù)據(jù)包括M個(gè)部分,所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分由所述頭數(shù)據(jù)中的第i個(gè)部分?jǐn)y帶,所述頭數(shù)據(jù)的第i個(gè)部分包括Mi個(gè)條目,M21,M2i2l,Mi2I;其中,從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,包括:獲取所述頭數(shù)據(jù)的第i個(gè)部分的1個(gè)條目中的前S1個(gè)條目,所述前31個(gè)條目攜帶所述前N個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分;所述暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息,包括:暫不獲取所述頭數(shù)據(jù)中的第i個(gè)部分的1個(gè)條目中除所述前S1個(gè)條目外的其他條目。[0008]在一種可能的實(shí)現(xiàn)方式中,所述獲取所述頭數(shù)據(jù)的第i個(gè)部分的1個(gè)條目中的前S1個(gè)條目,包括:根據(jù)所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分與所述頭數(shù)據(jù)的第i個(gè)部分中的M1個(gè)條目的對(duì)應(yīng)關(guān)系,獲取所述頭數(shù)據(jù)的第i個(gè)部分的1個(gè)條目中的前S1個(gè)條目。[0009]本發(fā)明實(shí)施例的技術(shù)方案,通過(guò)預(yù)先規(guī)定的媒體幀的關(guān)鍵信息與條目之間的對(duì)應(yīng)關(guān)系獲取起播所需的媒體幀的關(guān)鍵信息,可以準(zhǔn)確地獲取媒體幀的關(guān)鍵信息。[0010]在一種可能的實(shí)現(xiàn)方式中,所述媒體文件存儲(chǔ)在媒體服務(wù)器上;其中,所述獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目,包括:從所述媒體服務(wù)器下載所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1A條目;所述暫不獲取所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前S1個(gè)條目外的其他條目,包括:暫不從所述媒體服務(wù)器下載所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前S1個(gè)條目外的其他條目。[0011]本發(fā)明實(shí)施例的技術(shù)方案中,只需下載不同條目集合中的一部分條目,即可以得到起播時(shí)的前N個(gè)媒體幀的關(guān)鍵信息,從而節(jié)省了下載其他條目的時(shí)間,最終節(jié)省了起播時(shí)間,提高用戶的體驗(yàn)度。[0012]在一種可能的實(shí)現(xiàn)方式中,Si為預(yù)先指定的值。[0013]本發(fā)明實(shí)施例的技術(shù)方案,通過(guò)預(yù)先指定的條目的數(shù)量獲取起播所需的媒體幀的關(guān)鍵信息,可以高效率獲取媒體幀的關(guān)鍵信息。[0014]在一種可能的實(shí)現(xiàn)方式中,所有的31相同。[0015]本發(fā)明實(shí)施例的技術(shù)方案,通過(guò)預(yù)先指定的相同的條目的數(shù)量獲取起播所需的媒體幀的關(guān)鍵信息,可以更高效率地獲取媒體幀的關(guān)鍵信息。[0016]在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:所述根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述K個(gè)媒體幀中的所述N個(gè)媒體幀之后,繼續(xù)從所述頭數(shù)據(jù)中獲取所述其他媒體幀的關(guān)鍵信息,并根據(jù)所述其他媒體幀的所述關(guān)鍵信息讀取所述其他媒體幀,及解碼和呈現(xiàn)所述其他媒體幀。[0017]本發(fā)明實(shí)施例的技術(shù)方案,獲取了前N個(gè)媒體幀的關(guān)鍵信息,可以根據(jù)該關(guān)鍵信息獲取媒體幀以起播后,可以繼續(xù)獲取其他媒體幀的關(guān)鍵信息以及獲取并播放這些媒體幀,從而繼續(xù)播放過(guò)程。[0018]第二方面,提供了一種播放媒體文件的設(shè)備,所述設(shè)備包括用于執(zhí)行第一方面的方法的模塊。[0019]第三方面,提供了一種系統(tǒng)芯片,包括輸入接口、輸出接口、至少一個(gè)處理器、存儲(chǔ)器,所述輸入接口、輸出接口、所述處理器以及存儲(chǔ)器之間通過(guò)總線相連,所述處理器用于執(zhí)行所述存儲(chǔ)器中的代碼,當(dāng)所述代碼被執(zhí)行時(shí),所述處理器實(shí)現(xiàn)第一方面中的方法。[0020]第四方面,提供了一種計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)用于起播媒體文件的程序代碼,所述程序代碼包括用于執(zhí)行第一方面中的方法的指令?!靖綀D說(shuō)明】[0021]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0022]圖1是本發(fā)明實(shí)施例的播放設(shè)備的示意性結(jié)構(gòu)圖。[0023]圖2是本發(fā)明實(shí)施例的播放媒體文件的方法的示意性流程圖。[0024]圖3是本發(fā)明實(shí)施例的媒體文件的示意性結(jié)構(gòu)圖。[0025]圖4是本發(fā)明實(shí)施例的系統(tǒng)芯片的示意性結(jié)構(gòu)圖。【具體實(shí)施方式】[0026]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。[0027]為了更好地理解本發(fā)明的實(shí)施例,下面先介紹可以實(shí)施本發(fā)明實(shí)施例的播放媒體文件的設(shè)備,通常將該設(shè)備稱為播放設(shè)備。圖1是本發(fā)明實(shí)施例的播放設(shè)備的示意性結(jié)構(gòu)圖。應(yīng)理解,圖1中的播放設(shè)備只是示例性說(shuō)明,本發(fā)明實(shí)施例中的播放設(shè)備可以包括更多或更少的模塊或單元。[0028]本地存儲(chǔ)器110存放媒體文件。[0029]本發(fā)明的技術(shù)方案主要是針對(duì)具有特定結(jié)構(gòu)的媒體文件,即本發(fā)明的技術(shù)方案起播具有特定結(jié)構(gòu)的媒體文件。[0030]本發(fā)明實(shí)施例中的媒體文件從邏輯上可劃分為頭部(header)和數(shù)據(jù)(data)兩部分。data部分包括了具體的媒體幀(或稱為包數(shù)據(jù)),header中的數(shù)據(jù)包括了各個(gè)媒體幀或包數(shù)據(jù)的關(guān)鍵信息。媒體幀的關(guān)鍵信息可以是媒體幀的位置、媒體幀的大小、媒體幀的顯示時(shí)間戮(Presentat1nTimeStamp,PTS),解碼時(shí)間戮(DecodeTimeStamp,DTS),是否是關(guān)鍵幀等信息,當(dāng)然本發(fā)明實(shí)施例中的關(guān)鍵信息并不限于此,媒體幀的關(guān)鍵信息的具體內(nèi)容由媒體文件的具體格式?jīng)Q定。為了后續(xù)描述方面,本發(fā)明實(shí)施例中將媒體文件中攜帶媒體幀的關(guān)鍵信息的header稱為頭數(shù)據(jù)。[0031]如MP4文件,需要從header中解析出各個(gè)媒體幀或包數(shù)據(jù)的關(guān)鍵信息才能從data中解析出對(duì)應(yīng)的媒體幀或包數(shù)據(jù),從而播放媒體文件。此處所述的MP4是標(biāo)準(zhǔn)ISO/1EC14496-12中的一種存儲(chǔ)媒體內(nèi)容的文件格式。[0032]文件解析器120從本地存儲(chǔ)器110獲取媒體文件,當(dāng)然也可以從媒體服務(wù)器上獲取媒體文件。通常情況下,文件解析器120可以分為讀取模塊和解析模塊,解析模塊控制讀取模塊讀取文件數(shù)據(jù),或控制讀取模塊向媒體服務(wù)器或本地存儲(chǔ)器請(qǐng)求數(shù)據(jù)時(shí),向媒體服務(wù)器或本地存儲(chǔ)器發(fā)送指令更改下一次讀取數(shù)據(jù)的起始位置。更改下次讀取數(shù)據(jù)的起始位置的操作可以稱作SEEK。[0033]控制模塊130控制文件解析器120,從媒體文件中獲取媒體幀并將媒體幀送到解碼器140的緩沖區(qū)中等待解碼。[0034]解碼器140解碼緩沖器中的媒體幀并送給后處理模塊進(jìn)行處理。[0035]后處理模塊150對(duì)解碼后的數(shù)據(jù)進(jìn)行后處理。[0036]輸出模塊160對(duì)可以顯示后處理模塊150處理后的圖像、字幕等。對(duì)于包括音頻的媒體文件,還需要播放音頻數(shù)據(jù)對(duì)應(yīng)的聲音。[0037]在文件解析器120獲取媒體幀并送到解碼器140的緩沖區(qū)中后,解碼器140對(duì)緩沖區(qū)中的媒體幀進(jìn)行解碼時(shí),文件解析器120繼續(xù)讀取和解析后續(xù)媒體幀。[0038]現(xiàn)有技術(shù)中起播媒體文件時(shí),需要讀取所有header中的所有數(shù)據(jù),以到所有媒體幀的關(guān)鍵信息,然后再播放媒體文件,這將導(dǎo)致起播媒體文件的時(shí)間過(guò)長(zhǎng),為了節(jié)省起播時(shí)間,本發(fā)明提出了一種能夠快速起播媒體文件的方法。[0039]圖2為本發(fā)明實(shí)施例的播放媒體文件的方法的示意性流程圖。圖2示出了播放媒體文件的詳細(xì)的步驟或操作,但這些步驟或操作僅是示例,本發(fā)明實(shí)施例還可以執(zhí)行其它操作或者圖2中的各種操作的變形。圖2中的方法可以由圖1所示的播放設(shè)備來(lái)執(zhí)行。[0040]S210,確定起播媒體文件所需的媒體幀的數(shù)量N,所述媒體文件包括頭數(shù)據(jù)和K個(gè)媒體幀,所述頭數(shù)據(jù)攜帶所述K個(gè)媒體幀的關(guān)鍵信息,N2I,K>N。該步驟可以圖1中的文件解析器120執(zhí)行。[0041]本發(fā)明實(shí)施例中的媒體文件可以是從本地存儲(chǔ)器(如圖1中的本地存儲(chǔ)器110)中獲取的,也可以是從媒體服務(wù)器上下載的。[0042]確定起播媒體文件所需的媒體幀的數(shù)量N時(shí),可以根據(jù)具體需要或經(jīng)驗(yàn)值來(lái)確定。如在起播時(shí)需要解析完播放時(shí)間為I秒的媒體幀,假設(shè)I秒的播放時(shí)間需要25個(gè)媒體幀,則可以確定此時(shí)所需的媒體幀的數(shù)量為25。[0043]本發(fā)明實(shí)施例中的媒體幀可以指需要解碼器解碼的音頻幀、視頻幀、字幕幀或其他數(shù)據(jù)幀的統(tǒng)稱,[0044]S220,從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,所述N個(gè)媒體幀為播放所述K個(gè)媒體幀時(shí)的前N個(gè)媒體幀,暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息。該步驟可以由圖1中的文件解析器120執(zhí)行。[0045]當(dāng)從媒體服務(wù)器上下載媒體數(shù)據(jù)時(shí),起播前,只需下載前N個(gè)媒體幀的關(guān)鍵信息,而不用下載所有媒體幀的關(guān)鍵信息,從而可以節(jié)省起播時(shí)間。尤其是下載帶寬較小時(shí),該有益效果會(huì)更明顯,用戶體驗(yàn)度也會(huì)更滿意。[0046]本發(fā)明實(shí)施例中,只需獲取播放時(shí)的前N個(gè)媒體幀的關(guān)鍵信息,而不是獲取所有媒體幀的關(guān)鍵信息,因此可以節(jié)省獲取起播媒體文件時(shí)的媒體幀的關(guān)鍵信息的時(shí)間。[0047]如媒體文件總共包括K個(gè)媒體幀,且K遠(yuǎn)遠(yuǎn)大于20,而起播時(shí)只需要前20個(gè)媒體幀,則只需從頭數(shù)據(jù)中獲取該前20個(gè)媒體幀的關(guān)鍵信息,而暫時(shí)不用獲取其他媒體幀的關(guān)鍵信息,從而節(jié)省了獲取其他媒體幀的關(guān)鍵信息的時(shí)間。待媒體文件開(kāi)始起播后,再開(kāi)始獲取其他媒體幀的關(guān)鍵信息,并根據(jù)該關(guān)鍵信息播放其他媒體幀。[0048]在從頭數(shù)據(jù)中獲取前N個(gè)媒體幀的關(guān)鍵信息時(shí),還可以向媒體播放器或本地存儲(chǔ)裝置發(fā)送指令,指示媒體服務(wù)器或本地存儲(chǔ)裝置存儲(chǔ)下一次從頭數(shù)據(jù)中讀取其他媒體幀的關(guān)鍵信息的起始位置。更改下次讀取數(shù)據(jù)的起始位置的操作可以稱為查找(SEEK)。[0049]S230,根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述K個(gè)媒體幀中的所述N個(gè)媒體幀。該步驟可以由圖1中的文件解析器120執(zhí)行。[0050]如可以根據(jù)前N個(gè)媒體幀在所有媒體幀中的位置、數(shù)據(jù)大小、顯示時(shí)間戳、解碼時(shí)間戳是否為關(guān)鍵幀等信息從所有媒體幀中讀取到該N個(gè)媒體幀。[0051]S240,解碼并呈現(xiàn)所述N個(gè)媒體幀。讀取到前N個(gè)媒體幀后,對(duì)這N個(gè)媒體幀進(jìn)行解碼,然后送至輸出模塊呈現(xiàn)給用戶。該步驟可以由圖1中的解碼器140和輸出模塊150執(zhí)行。呈現(xiàn)媒體幀包括通過(guò)顯示裝置顯示視頻圖像或字母等,也可以包括通過(guò)播放音頻的裝置發(fā)出聲音。[0052]本發(fā)明實(shí)施例中,將解碼N個(gè)媒體幀所得的數(shù)據(jù)發(fā)送至輸出模塊,通過(guò)顯示裝置或音頻播放裝置向用戶呈現(xiàn)媒體幀的內(nèi)容,從而實(shí)現(xiàn)起播。[0053]本發(fā)明實(shí)施例的技術(shù)方案中,只需要獲取起播媒體文件所需的少量媒體幀的關(guān)鍵信息,然后根據(jù)該關(guān)鍵信息獲取并解碼所述少量的媒體幀,從而起播媒體文件,而不用獲取所有媒體幀的關(guān)鍵信息以獲取及解碼所有媒體幀,因此能夠縮短媒體文件的起播時(shí)間。[0054]本發(fā)明實(shí)施例中,還可以包括其他的步驟和操作,如獲取到前N個(gè)媒體幀后,可以先把媒體幀送至送至解碼器的緩沖區(qū)中,等待解碼器解碼。[0055]本發(fā)明實(shí)施例中,起播媒體文件后,可以繼續(xù)獲取K個(gè)媒體幀中除已經(jīng)獲取了關(guān)鍵信息的N個(gè)媒體幀外的其他媒體幀的關(guān)鍵信息,以及根據(jù)這些關(guān)鍵信息讀取媒體幀,并解碼和呈現(xiàn)給用戶。[0056]圖3是本發(fā)明實(shí)施例的媒體文件的一種示意性結(jié)構(gòu)圖。圖3中的媒體文件只是為了更好地說(shuō)明本發(fā)明實(shí)施例的起播媒體文件的方法,不應(yīng)對(duì)本發(fā)明實(shí)施例中的媒體文件構(gòu)成限制。[0057]圖3中的媒體文件包括header和data兩部分,header中的數(shù)據(jù)按照文件規(guī)范可從邏輯上劃分為M部分,分別為HD(HeaderData)i,HD2……HDm,其中,M2I。[0058]冊(cè)1至^[?中的每個(gè)HD又可以劃分為一個(gè)或多個(gè)條目(Entry),如第i個(gè)頭數(shù)據(jù)HDi可以劃分為HDi_Entryl,HDi_Entry2".HDi_EntrySi共Si個(gè)條目,其中Si之I。[0059]與此對(duì)應(yīng),媒體幀的關(guān)鍵信息也可以分為M部分,第i部分的關(guān)鍵信息由header中的第i個(gè)部分HDi中一定數(shù)量的Entry攜帶。[0060]此時(shí),分別從HD^HD2……HDm中獲取一定數(shù)量的Entry,如獲取HD沖的前S^Entry(HDi_EntryI,HDi_Entry2..-HDi_EntrySi)、獲取HD2中白勺前S2個(gè)Entry(HD2_Entryl,HD2_Entry2...HD2_EntryS2),直到獲取HDm中的前Sm個(gè)Entry(HDM_EntryI,HDM_Entry2...HDm_EntrySM),即獲取到了前N個(gè)媒體幀的關(guān)鍵信息。[0061]由此可以看出,每個(gè)HD中的其他Entry均跳過(guò),即HDi_EntryS1......HD2_EntryS2……HDM_EntrySM后的所有條目不用獲取和解析。本發(fā)明實(shí)施例中的跳過(guò)即SEEK,SEEK位置可通過(guò)整個(gè)HD的大小計(jì)算需要跳過(guò)的字節(jié)數(shù)。因此可以節(jié)省獲取起播媒體文件時(shí)所需的媒體幀的關(guān)鍵信息時(shí)間,從而節(jié)省了起播時(shí)間。起播后從SEEK中記錄的位置開(kāi)始讀取和分析剩余條目,以獲取其他媒體幀的關(guān)鍵信息,以及根據(jù)這些關(guān)鍵信息獲取媒體幀,并解碼和呈現(xiàn)這些媒體幀。[0062]本發(fā)明實(shí)施例中,每個(gè)HD中應(yīng)獲取的Entry的數(shù)量可以根據(jù)該HD中的Entry與關(guān)鍵信息的對(duì)應(yīng)關(guān)系來(lái)確定,這種對(duì)應(yīng)關(guān)系可以根據(jù)文件規(guī)范直接獲取到,或在解析的過(guò)程中根據(jù)文件規(guī)范計(jì)算得到,獲取或計(jì)算的方式跟具體的文件規(guī)范相關(guān)。[0063]上述方式可以概括為:媒體幀的關(guān)鍵信息包括M個(gè)部分,M2I。頭數(shù)據(jù)包括M個(gè)部分,媒體幀的關(guān)鍵信息的第i個(gè)部分由頭數(shù)據(jù)中的第i個(gè)部分?jǐn)y帶,頭數(shù)據(jù)的第i個(gè)部分可以包括跑個(gè)條目,M2i>1,Μ,2I,獲取頭數(shù)據(jù)的第i個(gè)部分的1個(gè)條目中的前S1個(gè)條目,暫不獲取M1個(gè)條目中除所述前S1個(gè)條目外的其他條目,所述所述前S1個(gè)條目攜帶所述前N個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分。[0064]由于不同HD的Entry與關(guān)鍵信息的對(duì)應(yīng)關(guān)系可能不用,因此可以分別從不同的HD中的Entry中獲取不同數(shù)量的Entry。如假設(shè)頭數(shù)據(jù)可以分為3個(gè)HD,HD1包括30個(gè)Entry,HD2包括40個(gè)Entry,HD3包括50個(gè)Entry,則可能只需要從HDi的30個(gè)Entry獲取前5個(gè)Entry、從HD2的40個(gè)Entry中獲取前4個(gè)Entry、從HD3的50個(gè)Entry中獲取前6個(gè)Entry,就可以獲取到起播媒體文件所需的前N個(gè)媒體幀的關(guān)鍵信息,然后根據(jù)該關(guān)鍵信息從所有的媒體幀中讀取該N個(gè)媒體幀,并解碼及呈現(xiàn)給用戶。[0065]若媒體文件是從媒體服務(wù)器獲取的,讀取和分析N個(gè)媒體幀的關(guān)鍵信息的具體方式為:從媒體服務(wù)器下載頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目,并記錄下次讀取條目時(shí)的起始位置;暫不從媒體服務(wù)器下載頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除前S1個(gè)條目外的其他條目。等到開(kāi)始起播后,再?gòu)拿襟w服務(wù)器下載攜帶其他媒體幀的關(guān)鍵信息的條目。[0066]下面以MP4格式的媒體文件為示例,介紹本發(fā)明實(shí)施例的起播媒體文件的方法,假設(shè)媒體文件包括100個(gè)媒體幀。[0067]MP4的媒體文件中記錄媒體幀的關(guān)鍵信息的數(shù)據(jù)包括多個(gè)盒(box),一個(gè)box等同于一個(gè)HDJP4的媒體幀的關(guān)鍵信息可以包括5個(gè)部分:stco(樣品表中的塊偏移,sampletablechunkoffset)box、stsc(樣品表中樣品與塊的關(guān)系,sampletablesampletochunk)box、stsz(樣品表中的樣品大小,sampletablesamplesize)box、stts(樣品表中的樣品時(shí)間戳,sampletablesampletimestamp)box和stss(樣品表中的同步樣品,sampletablesyncsample)box。[0068]stcobox存放每個(gè)塊(chunk)在整個(gè)MP4文件中的偏移(chunk中存放的是多個(gè)連續(xù)的樣品(sample)數(shù)據(jù),一個(gè)sample等同于一個(gè)媒體幀),每個(gè)Entry的內(nèi)容是一個(gè)4字節(jié)或8字節(jié)的整數(shù),代表該chunk在文件中偏移量。需要注意的是,chunk是按播放順序排列的。[0069]stscbox存放每個(gè)sample與chunk的對(duì)應(yīng)關(guān)系。每個(gè)Entry的內(nèi)容包括:一個(gè)chunk的標(biāo)識(shí)(Identity,ID)號(hào);chunk中的sampIe個(gè)數(shù)。[0070]假設(shè)stsz的第I個(gè)Entry中記錄的chunkID號(hào)是I,sample個(gè)數(shù)是5,第2個(gè)Entry中記錄的chunkID號(hào)是4,sample個(gè)數(shù)為7,則代表第I至3個(gè)chunk中,每個(gè)chunk的sampIe個(gè)數(shù)都是20,第4個(gè)chunk的sample的個(gè)數(shù)是7。由此可得出sample與chunk的對(duì)應(yīng)關(guān)系。[0071]stszbox存放每個(gè)sample的大小。第N個(gè)Entry代表第N個(gè)sample的大小。如第N個(gè)Entry中記錄200,表示第N個(gè)sample的大小為200個(gè)字節(jié)。[0072]sttsbox存放每個(gè)sample的播放時(shí)長(zhǎng)(durat1n),stts中的第N個(gè)Entry的內(nèi)容包括:按播放順序排列的具有相同duration的sampIe的個(gè)數(shù),以及這些sampIe的durtaion,注意,這些sampIe是連續(xù)的。如,sttsbox中的第一個(gè)Entry中記錄的sampIe個(gè)數(shù)為6,durat1n為2毫秒;第二個(gè)Entry中記錄的sample個(gè)數(shù)為7,durat1n為I毫秒;第三個(gè)Entry中記錄的sample個(gè)數(shù)為8,durat1n為2毫秒。[0073]stssbox存放關(guān)鍵幀信息,stss的第N個(gè)Entry表示按播放順序排列的第N個(gè)關(guān)鍵幀的sample序號(hào)。如第8個(gè)Entry記錄的是21,則表示第8個(gè)關(guān)鍵幀為第21個(gè)媒體幀。[0074]使用本發(fā)明實(shí)施例的方法起播上述MP4文件時(shí),先確定要識(shí)別的媒體幀個(gè)數(shù),假設(shè)為20個(gè)。[0075]從上述stszbox中獲取前20個(gè)Entry,跳過(guò)其余Entry;順序讀取并解析上述stscbox中的Entry的內(nèi)容,并把已解析的Entry中記錄的sampIe個(gè)數(shù)做累加,直到sampIe的個(gè)數(shù)大于或等于20個(gè)為止,跳過(guò)后續(xù)的Entry。此時(shí),從上述stscbox中最后讀取的Entry為第2個(gè)Entry,其中記錄的chunkID號(hào)為4,即stcobox中要讀取的Entry的個(gè)數(shù)為4。[0076]讀取并解析上述stcobox中的前4個(gè)Entry內(nèi)容并跳過(guò)剩余的Entry;順序讀取并解析sttsbox中的Entry內(nèi)容,并把每個(gè)Entry中的sample個(gè)數(shù)做累加,當(dāng)sample個(gè)數(shù)超過(guò)20個(gè)時(shí)停止讀取和解析,并跳過(guò)剩余的Entry。此時(shí),從上述stcobox中讀取和解析的Entry的數(shù)量為3個(gè)。[0077]順序讀取并解析上述stssbox中的Entry內(nèi)容,直到該Entry中記錄的sample序號(hào)大于20,跳過(guò)剩余的Entry。此時(shí),從上述stssbox中讀取和解析的Entry的數(shù)量為8個(gè)。[0078]通過(guò)解析上述5個(gè)box中分別已讀取Entry即可得到前20個(gè)sample的關(guān)鍵信息,隨后可從所有sample中讀取這20個(gè)sample并送至解碼器解碼,以及送至播放模塊實(shí)現(xiàn)起播。[0079]由上述實(shí)施例可知,只需讀取5個(gè)box中的部分Entry,跳過(guò)其他Entry,即可實(shí)現(xiàn)起播,從而節(jié)省起播時(shí)間。[0080]本發(fā)明實(shí)施例中,從HD中的所有Entry中獲取滿足攜帶前N個(gè)媒體幀的關(guān)鍵信息時(shí),一種更簡(jiǎn)便、效率更高的方法是直接分別指定從每個(gè)HD中需要獲取的Entry的數(shù)量,然后分別從每個(gè)HD中獲取相應(yīng)數(shù)量的Entry,從而獲取到包括前N個(gè)媒體幀的關(guān)鍵信息的關(guān)鍵?目息O[0081]本發(fā)明實(shí)施例中,還可以指定從每個(gè)HD中的需要獲取的Entry的數(shù)量為同一數(shù)值。[0082]圖4是本發(fā)明實(shí)施例的系統(tǒng)芯片的示意性結(jié)構(gòu)圖。圖4的系統(tǒng)芯片400包括輸入接口410、輸出接口420、至少一個(gè)處理器430、存儲(chǔ)器440,所述輸入接口410、輸出接口420、所述處理器430以及存儲(chǔ)器440之間通過(guò)總線相連,所述處理器430用于執(zhí)行所述存儲(chǔ)器440中的代碼,當(dāng)所述代碼被執(zhí)行時(shí),所述處理器430實(shí)現(xiàn)圖2中的方法。[0083]本發(fā)明實(shí)施例的技術(shù)方案中,只需要獲取起播媒體文件所需的少量媒體幀的關(guān)鍵信息,然后根據(jù)該關(guān)鍵信息獲取并解碼所述少量的媒體幀,從而起播媒體文件,而不用獲取所有媒體幀的關(guān)鍵信息以獲取及解碼所有媒體幀,因此能夠縮短媒體文件的起播時(shí)間。[0084]本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。[0085]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。[0086]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。[0087]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。[0088]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。[0089]所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(R0M,Read-0nlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。[0090]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)?!局鳈?quán)項(xiàng)】1.一種播放媒體文件的方法,其特征在于,包括:確定起播媒體文件所需的媒體幀的數(shù)量N,所述媒體文件包括頭數(shù)據(jù)和K個(gè)媒體幀,所述頭數(shù)據(jù)攜帶所述K個(gè)媒體幀的關(guān)鍵信息,N2I,K>N;從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,所述N個(gè)媒體幀為播放所述K個(gè)媒體幀時(shí)的前N個(gè)媒體幀,暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息;根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述N個(gè)媒體幀;解碼并呈現(xiàn)所述N個(gè)媒體幀。2.如權(quán)利要求1所述的方法,其特征在于,所述K個(gè)媒體幀的關(guān)鍵信息包括M個(gè)部分,所述頭數(shù)據(jù)包括M個(gè)部分,所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分由所述頭數(shù)據(jù)中的第i個(gè)部分?jǐn)y帶,所述頭數(shù)據(jù)的第i個(gè)部分包括Mi個(gè)條目,M2I,M2i2I,Mi2I;其中,從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,包括:獲取所述頭數(shù)據(jù)的第i個(gè)部分的1個(gè)條目中的前S1個(gè)條目,所述前S1A條目攜帶所述N個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分,MOS1;所述暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息,包括:暫不獲取所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前Si個(gè)條目外的其他條目。3.如權(quán)利要求2所述的方法,其特征在于,所述媒體文件存儲(chǔ)在媒體服務(wù)器上;其中,所述獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目,包括:從所述媒體服務(wù)器下載所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目;所述暫不獲取所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前Si個(gè)條目外的其他條目,包括:暫不從所述媒體服務(wù)器下載所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前Si個(gè)條目外的其他條目。4.如權(quán)利要求2或3所述的方法,其特征在于,所述獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目,包括:根據(jù)所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分與所述頭數(shù)據(jù)的第i個(gè)部分中的M1個(gè)條目的對(duì)應(yīng)關(guān)系,獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前&個(gè)條目。5.如權(quán)利要求2或3所述的方法,其特征在于,S1為預(yù)先指定的值。6.如權(quán)利要求5所述的方法,其特征在于,所有的&相同。7.如權(quán)利要求1至6所述的方法,其特征在于,所述方法還包括:所述根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述K個(gè)媒體幀中的所述N個(gè)媒體幀之后,繼續(xù)從所述頭數(shù)據(jù)中獲取所述其他媒體幀的關(guān)鍵信息,并根據(jù)所述其他媒體幀的所述關(guān)鍵信息讀取所述其他媒體幀,及解碼和呈現(xiàn)所述其他媒體幀。8.一種播放媒體文件的設(shè)備,其特征在于,包括文件解析器、解碼器和輸出模塊;所述文件解析器用于確定起播媒體文件所需的媒體幀的數(shù)量N,所述媒體文件包括頭數(shù)據(jù)和K個(gè)媒體幀,所述頭數(shù)據(jù)攜帶所述K個(gè)媒體幀的關(guān)鍵信息,N2I,K>N;所述文件解析器還用于從所述頭數(shù)據(jù)中獲取N個(gè)媒體幀的關(guān)鍵信息,所述N個(gè)媒體幀為播放所述K個(gè)媒體幀時(shí)的前N個(gè)媒體幀,暫不從所述頭數(shù)據(jù)中獲取所述K個(gè)媒體幀中除所述N個(gè)媒體幀外其他媒體幀的關(guān)鍵信息;所述文件解析器還用于根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述N個(gè)媒體幀;所述解碼器用于解碼所述N個(gè)媒體幀;所述輸出模塊用于呈現(xiàn)所述N個(gè)媒體幀。9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述K個(gè)媒體幀的關(guān)鍵信息包括M個(gè)部分,所述頭數(shù)據(jù)包括M個(gè)部分,所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分由所述頭數(shù)據(jù)的第i個(gè)部分?jǐn)y帶,所述頭數(shù)據(jù)的第i個(gè)部分包括Mi個(gè)條目,M2I,M2i2I,Mi2I;其中,所述文件解析器具體用于:獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1個(gè)條目,所述前S1個(gè)條目攜帶所述前N個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分;暫不獲取所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前S1A條目外的其他條目。10.如權(quán)利要求9所述的設(shè)備,其特征在于,所述媒體文件存儲(chǔ)在媒體服務(wù)器上;其中,所述文件解析器具體用于:從所述媒體服務(wù)器下載所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前S1A條目。暫不從所述媒體服務(wù)器下載所述頭數(shù)據(jù)中的第i個(gè)部分的跑個(gè)條目中除所述前S1個(gè)條目外的其他條目。11.如權(quán)利要求9或10所述的設(shè)備,其特征在于,所述文件解析器具體用于:根據(jù)所述K個(gè)媒體幀的關(guān)鍵信息的第i個(gè)部分與所述頭數(shù)據(jù)的第i個(gè)部分中的M1個(gè)條目的對(duì)應(yīng)關(guān)系,獲取所述頭數(shù)據(jù)的第i個(gè)部分的跑個(gè)條目中的前&個(gè)條目。12.如權(quán)利要求9或10所述的設(shè)備,其特征在于,S1為預(yù)先指定的值。13.如權(quán)利要求12所述的設(shè)備,其特征在于,所有的&相同。14.如權(quán)利要求8至12中任一項(xiàng)所述的設(shè)備,其特征在于,所述文件解析器還用于根據(jù)所述N個(gè)媒體幀的關(guān)鍵信息讀取所述K個(gè)媒體幀中的所述N個(gè)媒體幀之后,繼續(xù)從所述頭數(shù)據(jù)中獲取所述其他媒體幀的關(guān)鍵信息,并根據(jù)所述其他媒體幀的所述關(guān)鍵信息讀取所述其他媒體幀;所述解碼器還用于解碼所述其他媒體幀;所述輸出模塊還用于呈現(xiàn)所述其他媒體幀?!疚臋n編號(hào)】H04N21/472GK105847990SQ201610190294【公開(kāi)日】2016年8月10日【申請(qǐng)日】2016年3月30日【發(fā)明人】梁偉【申請(qǐng)人】華為技術(shù)有限公司