多媒體文件制作方法、播放方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及多媒體數(shù)據(jù)處理領(lǐng)域,更具體地說,涉及一種多媒體文件制作方法、播 放方法及系統(tǒng)。
【背景技術(shù)】
[0002] 為了適應(yīng)存儲(chǔ)多媒體的需要,人們設(shè)定了不同的多媒體文件格式。基于這些多媒 體文件格式,可制作包括視頻、音頻、字幕等數(shù)據(jù)的多媒體文件,以實(shí)現(xiàn)播放時(shí)能夠同時(shí)播 放視頻、音頻、字幕等。
[0003] 目前,常見的多媒體文件大多是采用avi、wmv、asf、asx、rm、rmvb等格式制作的。 雖然,利用這些多媒體文件格式都可以實(shí)現(xiàn)將視頻、音頻、字幕等數(shù)據(jù)存儲(chǔ)在一個(gè)文件中, 實(shí)現(xiàn)多媒體文件的制作,但制作出的多媒體文件不能適應(yīng)不同的應(yīng)用環(huán)境。例如,asf是微 軟為windows98所開發(fā)的串流多媒體文件格式,只有在windows系統(tǒng)上能夠得到支持。且采 用現(xiàn)有技術(shù)制作的多媒體文件大多僅有一個(gè)視頻軌道、一個(gè)音頻軌道,不能適應(yīng)多路視頻、 音頻的需要。
[0004] 另一方面,現(xiàn)有技術(shù)的多媒體文件,在播放時(shí)不能提供控制功能(例如,提前預(yù)覽 等),不能滿足用戶的多種需求。
[0005]因此,采用現(xiàn)有的多媒體文件格式制作多媒體文件,局限性大,不能滿足用戶的需 求。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述采用現(xiàn)有的多媒體文件制作 方式不能適應(yīng)多路視頻、音頻的需要,局限性大,不能滿足用戶附加需求的缺陷,提供一種 多媒體文件制作方法、播放方法及系統(tǒng)。
[0007]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:構(gòu)造一種多媒體文件制作方法,所 述方法包括:
[0008] 設(shè)置頭容器、索引容器、軌道容器和集群容器;所述頭容器、索引容器、軌道容器和 集群容器均包括ID字段、尺寸字段和數(shù)據(jù)字段;
[0009] 獲取多媒體數(shù)據(jù)、索引數(shù)據(jù)和頭文件數(shù)據(jù);其中,所述多媒體數(shù)據(jù)包括:一路或多 路視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù);所述頭文件數(shù)據(jù)包括文件類型和文件版本號(hào)識(shí) 別息;
[0010] 分別建立所述一路或多路視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)與一條或多條視 頻軌、音頻軌、字幕軌的一一映射表;
[0011] 將所述頭文件數(shù)據(jù)、索引數(shù)據(jù)、映射表和多媒體數(shù)據(jù)分別存儲(chǔ)到所述多媒體文件 的頭容器、索引容器、軌道容器和集群容器,以生成所述多媒體文件。
[0012] 優(yōu)選的,所述方法還包括:設(shè)置預(yù)覽視頻幀容器,所述預(yù)覽視頻幀容器包括ID字 段、尺寸字段和數(shù)據(jù)字段;獲取預(yù)覽圖片幀,并將所述預(yù)覽圖片幀存儲(chǔ)到預(yù)覽視頻幀容器, 以生成所述多媒體文件。
[0013] 優(yōu)選的,所述方法還包括:設(shè)置視頻標(biāo)簽容器,所述視頻標(biāo)簽容器包括ID字段、尺 寸字段和數(shù)據(jù)字段;獲取視頻標(biāo)簽數(shù)據(jù),并將所述視頻標(biāo)簽數(shù)據(jù)存儲(chǔ)到視頻標(biāo)簽容器,以生 成所述多媒體文件。
[0014] 優(yōu)選的,所述方法還包括:設(shè)置位置索引容器,所述位置索引容器包括ID字段、尺 寸字段和數(shù)據(jù)字段;分別建立頭容器、索引容器、集群容器、軌道容器、預(yù)覽視頻幀容器和視 頻標(biāo)簽容器與其存儲(chǔ)位置的索引,并將所述索引存儲(chǔ)到位置索引容器,以生成所述多媒體 文件。
[0015] 優(yōu)選的,所述方法還包括:設(shè)置媒體元信息容器,所述媒體元信息容器包括ID字 段、尺寸字段和數(shù)據(jù)字段;獲取多媒體文件的媒體元信息,包括名稱、大小、時(shí)長及制作時(shí) 間,并將其存儲(chǔ)到媒體元信息容器,以生成多媒體文件。
[0016] 優(yōu)選的,所述索引數(shù)據(jù)包括第一索引數(shù)據(jù)和第二索引數(shù)據(jù);
[0017] 所述第一索引數(shù)據(jù)包括第一預(yù)設(shè)時(shí)間內(nèi)的每幀圖像與其播放時(shí)刻的一一對應(yīng)關(guān) 系;
[0018] 所述第二索引數(shù)據(jù)包括第二預(yù)設(shè)時(shí)間內(nèi)的每幀圖像與其播放時(shí)刻的一一對應(yīng)關(guān) 系。
[0019] 優(yōu)選的,所述方法還包括:
[0020] 將所述集群容器中存儲(chǔ)的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按照時(shí)間長度劃 分為多個(gè)子塊,每個(gè)子塊以數(shù)秒為單位;
[0021] 所述每個(gè)子塊對應(yīng)一個(gè)播放時(shí)碼,所述播放時(shí)碼包括基準(zhǔn)時(shí)碼和偏移時(shí)碼。
[0022] 優(yōu)選的,所述方法還包括:當(dāng)與視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)分別對應(yīng)的 視頻軌、音頻軌、字幕軌有多條時(shí),設(shè)定多條視頻軌、音頻軌和字幕軌的優(yōu)先級信息,并將所 述優(yōu)先級信息存儲(chǔ)在所述軌道容器中。
[0023]-種多媒體文件播放方法,用于播放采用上述方法制作的多媒體文件,所述方法 包括:
[0024] 加載并解析多媒體文件;
[0025] 根據(jù)所解析出的信息,選擇相應(yīng)的解碼器對所述多媒體文件進(jìn)行解碼;
[0026] 播放解碼后的多媒體文件。
[0027] 優(yōu)選的,所述播放方法還包括:根據(jù)多媒體文件的軌道容器中的優(yōu)先級信息,選擇 相應(yīng)的視頻軌、音頻軌和字幕軌以播放解碼后的多媒體文件。
[0028]-種多媒體文件播放系統(tǒng),用于播放采用上述方法制作的多媒體文件,所述系統(tǒng) 包括:解析模塊、解碼模塊和播放模塊;
[0029] 所述解析模塊用于解析所述多媒體文件;
[0030] 所述解碼模塊,用于根據(jù)所述解析模塊解析出的信息,選擇相應(yīng)的解碼器對所述 多媒體文件進(jìn)行解碼;
[0031] 所述播放模塊,用于播放解碼后的多媒體文件。
[0032] 優(yōu)選的,所述播放模塊還用于根據(jù)多媒體文件的軌道容器中的優(yōu)先級信息,選擇 相應(yīng)的視頻軌、音頻軌和字幕軌以播放解碼后的多媒體文件。
[0033] 實(shí)施本發(fā)明的多媒體文件制作方法、播放方法及系統(tǒng),具有以下有益效果:可容納 任意數(shù)量和任意編碼格式的視頻數(shù)據(jù)、音頻數(shù)據(jù)、字幕流數(shù)據(jù)、索引數(shù)據(jù)、預(yù)覽幀數(shù)據(jù)、視頻 標(biāo)簽數(shù)據(jù)及控制信息、自定義數(shù)據(jù)包等,適應(yīng)多路視頻、音頻和字幕的需要;在播放時(shí),可實(shí) 現(xiàn)靈活控制多媒體文件的播放,實(shí)現(xiàn)更多的特色功能(例如預(yù)覽還未下載的視頻、展示視頻 標(biāo)簽等);能夠?qū)崿F(xiàn)快速定位及可變粒度索引;采用模塊化的層次結(jié)構(gòu)(頭容器和數(shù)據(jù)容器 結(jié)構(gòu)),可任意擴(kuò)展某個(gè)結(jié)構(gòu);由于有預(yù)覽圖片幀,能為網(wǎng)絡(luò)狀況不佳時(shí)提供更好的播放體 驗(yàn),在緩沖時(shí),可通過預(yù)覽視頻幀容器獲得未下載數(shù)據(jù)段的視頻圖像預(yù)覽;視頻標(biāo)簽可向用 戶展示更多的內(nèi)容;由于在制作多媒體文件時(shí)通過軌道容器記錄了各個(gè)數(shù)據(jù)流的編碼信 息,因此,本發(fā)明實(shí)施例的多媒體文件可以容納幾乎所有編碼類型的視頻、音頻及字幕流; 且可節(jié)省存儲(chǔ)空間。
【附圖說明】
[0034] 下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中:
[0035] 圖1是本發(fā)明實(shí)施例的多媒體文件的結(jié)構(gòu)示意圖;
[0036] 圖2是本發(fā)明實(shí)施例的多媒體文件制作方法的流程圖;
[0037] 圖3是本發(fā)明實(shí)施例的多媒體文件播放方法的流程圖;
[0038] 圖4是本發(fā)明實(shí)施例的多媒體文件播放方法的詳細(xì)流程圖;
[0039] 圖5是本發(fā)明實(shí)施例的多媒體文件播放系統(tǒng)的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0040] 為了對本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對照附圖詳細(xì)說明 本發(fā)明的【具體實(shí)施方式】。
[0041] 按照本發(fā)明實(shí)施例的多媒體文件制作方法制作的多媒體文件可容納任意數(shù)量和 任意編碼格式的視頻數(shù)據(jù)、音頻數(shù)據(jù)、字幕流數(shù)據(jù)、索引數(shù)據(jù)、預(yù)覽幀數(shù)據(jù)和視頻標(biāo)簽數(shù)據(jù) 等。在播放本發(fā)明實(shí)施例的多媒體文件制作方法制作的多媒體文件時(shí),可靈活控制多媒體 文件的播放,實(shí)現(xiàn)更多的特色功能(例如預(yù)覽還未下載的視頻、展示視頻標(biāo)簽等)。
[0042] 參見圖1,為本發(fā)明實(shí)施例的多媒體文件的結(jié)構(gòu)示意圖。本發(fā)明實(shí)施例的多媒 體文件由若干個(gè)存儲(chǔ)有數(shù)據(jù)的容器(box)組成。每個(gè)box的結(jié)構(gòu)都是以擴(kuò)展二進(jìn)制多媒 體語言(EBML,ExtensibleBinaryMetaLanguage)的形式進(jìn)行存儲(chǔ)。采用EBML形式的 好處是可以節(jié)省存儲(chǔ)空間。例如,對64位整數(shù)變量表示的數(shù)據(jù)進(jìn)行編碼存入時(shí),如果變 量數(shù)據(jù)為5,則編碼結(jié)果為0x85,存儲(chǔ)時(shí)只占一個(gè)字節(jié)。若以普通方式,編碼結(jié)果將會(huì)是 0x0000000000000005,存儲(chǔ)時(shí)占用8個(gè)字節(jié)。
[0043] 在本發(fā)明的實(shí)施例中一個(gè)多媒體文件包括'Header"類型的box,用于存儲(chǔ)文件 類型和文件版本號(hào)識(shí)別信息;"Data"類型的box,用于存儲(chǔ)數(shù)據(jù)信息。其中,"Data"類型的 box即數(shù)據(jù)容器20(Databox),包括七個(gè)子box。
[0044] "Header"類型的box即頭容器10(Headerbox)以及每個(gè)子box均包括ID字段、 尺寸(size)字段和數(shù)據(jù)(data)字段。其中,ID和size使用不定長整數(shù)表示法。data所 占的字節(jié)數(shù)和size相關(guān),例如,size為0x08,則data所占的字節(jié)數(shù)即為8字節(jié)。在本發(fā)明 的實(shí)施例中,ID字段和size字段總是被編碼成最短的表示方式以節(jié)約存儲(chǔ)空間,例如,1被 編碼成0x81,而不會(huì)用0x4001。此外,由于本發(fā)明實(shí)施例中采用EBML形式,易于實(shí)現(xiàn)擴(kuò)展, 因?yàn)?,EBML本身是box結(jié)構(gòu)的,data(數(shù)據(jù))字段中可以擴(kuò)展databox的結(jié)構(gòu)。
[0045] 頭容器10(Headerbox)中的ID字段固定不變,例如,其值可設(shè)定為0xlB514D56。 當(dāng)播放端播放多媒體文件,解析多媒體文件時(shí),根據(jù)頭容器10中的ID字段即可加載相應(yīng)的 解