本發(fā)明涉及音視頻播放技術(shù)領(lǐng)域,特別是涉及一種音視頻文件的播放方法及播放裝置。
背景技術(shù):
GStreamer是一個(gè)開源的多媒體框架庫(kù)。利用GStreamer,可以構(gòu)建一系列的媒體處理模塊,包括從簡(jiǎn)單的Ogg播放功能到復(fù)雜的音頻(混音)和視頻(非線性編輯)的處理,其中Ogg是由Xiph.Org Foundation維護(hù)的自由、開放的容器格式(container format)。Ogg名稱來(lái)源于“ogging”,其為電腦游戲Netrek的行話,這意味著強(qiáng)有力地執(zhí)行某事,可能沒(méi)有考慮到對(duì)未來(lái)資源的流失。應(yīng)用程序可以透明的利用解碼和過(guò)濾技術(shù)。開發(fā)者可以使用簡(jiǎn)潔通用的接口來(lái)編寫一個(gè)簡(jiǎn)單的插件來(lái)添加新的解碼器或?yàn)V鏡。
DivX目錄(Menu)文件包括多級(jí)菜單,可供用戶選擇。很多廠商在Linux平臺(tái)上,都選擇使用GStreamer多媒體播放框架。GStreamer的現(xiàn)有音頻視頻交錯(cuò)格式(Audio Video Interleaved,AVI)插件(Plugins)只支持播放DivX目錄文件的第一段視頻或者是普通AVI/DivX文件(只有一段音視頻),并不支持用戶選擇此種有多段音視頻的DivX目錄文件的其他章節(jié)視頻。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明主要解決的技術(shù)問(wèn)題是提供一種音視頻文件的播放方法及播放裝置,能夠在GStreamer多媒體播放框架下根據(jù)用戶的選擇播放包括多段獨(dú)立的音視頻章節(jié)和/或字幕的音視頻文件。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用的一個(gè)技術(shù)方案是:提供一種音視頻文件的播放方法,所述音視頻文件包括多段獨(dú)立的音視頻章節(jié)和/或字幕,所述音視頻文件基于GStreamer多媒體播放框架進(jìn)行播放,所述方法包括:判斷所述音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;依據(jù)所述音視頻文件的類型解析所述音視頻文件,并保存解析得到的所述音視頻文件的菜單元數(shù)據(jù);解析一交互菜單的指令,以確定所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),其中,所述交互菜單包括多級(jí)菜單;以及依據(jù)所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述解析所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)的步驟包括:解析所述交互菜單的指令對(duì)應(yīng)的用戶界面坐標(biāo)信息,將解析出來(lái)的用戶界面坐標(biāo)轉(zhuǎn)換為音視頻章節(jié)和/或字幕相對(duì)坐標(biāo),確定所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)。
其中,所述依據(jù)所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至所述交互菜單的指令所對(duì)應(yīng)的音視頻章節(jié)和/或字幕進(jìn)行播放的步驟,包括:依據(jù)所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)確定所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕;解析所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù),確定是否進(jìn)行切換;以及若所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕相較于前一播放的音視頻章節(jié)和/或字幕發(fā)生了變化,確定切換至所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述切換至所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放的步驟,還包括:根據(jù)所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕指引待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù);刪除所述前一音視頻章節(jié)和/或字幕的數(shù)據(jù);將所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù)進(jìn)行解復(fù)用操作,創(chuàng)建所述待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù)的播放流;以及將創(chuàng)建的所述播放流發(fā)送到后面的組件,以便于所述后面的組件對(duì)所述操作所對(duì)應(yīng)的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述判斷所述音視頻文件的類型的步驟,包括:判斷所述音視頻文件的類型是否為DivXMenu文件類型。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用的另一個(gè)技術(shù)方案是:提供一種音視頻文件的播放裝置,所述音視頻文件包括多段獨(dú)立的音視頻章節(jié)和/或字幕,所述音視頻文件基于GStreamer多媒體播放框架進(jìn)行播放,所述裝置包括:判斷模塊,用于判斷所述音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;以及導(dǎo)航模塊,耦接于所述判斷模塊,用于基于所述GStreamer多媒體播放框架控制所述音視頻文件的播放,包括:解析單元,用于依據(jù)所述音視頻文件的類型解析所述音視頻文件,并保存解析得到的所述音視頻文件的菜單元數(shù)據(jù);以及接收一交互菜單的指令,以確定所述交互菜單的指令所對(duì)應(yīng)的的菜單元數(shù)據(jù),其中,所述交互菜單包括多級(jí)菜單;以及控制單元,用于依據(jù)所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述解析單元用于解析所述交互菜單的指令對(duì)應(yīng)的用戶界面坐標(biāo)信息,將解析出來(lái)的用戶界面坐標(biāo)轉(zhuǎn)換為音視頻章節(jié)和/或字幕相對(duì)坐標(biāo),確定所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)。
其中,所述控制單元還用于依據(jù)所述交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)確定所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕;解析所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù),確定是否進(jìn)行切換;以及若所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕相較于前一播放的音視頻章節(jié)和/或字幕發(fā)生了變化,確定切換至所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述導(dǎo)航模塊還包括:導(dǎo)航單元,用于所述交互菜單的指令所映射的音視頻章節(jié)和/或字幕指引待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù);清除單元,用于刪除所述前一音視頻章節(jié)和/或字幕的數(shù)據(jù);解復(fù)用單元,用于將所述交互菜單的指令所映射音視頻章節(jié)和/或字幕的數(shù)據(jù)進(jìn)行解復(fù)用操作,創(chuàng)建所述待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù)的播放流;以及發(fā)送單元,用于將創(chuàng)建的所述播放流發(fā)送到后面的組件,以便于所述后面的組件對(duì)所述操作所對(duì)應(yīng)的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,所述播放裝置單獨(dú)集成為所述GStreamer多媒體框架中的一個(gè)新組件。
其中,所述播放裝置集成在播放應(yīng)用程序與所述GStreamer多媒體框架之間或者集成在播放應(yīng)用程序上。
其中,所述判斷模塊還用于判斷所述音視頻文件的類型是否為DivXMenu文件類型。
本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)的情況,本發(fā)明上述音視頻文件的播放方法及播放裝置依據(jù)音視頻文件的類型解析音視頻文件,并保存解析得到的音視頻文件的菜單元數(shù)據(jù);以及解析一交互菜單的指令,以確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),據(jù)此確定是否切換至指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放,通過(guò)這種方式,能夠在GStreamer多媒體播放框架下根據(jù)用戶的選擇播放包括多段獨(dú)立的音視頻章節(jié)和/或字幕的音視頻文件。
附圖說(shuō)明
圖1是本發(fā)明音視頻文件的播放方法一實(shí)施方式的流程圖;
圖2是本發(fā)明音視頻文件的播放方法一音視頻文件中菜單和章節(jié)示例的示意圖;
圖3是本發(fā)明音視頻文件的播放方法另一實(shí)施方式的流程圖;
圖4是本發(fā)明音視頻文件的播放方法又一實(shí)施方式的流程圖;
圖5是本發(fā)明音視頻文件的播放裝置一實(shí)施方式的結(jié)構(gòu)示意圖;
圖6是本發(fā)明音視頻文件的播放裝置另一實(shí)施方式的結(jié)構(gòu)示意圖;
圖7是本發(fā)明音視頻文件的播放裝置一實(shí)施方式中作為一個(gè)組件集成在GStreamer多媒體框架的示意圖;
圖8是本發(fā)明音視頻文件的播放裝置一實(shí)施方式中放在播放應(yīng)用程序上的示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
參閱圖1,圖1是本發(fā)明音視頻文件的播放方法一實(shí)施方式的流程圖,在本發(fā)明實(shí)施方式中,音視頻文件包括多段獨(dú)立的音視頻章節(jié)和/或字幕,用戶據(jù)此可以進(jìn)行選擇,選擇播放其中的音視頻章節(jié)和/或選擇顯示字幕。
該音視頻文件基于GStreamer多媒體播放框架進(jìn)行播放,GStreamer是一個(gè)開源的多媒體框架庫(kù),利用GStreamer,可以構(gòu)建一系列的媒體處理模塊,包括從簡(jiǎn)單的Ogg播放功能到復(fù)雜的音頻(混音)和視頻(非線性編輯)的處理。應(yīng)用程序可以透明的利用解碼和過(guò)濾技術(shù)。開發(fā)者可以使用簡(jiǎn)潔通用的接口來(lái)編寫一個(gè)簡(jiǎn)單的插件來(lái)添加新的解碼器或?yàn)V鏡。因?yàn)镚Streamer的上述優(yōu)點(diǎn),很多平臺(tái)的廠商選擇使用GStreamer多媒體播放框架。但是有些平臺(tái)上,例如:Linux平臺(tái),GStreamer的現(xiàn)有AVI插件只支持播放DivX目錄文件的第一段視頻或者是普通AVI/DivX文件(只有一段音視頻),并不支持用戶選擇此種有多段音視頻的DivX目錄文件的其他章節(jié)視頻。
本發(fā)明音視頻文件的播放方法能夠在GStreamer多媒體播放框架下根據(jù)用戶的選擇播放包括多段獨(dú)立的音視頻章節(jié)和/或字幕的音視頻文件。需要說(shuō)明的是,本發(fā)明音視頻文件的播放方法不受操作系統(tǒng)平臺(tái)的限制,只要該操作系統(tǒng)平臺(tái)使用GStreamer多媒體播放框架均可以實(shí)現(xiàn)。
該方法具體包括:
步驟S101:判斷音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;
不同音視頻文件的類型,文件的后綴通常不一樣,可以根據(jù)文件的后綴來(lái)判斷音視頻文件的類型。如果音視頻文件沒(méi)有帶后綴,也可以查看文件的擴(kuò)展名而得知音視頻文件的類型。當(dāng)然也可以采用其他方法,例如:讀取文件格式頭信息,等等。
當(dāng)上層應(yīng)用將要播放該音視頻文件的時(shí)候,即可判斷音視頻文件的類型,并將音視頻文件的類型以消息的形式發(fā)送給上層應(yīng)用,以回應(yīng)上層應(yīng)用的詢問(wèn)。
步驟S102:依據(jù)音視頻文件的類型解析音視頻文件,并保存解析得到的音視頻文件的菜單元數(shù)據(jù);
文件系統(tǒng)中的數(shù)據(jù)分為數(shù)據(jù)和元數(shù)據(jù)。數(shù)據(jù)是指普通文件中的實(shí)際數(shù)據(jù),而元數(shù)據(jù)指用來(lái)描述一個(gè)文件的特征的系統(tǒng)數(shù)據(jù),諸如訪問(wèn)權(quán)限、文件擁有者以及文件數(shù)據(jù)塊的分布信息(例如:索引節(jié)點(diǎn)inode,...)等等。用戶需要操作一個(gè)文件必須首先得到它的元數(shù)據(jù),才能定位到文件的位置并且得到文件的內(nèi)容或相關(guān)屬性。
不同音視頻文件的類型,文件的封裝格式是不一樣的。在獲知音視頻文件的類型后,可以依據(jù)該類型文件的封裝格式解析該音視頻文件,然后將解析得到的音視頻文件的菜單元數(shù)據(jù)保存起來(lái),當(dāng)接收到用戶對(duì)該音視頻文件的操作后,可以定位文件的位置并且得到文件的內(nèi)容或相關(guān)屬性。因此,解析出來(lái)的菜單元數(shù)據(jù)以備后續(xù)比對(duì)使用。
步驟S103:解析一交互菜單的指令,以確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),其中,交互菜單包括多級(jí)菜單;
交互菜單也屬于音視頻文件封裝的一部分內(nèi)容,一個(gè)音視頻文件可以包括一個(gè)以上的交互菜單,每個(gè)交互菜單中含有事件(action)對(duì)應(yīng)關(guān)系表,例如“點(diǎn)擊操作+點(diǎn)擊區(qū)域位置,此時(shí)是否要播放某個(gè)章節(jié)(title)以及此章節(jié)在文件中的位置和數(shù)據(jù)大小(data size)等”。
交互菜單包括多級(jí)菜單,也就是說(shuō)菜單下面還包括下一級(jí)的菜單。
例如,如圖2所示,一個(gè)音視頻文件包括5個(gè)章節(jié)和2個(gè)菜單,其中,菜單2為菜單1的2級(jí)菜單。播放章節(jié)1時(shí),顯示菜單1,用戶點(diǎn)擊“山東旅游”時(shí),播放章節(jié)2,用戶點(diǎn)擊“江蘇旅游”時(shí),播放章節(jié)5,同時(shí)顯示2級(jí)菜單,即菜單2,用戶點(diǎn)擊“蘇州”時(shí),播放章節(jié)3,用戶點(diǎn)擊“無(wú)錫”時(shí),播放章節(jié)4。
交互菜單顯示在上層應(yīng)用的界面,可用來(lái)提供給用戶做交互,以便用戶選擇相應(yīng)音視頻章節(jié)。當(dāng)用戶做出選擇后,即為發(fā)出交互菜單的指令,解析該交互菜單的指令,從而確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)。
步驟S104:依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
在解析音視頻文件的時(shí)候,保存有該音視頻文件上所有的菜單元數(shù)據(jù),比對(duì)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),如果交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)與最近播放的音視頻章節(jié)和/或字幕的菜單元數(shù)據(jù)一樣,則不需要切換,可以繼續(xù)重播,如果交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)與最近播放的音視頻章節(jié)和/或字幕的菜單元數(shù)據(jù)不一樣,則需要切換,播放交互菜單的指令所映射的音視頻章節(jié)和/或字幕。
本發(fā)明實(shí)施方式判斷音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;依據(jù)音視頻文件的類型解析音視頻文件,并保存解析得到的音視頻文件的菜單元數(shù)據(jù);解析一交互菜單的指令,以確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),其中,交互菜單包括多級(jí)菜單;以及依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。由于解析得到的音視頻文件的菜單元數(shù)據(jù),解析得到多級(jí)的交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),據(jù)此確定是否切換至指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放,通過(guò)這種方式,能夠在GStreamer多媒體播放框架下根據(jù)用戶的選擇播放包括多段獨(dú)立的音視頻章節(jié)和/或字幕的音視頻文件。
其中,解析交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)的步驟具體可以包括:解析交互菜單的指令對(duì)應(yīng)的用戶界面坐標(biāo)信息,將解析出來(lái)的用戶界面坐標(biāo)轉(zhuǎn)換為音視頻章節(jié)和/或字幕相對(duì)坐標(biāo),確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)。
例如:用戶點(diǎn)擊菜單上的按鈕,則:
A.根據(jù)點(diǎn)擊的用戶界面坐標(biāo)判定是否點(diǎn)擊到按鈕,如果點(diǎn)擊到,那么具體點(diǎn)擊的是哪個(gè)按鈕;
B.將該按鈕的用戶界面坐標(biāo)轉(zhuǎn)換為音視頻章節(jié)和/或字幕相對(duì)坐標(biāo),查找菜單元數(shù)據(jù),即可確定用戶點(diǎn)擊的按鈕所對(duì)應(yīng)的章節(jié)的菜單元數(shù)據(jù)。
當(dāng)然可以對(duì)菜單上的每一項(xiàng)內(nèi)容(即對(duì)應(yīng)上述例子的按鈕的內(nèi)容)進(jìn)行編號(hào),用戶輸入編號(hào)即可直接獲知用戶的選擇所對(duì)應(yīng)的菜單元數(shù)據(jù),然后確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。在實(shí)際應(yīng)用中,如何解析交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),關(guān)鍵在于音視頻文件的封裝格式、對(duì)應(yīng)的菜單元數(shù)據(jù)以及顯示的方式,因此,對(duì)應(yīng)的解析方式也是變化多樣的。
參見(jiàn)圖3,步驟S104具體可以包括:子步驟S1041、子步驟S1042以及子步驟S1043。
子步驟S1041:依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)確定交互菜單的指令所映射的音視頻章節(jié)和/或字幕;
子步驟S1042:解析交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù),確定是否進(jìn)行切換;
子步驟S1043:若交互菜單的指令所映射的音視頻章節(jié)和/或字幕相較于前一播放的音視頻章節(jié)和/或字幕發(fā)生了變化,確定切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
通過(guò)上述方式,能夠確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
同樣的道理,根據(jù)音視頻文件的封裝格式、對(duì)應(yīng)的菜單元數(shù)據(jù)以及顯示的方式,步驟S104具體實(shí)現(xiàn)可以是多種多樣的,在此不再一一列舉。
進(jìn)一步,參見(jiàn)圖4,子步驟S1043中,切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放的步驟,還可以具體包括:子步驟S1043-1、子步驟S1043-2、子步驟S1043-3、子步驟S1043-4。
子步驟S1043-1:根據(jù)交互菜單的指令所映射的音視頻章節(jié)和/或字幕指引待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù);
子步驟S1043-2:刪除前一音視頻章節(jié)和/或字幕的數(shù)據(jù);
子步驟S1043-3:將交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù)進(jìn)行解復(fù)用操作,創(chuàng)建待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù)的播放流;
子步驟S1043-4:將創(chuàng)建的播放流發(fā)送到后面的組件,以便于后面的組件對(duì)操作所對(duì)應(yīng)的音視頻章節(jié)和/或字幕進(jìn)行播放。
通過(guò)上述方式,能夠不需要進(jìn)行大的改動(dòng),而簡(jiǎn)單實(shí)現(xiàn)切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,步驟S101中,判斷音視頻文件的類型的步驟,包括:判斷音視頻文件的類型是否為DivX Menu文件類型。
DivX公司基于標(biāo)準(zhǔn)AVI文件包裝了音視頻多媒體內(nèi)容后,還額外擴(kuò)展包含一個(gè)視頻菜單+多段音視頻章節(jié)/字幕,視頻菜單可用來(lái)提供給用戶做交互,以便選擇相應(yīng)音視頻章節(jié),經(jīng)過(guò)這樣封裝起來(lái)的文件即為DivX Menu音視頻文件,它包括交互式菜單、多字幕、多音軌、多視頻、章節(jié)、菜單元數(shù)據(jù)等。一個(gè)章節(jié)含有音頻、視頻、字幕編碼內(nèi)容,這些內(nèi)容構(gòu)成一個(gè)完整的播放章節(jié),可以認(rèn)為一個(gè)DivX Menu文件的章節(jié)就是一個(gè)簡(jiǎn)單的AVI文件。
參見(jiàn)圖5,圖5是本發(fā)明音視頻文件的播放裝置一實(shí)施方式的結(jié)構(gòu)示意圖,本實(shí)施方式的播放裝置可以執(zhí)行上述方法中的步驟,相關(guān)內(nèi)容的詳細(xì)說(shuō)明請(qǐng)參見(jiàn)上述方法部分,在此不再贅述。其中,音視頻文件包括多段獨(dú)立的音視頻章節(jié)和/或字幕,音視頻文件基于GStreamer多媒體播放框架進(jìn)行播放。
該裝置包括:判斷模塊10和導(dǎo)航模塊20。
判斷模塊10用于判斷音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;
導(dǎo)航模塊20耦接于判斷模塊10,用于基于GStreamer多媒體播放框架控制音視頻文件的播放,導(dǎo)航模塊20包括:解析單元201和控制單元202。
解析單元201用于依據(jù)音視頻文件的類型解析音視頻文件,并保存解析得到的音視頻文件的菜單元數(shù)據(jù);以及接收一交互菜單的指令,以確定交互菜單的指令所對(duì)應(yīng)的的菜單元數(shù)據(jù),其中,交互菜單包括多級(jí)菜單;
控制單元202用于依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
本發(fā)明實(shí)施方式判斷音視頻文件的類型并發(fā)送消息通知給上層應(yīng)用;依據(jù)音視頻文件的類型解析音視頻文件,并保存解析得到的音視頻文件的菜單元數(shù)據(jù);解析一交互菜單的指令,以確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),其中,交互菜單包括多級(jí)菜單;以及依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)來(lái)確定是否切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。由于解析得到的音視頻文件的菜單元數(shù)據(jù),解析得到多級(jí)的交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù),據(jù)此確定是否切換至指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放,通過(guò)這種方式,能夠在GStreamer多媒體播放框架下根據(jù)用戶的選擇播放包括多段獨(dú)立的音視頻章節(jié)和/或字幕的音視頻文件。
其中,解析單元201用于解析交互菜單的指令對(duì)應(yīng)的用戶界面坐標(biāo)信息,將解析出來(lái)的用戶界面坐標(biāo)轉(zhuǎn)換為音視頻章節(jié)和/或字幕相對(duì)坐標(biāo),確定交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)。
其中,控制單元202還用于依據(jù)交互菜單的指令所對(duì)應(yīng)的菜單元數(shù)據(jù)確定交互菜單的指令所映射的音視頻章節(jié)和/或字幕;解析交互菜單的指令所映射的音視頻章節(jié)和/或字幕的數(shù)據(jù),確定是否進(jìn)行切換;以及若交互菜單的指令所映射的音視頻章節(jié)和/或字幕相較于前一播放的音視頻章節(jié)和/或字幕發(fā)生了變化,確定切換至交互菜單的指令所映射的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,參見(jiàn)圖6,導(dǎo)航模塊20還包括:導(dǎo)航單元203、清除單元204、解復(fù)用單元205以及發(fā)送單元206。
導(dǎo)航單元203用于交互菜單的指令所映射的音視頻章節(jié)和/或字幕指引待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù);
清除單元204用于刪除前一音視頻章節(jié)和/或字幕的數(shù)據(jù);
解復(fù)用單元205用于將交互菜單的指令所映射音視頻章節(jié)和/或字幕的數(shù)據(jù)進(jìn)行解復(fù)用操作,創(chuàng)建待播放的音視頻章節(jié)和/或字幕的數(shù)據(jù)的播放流;
發(fā)送單元206用于將創(chuàng)建的播放流發(fā)送到后面的組件,以便于后面的組件對(duì)操作所對(duì)應(yīng)的音視頻章節(jié)和/或字幕進(jìn)行播放。
其中,該播放裝置單獨(dú)集成為GStreamer多媒體框架中的一個(gè)新組件。請(qǐng)參見(jiàn)圖7,在一實(shí)施方式中,播放裝置作為一個(gè)組件集成在GStreamer多媒體框架中。該播放裝置組件具有導(dǎo)航器和GStreamer多媒體框架中現(xiàn)有的AviDemux的功能。
其中,該播放裝置集成在播放應(yīng)用程序與GStreamer多媒體框架之間或者集成在播放應(yīng)用程序上。例如:請(qǐng)參見(jiàn)圖8,在一具體實(shí)施方式中,可以將播放裝置的導(dǎo)航器功能放在GStreamer多媒體框架之上,例如放在播放應(yīng)用程序上(圖8所示),或者放在播放應(yīng)用程序與GStreamer多媒體框架之間的中間層。
其中,判斷模塊10還用于判斷音視頻文件的類型是否為DivXMenu文件類型。
以上所述僅為本發(fā)明的實(shí)施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。