基于DirectShow的外掛字幕重定向方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體重定向技術(shù)領(lǐng)域,尤其涉及一種基于DirectShow的外掛字幕重定向方法及系統(tǒng)。
【背景技術(shù)】
[0002]DirectShow是微軟公司提供的一套在Windows平臺(tái)上進(jìn)行流媒體處理的開發(fā)包,是一套完全基于COM (Component Object Model,即組件對(duì)象模型)的應(yīng)用系統(tǒng),它的組成模塊是一種稱之為Filter (過濾器)的COM組件,每一個(gè)Filter完成數(shù)據(jù)流上的某些功能。
[0003]現(xiàn)有技術(shù)如圖1所示,多媒體重定向技術(shù)使用的是DirectShow框架,服務(wù)端和客戶端內(nèi)均包含有Source Filer (源過濾器)、Transform Filer (傳輸過濾器)、RenderFiler (渲染過濾器),視頻文件位于服務(wù)端內(nèi),通過Source Filer (源過濾器)獲取服務(wù)端中的視頻文件,將該視頻文件傳輸至Transform Filer (傳輸過濾器)進(jìn)行解析,將視頻文件中的視頻數(shù)據(jù)解析成數(shù)據(jù)流經(jīng)Render Filer (植染過濾器)下發(fā)至客戶端的SourceFiler (源過濾器),再經(jīng)Transform Filer (傳輸過濾器)傳輸至Render Filer (植染過濾器)進(jìn)行播放。
[0004]隨著云計(jì)算技術(shù)的推廣,在虛擬桌面中觀看高清視頻成為人們特定的需求。在虛擬桌面播放高清視頻會(huì)出現(xiàn)畫面不流暢以及需要占用大量服務(wù)器資源的問題,為了解決這些問題,各大虛擬廠商推出多媒體重定向技術(shù)來解決。而對(duì)于一些高清視頻,其本身并不內(nèi)嵌字幕,需要加載的外掛字幕支持。外掛字幕是視頻文件和字幕文件分離,在播放的時(shí)候要導(dǎo)入字幕文件,比如DVD就會(huì)自動(dòng)導(dǎo)入字幕,外掛字幕的好處是:可以導(dǎo)入自己國(guó)家的語言,且外掛字幕相對(duì)于內(nèi)嵌字幕來說對(duì)視頻的質(zhì)量損害就會(huì)小很多。但現(xiàn)有的多媒體重定向技術(shù)無法播放外掛字幕,從而無法達(dá)到更好的視頻觀看體驗(yàn)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題之一,在于提供一種基于DirectShow的外掛字幕重定向方法,是為了解決現(xiàn)有的多媒體重定向技術(shù)無法播放外掛字幕的問題。
[0006]本發(fā)明的問題之一,是這樣實(shí)現(xiàn)的:
[0007]一種基于DirectShow的外掛字幕重定向方法,包括如下步驟:
[0008]步驟1、從服務(wù)端中獲取字幕文件;
[0009]步驟2、將該字幕文件發(fā)送至客戶端,并存儲(chǔ)至該客戶端的一目錄中;
[0010]步驟3、將DirectVobSub Filter加載至客戶端的視頻播放鏈路中,通過該DirectVobSub Filter上的接口獲取該字幕文件所在的目錄路徑,然后DirectVobSubFilter通過該目錄路徑將該字幕文件中的字幕數(shù)據(jù)解析成數(shù)據(jù)流;
[0011]步驟4、調(diào)整客戶端中的視頻數(shù)據(jù)每一幀的時(shí)間戳,使視頻數(shù)據(jù)與字幕數(shù)據(jù)顯示的時(shí)間相匹配,從而DirectVobSub Filter能根據(jù)視頻數(shù)據(jù)每一幀的時(shí)間戳,將字幕數(shù)據(jù)添加至視頻數(shù)據(jù)后,通過客戶端的視頻播放鏈路對(duì)調(diào)整后的視頻數(shù)據(jù)進(jìn)行播放。
[0012]進(jìn)一步地,所述步驟I具體如下:
[0013]在DirectShow 框架中,使用 FilterGraph 中的 Source Filter 來獲取IFileSourceFilter接口,并通過該IFileSourceFilter接口從服務(wù)端中找出視頻文件,然后通過該視頻文件所在的文件路徑找出與該視頻文件的文件名相同的字幕文件。
[0014]進(jìn)一步地,所述步驟3具體如下:
[0015]將DirectVobSub Filter 加載至 FilterGraph 中以獲取 IDirectVobSub 接口,使用該IDirectVobSub接口的put_filename方法獲取該字幕文件所在的目錄路徑,然后DirectVobSub Filter通過該目錄路徑將該字幕文件中的字幕數(shù)據(jù)解析成數(shù)據(jù)流。
[0016]本發(fā)明要解決的技術(shù)問題之二,在于提供一種基于DirectShow的外掛字幕重定向的系統(tǒng),是為了解決現(xiàn)有的多媒體重定向技術(shù)無法播放外掛字幕的問題。
[0017]本發(fā)明的問題之二,是這樣實(shí)現(xiàn)的:
[0018]一種基于DirectShow的外掛字幕重定向的系統(tǒng),包括:
[0019]獲取模塊,用于從服務(wù)端中獲取字幕文件;
[0020]發(fā)送模塊,用于將該字幕文件發(fā)送至客戶端,并存儲(chǔ)至該客戶端的一目錄中;
[0021]設(shè)置模塊,用于將DirectVobSub Filter加載至客戶端的視頻播放鏈路中,通過該DirectVobSub Filter上的接口獲取該字幕文件所在的目錄路徑,然后DirectVobSubFilter通過該目錄路徑將該字幕文件中的字幕數(shù)據(jù)解析成數(shù)據(jù)流;
[0022]調(diào)整模塊,用于調(diào)整客戶端中的視頻數(shù)據(jù)每一幀的時(shí)間戳,使視頻數(shù)據(jù)與字幕數(shù)據(jù)顯示的時(shí)間相匹配,從而DirectVobSub Filter能根據(jù)視頻數(shù)據(jù)每一幀的時(shí)間戳,將字幕數(shù)據(jù)添加至視頻數(shù)據(jù)后,通過客戶端的視頻播放鏈路對(duì)調(diào)整后的視頻數(shù)據(jù)進(jìn)行播放。
[0023]進(jìn)一步地,所述獲取模塊具體包括:
[0024]在DirectShow 框架中,使用 FilterGraph 中的 Source Filter 來獲取IFileSourceFilter接口,并通過該IFileSourceFilter接口從服務(wù)端中找出視頻文件,然后通過該視頻文件所在的文件路徑找出與該視頻文件的文件名相同的字幕文件。
[0025]進(jìn)一步地,所述設(shè)置模塊具體包括:
[0026]將DirectVobSub Filter 加載至 FilterGraph 中以獲取 IDirectVobSub 接口,使用該IDirectVobSub接口的put_filename方法獲取該字幕文件所在的目錄路徑,然后DirectVobSub Filter通過該目錄路徑將該字幕文件中的字幕數(shù)據(jù)解析成數(shù)據(jù)流。
[0027]本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明能夠解決在云計(jì)算環(huán)境中使用多媒體重定向技術(shù)觀看高清視頻時(shí)無法加載外掛字幕的問題。
【附圖說明】
[0028]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說明。
[0029]圖1為現(xiàn)有技術(shù)的視頻數(shù)據(jù)傳輸流程圖。
[0030]圖2為本發(fā)明的數(shù)據(jù)傳輸流程圖。
[0031 ] 圖3為本發(fā)明方法執(zhí)行流程圖。
【具體實(shí)施方式】
[0032]為使本發(fā)明更明顯易懂,茲以一優(yōu)選實(shí)施例,并配合附圖作詳細(xì)說明如下。
[0033]如圖2所示,本發(fā)明是基于多媒體重定向技術(shù)的DirectShow框架進(jìn)行的改進(jìn),月艮務(wù)端包含有Source Filer (源過濾器)'Transform Filer (傳輸過濾器)、Render Filer (植染過濾器),而客戶端包含有Source Filer (源過濾器)'Transform Filer (傳輸過濾器)、DirectVobSub Filter (字幕處理過濾器)、Render Filer (植染過濾器),視頻文件與字幕文件均位于服務(wù)端內(nèi),通過Source Filer (源過濾器)獲取服務(wù)端中的視頻文件,再通過該視頻文件的文件路徑找到字幕文件并傳輸至客戶端的一臨時(shí)目錄中,同時(shí)將該視頻文件傳輸至Transform Filer (傳輸過濾器)進(jìn)行解析,將視頻文件中的視頻數(shù)據(jù)解析成數(shù)據(jù)流經(jīng)Render Filer (植染過濾器)下發(fā)至客戶端的Source Filer (源過濾器),再經(jīng)TransformFiler (傳輸過濾器)傳輸至DirectVobSub Filter (字幕處理過濾器),通過DirectVobSubFilter (字幕處理過濾器)上的接口獲取字幕文件所在的目錄路徑,并通過該目錄路徑將該字幕文件中的字幕數(shù)據(jù)解析成數(shù)據(jù)流;接著調(diào)整客戶端中的視頻數(shù)據(jù)每一幀的時(shí)間戳,使視頻數(shù)據(jù)與字幕數(shù)據(jù)顯示的時(shí)間相匹配,從而DirectVobSub Filter能根據(jù)視頻數(shù)據(jù)每一幀的時(shí)間戳,將字幕數(shù)據(jù)添加至視頻數(shù)據(jù)后,最后通過客戶端的Render Filer(渲染過濾器)對(duì)調(diào)整后的視頻數(shù)據(jù)進(jìn)行播放。
[0034]如圖3所示,本發(fā)明的一種基于DirectShow的外掛字幕重定向方法,包括如下步驟:
[0035]步驟1、從服務(wù)端中獲取字幕文件;具體有:在DirectShow框架中,使用 FilterGraph 中的 Source Filter 來獲取 IFileSourceFilter 接口,并通過該IFileSourceFilter接口從服務(wù)端中找出視頻文件,然后通過該視頻文件所在的文件路徑找出與該視頻文件的文件名相同,且后綴名為