專利名稱:流媒體數(shù)據(jù)的處理方法、播放方法以及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體技術(shù)領(lǐng)域,尤其涉及一種流媒體數(shù)據(jù)的處理方法、一種流媒體數(shù)據(jù)的播放方法、一種流媒體數(shù)據(jù)的下載方法、一種流媒體數(shù)據(jù)的處理裝置和一種流媒體數(shù)據(jù)的下載裝置。
背景技術(shù):
流媒體數(shù)據(jù)包括視頻數(shù)據(jù)和音頻數(shù)據(jù)。為了解決將不同數(shù)據(jù)格式的媒體數(shù)據(jù)流存儲在一個文件中,現(xiàn)有技術(shù)提出了容器(Container)的概念。容器是指為了便于視頻數(shù)據(jù)和音頻數(shù)據(jù)的存儲而提出的一種文件格式,例如常見的音頻視頻交錯格式(AVI,Audio Video Interleaved)、MP4(MPEG-4Part 14)、MKV (Matroska)、REAL VIDEO 等等。一個容器可以兼容多種不同數(shù)據(jù)格式的視頻數(shù)據(jù)流和音頻數(shù)據(jù)流。容器文件中除了攜帶視頻數(shù)據(jù)流和音頻數(shù)據(jù)流之外,還在文件頭中攜帶有容器源信息和媒體流管理信息,其中容器源信息是對該容器文件描述信息,即該容器文件的元數(shù)據(jù),例如該容器文件的大小、格式、生成時間等等;媒體流管理信息是對該容器文件所包含的視頻和/或音頻數(shù)據(jù)流的描述信息,即該容器文件中媒體數(shù)據(jù)流的元數(shù)據(jù),例如視頻或音頻數(shù)據(jù)流的數(shù)據(jù)格式。視頻網(wǎng)站或者視頻庫服務(wù)器為了減少開發(fā)成本、使用成本和維護(hù)成本,提出了將輸入的原始容器文件、以及原始容器文件中的媒體數(shù)據(jù)流處理為統(tǒng)一格式的容器文件和媒體數(shù)據(jù)流的要求。為滿足上述要求,現(xiàn)有的處理流程為接收輸入的原始容器文件;根據(jù)原始容器文件中的視頻或音頻數(shù)據(jù)流的數(shù)據(jù)格式,對其中的視頻或音頻數(shù)據(jù)進(jìn)行解碼;按照預(yù)定統(tǒng)一的視頻或音頻數(shù)據(jù)格式,將解碼獲得的數(shù)據(jù)重新編碼為視頻或音頻數(shù)據(jù)流;將重新編碼獲得的視頻或音頻數(shù)據(jù)流再封裝為預(yù)定統(tǒng)一的容器格式的容器文件。發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題在將原始容器中的視頻數(shù)據(jù)流或音頻數(shù)據(jù)流處理為預(yù)定統(tǒng)一的視頻或音頻數(shù)據(jù)格式的過程中,需要經(jīng)過解碼和編碼兩個階段,而不同格式的視頻數(shù)據(jù)流或音頻數(shù)據(jù)流解碼和播放的處理流程都存在差異,在原始容器文件中的視頻數(shù)據(jù)或音頻數(shù)據(jù)格式較為復(fù)雜的情況下,上述處理過程將會占用系統(tǒng)大量的處理資源,并且處理時間也較長。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種流媒體數(shù)據(jù)的處理方法,用以解決現(xiàn)有技術(shù)將輸入的原始容器文件轉(zhuǎn)換為統(tǒng)一格式的新容器文件的過程中,處理過程復(fù)雜,占用處理資源較多的問題。對應(yīng)地,本發(fā)明實(shí)施例還提供了一種流媒體數(shù)據(jù)的播放方法、一種流媒體數(shù)據(jù)的下載方法、一種流媒體數(shù)據(jù)的處理裝置、一種流媒體客戶端和一種流媒體服務(wù)器。本發(fā)明實(shí)施例提供的技術(shù)方案如下
一種流媒體數(shù)據(jù)的處理方法,包括接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流;從所述原始容器文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。一種流媒體數(shù)據(jù)的播放方法,包括向流媒體服務(wù)器發(fā)送在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;接收返回的新容器文件的文件頭和索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;根據(jù)所述索引列表中各關(guān)鍵幀的播放時間,選擇其中一個關(guān)鍵幀的播放時間;從所述索引列表中,查找到選擇出的關(guān)鍵幀的播放時間對應(yīng)的關(guān)鍵幀在所述新容器文件中的偏移位置;向所述流媒體服務(wù)器發(fā)送數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求攜帶查找到的偏移位置,用于獲取以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù);根據(jù)所述文件頭中的數(shù)據(jù)格式,播放流媒體服務(wù)器返回的流媒體數(shù)據(jù)。一種流媒體數(shù)據(jù)的播放方法,包括接收流媒體客戶端發(fā)送的在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;發(fā)送所述新容器文件的標(biāo)識對應(yīng)的新容器文件的文件頭和索引列表,所述索引列表包含關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置和關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;接收數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求中攜帶有偏移位置,該偏移位置是所述流媒體客戶端根據(jù)所述索引列表確定出的一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置;根據(jù)所述獲取請求中的偏移位置,向流媒體客戶端返回新容器文件中以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù)?!N流媒體數(shù)據(jù)的下載方法,包括流媒體服務(wù)器接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;流媒體服務(wù)器根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;流媒體服務(wù)器將所述還原的容器文件發(fā)送給所述流媒體客戶端。一種流媒體數(shù)據(jù)的下載方法,包括
流媒體服務(wù)器接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;判斷所述新容器文件標(biāo)識對應(yīng)的新容器文件中是否包含原始容器文件;若是,從所述新容器文件中讀取原始容器文件,并將所述原始容器文件發(fā)送給流媒體客戶端;否則,流媒體服務(wù)器根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;將所述還原的容器文件發(fā)送給所述流媒體客戶端。一種流媒體數(shù)據(jù)的處理裝置,包括第一接收單元,用于接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流;解析單元,用于從所述原始容器文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;第一寫入單元,用于將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;第二寫入單元,用于在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。一種流媒體客戶端,包括第一發(fā)送單元,用于向流媒體服務(wù)器發(fā)送在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;第二接收單元,用于接收返回的新容器文件的文件頭和索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;選擇單元,用于根據(jù)第二接收單元接收的所述索引列表中各關(guān)鍵幀的播放時間, 選擇其中一個關(guān)鍵幀的播放時間;查找單元,用于從所述索引列表中,查找到選擇單元選擇出的關(guān)鍵幀的播放時間對應(yīng)的關(guān)鍵幀在所述新容器文件中的偏移位置第二發(fā)送單元,用于向所述流媒體服務(wù)器發(fā)送數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求攜帶查找到的偏移位置,用于獲取以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù);播放單元,用于根據(jù)第二接收單元接收到的所述文件頭中的數(shù)據(jù)格式,播放流媒體服務(wù)器返回的流媒體數(shù)據(jù)。一種流媒體服務(wù)器,包括第三接收單元,用于接收流媒體客戶端發(fā)送的在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;第三發(fā)送單元,用于發(fā)送所述新容器文件的標(biāo)識對應(yīng)的新容器文件的文件頭和索引列表,所述索引列表包含關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置和關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;第四接收單元,用于接收數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求中攜帶有偏移位置,該偏移位置是所述流媒體客戶端根據(jù)所述索引列表確定出的一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置;第四發(fā)送單元,用于根據(jù)所述獲取請求中的偏移位置,向流媒體客戶端返回以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù)。一種流媒體服務(wù)器,包括第五接收單元,用于接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;第二還原單元,用于根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;第五發(fā)送單元,用于將所述第二還原單元還原的容器文件發(fā)送給所述流媒體客戶端。—種流媒體服務(wù)器,包括第五接收單元,用于接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;判斷單元,用于判斷第五接收單元接收到得所述新容器文件標(biāo)識對應(yīng)的新容器文件中是否包含原始容器文件;讀取單元,用于判斷單元判斷出包含原始容器文件時,從所述新容器文件中讀取原始容器文件,觸發(fā)第五發(fā)送單元將讀取的原始容器文件發(fā)送給流媒體客戶端;第二還原單元,用于判斷單元判斷出未包含原始容器文件時,根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;觸發(fā)第五發(fā)送單元將還原的容器文件發(fā)送給所述流媒體客戶端。本發(fā)明實(shí)施例提供的流媒體數(shù)據(jù)的處理方案,在將輸入的原始容器文件轉(zhuǎn)換為統(tǒng)一格式的新容器文件的過程中,在新容器文件中寫入碼流分析器解析出的每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置。從而無需對原始流媒體文件中的流媒體數(shù)據(jù)進(jìn)行解碼以及重新編碼,就可以將原始容器文件轉(zhuǎn)換為新的容器文件,如果對多個不同格式的原始容器進(jìn)行這種轉(zhuǎn)換,就可以將它們轉(zhuǎn)換成統(tǒng)一格式的新容器文件,簡化了轉(zhuǎn)換過程中處理的復(fù)雜性,提高了轉(zhuǎn)換效率。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為現(xiàn)有技術(shù)將容器文件處理為統(tǒng)一格式時的處理流程示意圖;圖2為本發(fā)明實(shí)施例的主要實(shí)現(xiàn)原理流程圖;圖3為本發(fā)明實(shí)施例提供的流媒體數(shù)據(jù)處理方法的流程圖;圖如為本發(fā)明實(shí)施例提供的新容器文件的第一種格式示意圖;圖4b為本發(fā)明實(shí)施例提供的新容器文件的第二種格式示意圖如為本發(fā)明實(shí)施例提供的新容器文件的第三種格式示意圖;圖5為本發(fā)明實(shí)施例提供的流媒體數(shù)據(jù)的在線播放方法的流程圖;圖6為本發(fā)明實(shí)施例提供的另一種流媒體數(shù)據(jù)在線播放方法的流程圖;圖7a為本發(fā)明實(shí)施例提供的流媒體數(shù)據(jù)的下載方法的流程圖;圖7b為本發(fā)明實(shí)施例提供的另一種流媒體數(shù)據(jù)的下載方法的流程圖;圖8為本發(fā)明實(shí)施例提供的流媒體數(shù)據(jù)的處理裝置的結(jié)構(gòu)示意圖;圖9為本發(fā)明實(shí)施例提供的流媒體客戶端的結(jié)構(gòu)意圖;圖10為本發(fā)明實(shí)施例提供的流媒體服務(wù)器的結(jié)構(gòu)示意圖;圖Ila為本發(fā)明實(shí)施例提供流媒體服務(wù)器的一種結(jié)構(gòu)示意圖;圖lib為本發(fā)明實(shí)施例中提供流媒體服務(wù)器的另一種結(jié)構(gòu)示意圖。
具體實(shí)施例方式附圖1為現(xiàn)有技術(shù)中視頻網(wǎng)站或者視頻庫對流媒體數(shù)據(jù)的處理流程示意圖,要經(jīng)過解碼和編碼兩個階段,將流媒體數(shù)據(jù)封裝為預(yù)定統(tǒng)一的容器格式的容器文件后,基于該預(yù)定統(tǒng)一的容器格式的容器文件進(jìn)行流媒體在線播放和下載。由于現(xiàn)有技術(shù)在將原始容器文件、以及原始容器文件中的媒體數(shù)據(jù)流處理為統(tǒng)一格式的容器文件和媒體數(shù)據(jù)流的過程中需要經(jīng)過解碼和編碼兩個階段,除了會占用系統(tǒng)大量的處理資源、延長處理時間之外,由于重新封裝時只保留了視頻數(shù)據(jù)和音頻數(shù)據(jù),丟失了原始容器文件中的媒體流管理信息等其他信息,因此無法還原出原始容器文件,在需要原始容器文件作為證據(jù)的場景下將無法滿足要求。下面結(jié)合各個附圖對本發(fā)明實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理具體實(shí)施方式
及其對應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)的闡述。如圖2所示,本發(fā)明實(shí)施例的主要實(shí)現(xiàn)原理流程如下步驟10,接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流; 原始媒體數(shù)據(jù)流可以為音頻流、視頻流等等。步驟20,從所述原始流媒體文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;步驟30,將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;步驟40,在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。下面將依據(jù)本發(fā)明上述發(fā)明原理,詳細(xì)介紹幾個實(shí)施例來對本發(fā)明方法的主要實(shí)現(xiàn)原理進(jìn)行詳細(xì)的闡述和說明。實(shí)施例一如附圖3所示,本實(shí)施例提供了一個具體實(shí)例,對附圖2所示的流媒體數(shù)據(jù)的處理原理進(jìn)行詳細(xì)說明。在本實(shí)施例中,為簡明起見,具體實(shí)例僅以原始容器文件中的原始視頻流為例進(jìn)行說明,對其他類型以數(shù)據(jù)幀的方式存儲的媒體流,如音頻流等,可以采用類似原理進(jìn)行處理。步驟301,流媒體服務(wù)器接收輸入的原始容器文件。
本實(shí)施例中原始容器文件可以是用戶上傳的容器文件、或者是具有攝像功能的視頻采集設(shè)備或/和具有錄音功能的音頻采集設(shè)備(如攝像頭、數(shù)碼攝像機(jī)、錄音筆)生成的容器文件、也可以是流媒體處理軟件生成的容器文件。該原始容器文件中包含原始視頻流。步驟302,觸發(fā)對所示原始容器文件中原始視頻流的數(shù)據(jù)格式進(jìn)行探測。碼流分析器是一種現(xiàn)有的視頻分析軟件,用于對輸入的數(shù)據(jù)進(jìn)行格式檢查,輸出每幀流媒體數(shù)據(jù)和每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,如每幀視頻數(shù)據(jù)在原始容器文件中的偏移位置、每幀音頻數(shù)據(jù)在原始容器文件中的偏移位置。碼流分析器由若干碼流分析模塊組成,每個碼流分析模塊可以分析對應(yīng)的一種格式的數(shù)據(jù)??梢砸来握{(diào)用碼流分析器中的各碼流分析模塊,嘗試解析原始容器文件中起始部分的少量數(shù)據(jù),解析結(jié)果中包含數(shù)據(jù)格式。當(dāng)遇到第一個碼流分析器的解析結(jié)果中包含可識別的數(shù)據(jù)格式時,探測就可以結(jié)束。步驟303,根據(jù)探測結(jié)果,判斷是否支持原始視頻流的數(shù)據(jù)格式,若支持,則進(jìn)入步驟304,否則處理結(jié)束。若依次調(diào)用了所有碼流分析模塊后,從解析結(jié)果中均無法給出可識別的數(shù)據(jù)格式時,說明不支持原始視頻流的數(shù)據(jù)格式。若任意一個碼流分析模塊的解析結(jié)果中包含可識別的數(shù)據(jù)格式,則說明支持原始視頻流的數(shù)據(jù)格式。步驟304,支持所述原始視頻流的數(shù)據(jù)格式時,調(diào)用對應(yīng)的碼流分析模塊,對所述原始容器文件進(jìn)行數(shù)據(jù)幀解析,解析出每一幀視頻數(shù)據(jù),并獲得該幀視頻數(shù)據(jù)在所述原始容器文件中的偏移位置。步驟305,將所述每一幀視頻數(shù)據(jù)、以及該幀視頻數(shù)據(jù)在所述原始容器文件中的偏移位置寫入一個新容器文件。在新容器文件中寫入的每幀視頻數(shù)據(jù)、以及該幀視頻數(shù)據(jù)在所述原始容器文件中的偏移位置的目的,是用于后續(xù)在流媒體客戶端請求下載視頻文件時,生成還原的容器文件提供給流媒體客戶端。步驟306,寫入該新容器文件中的文件頭,從而生成新容器文件。具體地,在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始視頻流的元數(shù)據(jù)。新容器文件的元數(shù)據(jù)包括該新容器文件的標(biāo)識,還可以包含生成時間、版本號、大小等其他信息。新容器文件的標(biāo)識是流媒體服務(wù)器按照預(yù)定的命名規(guī)則,為該新容器文件確定出的,在一個流媒體服務(wù)器上的每個新容器文件的標(biāo)識是唯一的,可以用于區(qū)分同一個流媒體服務(wù)器上的其他新容器文件。原始視頻流的元數(shù)據(jù)包括原始視頻流的數(shù)據(jù)格式,可選地還可以包含提供商、視頻開始時間和持續(xù)時間等等其他信息??蛇x地,新容器文件的格式如圖如所示,其中文件頭中還包含媒體流偏移位置, 在本實(shí)施例中為視頻流偏移位置,視頻流偏移位置是指在整個文件中視頻流初始的位置相對于整個文件初始位置的偏移量,視頻流中包含步驟305寫入的每幀視頻數(shù)據(jù)(包含幀頭信息)、每幀在所述原始容器文件中的偏移位置??蛇x地,文件頭中還可以預(yù)留一些地址空間,以便后續(xù)擴(kuò)展使用,預(yù)留地址空間的大小可以根據(jù)經(jīng)驗(yàn)設(shè)定,如12字節(jié)、M字節(jié)等等。通過上述步驟,在由原始容器文件轉(zhuǎn)換為一個統(tǒng)一格式的新容器文件的過程中,沒有對原始視頻流進(jìn)行解碼以及重新編碼,從而提高了轉(zhuǎn)換效率??蛇x地,為了能夠便于用戶通過流媒體客戶端實(shí)現(xiàn)線播放功能時,能夠進(jìn)行播放進(jìn)程的拖拽,而不是只能被動地接收流媒體服務(wù)器順序下發(fā)的各幀的視頻數(shù)據(jù)進(jìn)行順序播放,在執(zhí)行步驟305之后,還包括步驟307,記錄關(guān)鍵幀的視頻數(shù)據(jù)在新容器文件中的偏移位置,獲得關(guān)鍵幀的播放時間戳,該時間戳是指該關(guān)鍵幀在原始容器文件所包含的原始視頻流中的播放時間,所述關(guān)鍵幀在原始視頻流中的播放時間是碼流分析器步驟304中解析獲得的。關(guān)鍵幀又被稱為I幀(intra picture),是指在一組連續(xù)的畫面(GOP,group of picture)中的第一個幀,現(xiàn)有視頻文件的不同數(shù)據(jù)格式對GOP分別給出了定義,在這里不再詳述。關(guān)鍵幀經(jīng)過適度壓縮后,可作為隨機(jī)訪問的參考點(diǎn)。關(guān)鍵幀的視頻數(shù)據(jù)在所述新容器文件中的偏移位置是指,以新容器文件存儲位置的起始點(diǎn)為基準(zhǔn),關(guān)鍵幀的視頻數(shù)據(jù)在寫入時的偏移位置。關(guān)鍵幀在原始視頻流中的播放時間是指,以整個原始視頻流播放的起始點(diǎn)為基準(zhǔn),各幀順序播放的情況下,關(guān)鍵幀播放的時間點(diǎn)。步驟308,根據(jù)所述關(guān)鍵幀的視頻數(shù)據(jù)在所述新容器文件中的偏移位置、關(guān)鍵幀在原始視頻流中的播放時間,生成關(guān)鍵幀的索引列表;索引列表包含關(guān)鍵幀的視頻數(shù)據(jù)在所述新容器文件中的偏移位置和對應(yīng)的該關(guān)鍵幀在原始視頻流中的播放時間。表1為索引列表的一個實(shí)例。表權(quán)利要求
1.一種流媒體數(shù)據(jù)的處理方法,其特征在于,包括接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流; 從所述原始容器文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分后,還包括獲得關(guān)鍵幀的索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始媒體數(shù)據(jù)流中的播放時間;所述關(guān)鍵幀是指一組連續(xù)畫面中的第一個幀,作為隨機(jī)訪問的參考點(diǎn);所述關(guān)鍵幀在原始媒體數(shù)據(jù)流中的播放時間是解析獲得的;將所述索引列表寫入新容器文件中。
3.如權(quán)利要求2所述的方法,其特征在于,所述將所述索引列表寫入新容器文件中,包括將所述索引列表寫入新容器文件載荷部分的空閑可用空間中; 將寫入索引列表的偏移位置存儲在所述新容器文件的文件頭預(yù)留地址空間中的預(yù)定偏移位置的字段中。
4.如權(quán)利要求1至3中任一所述的方法,其特征在于,所述在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)后,還包括根據(jù)所述新容器文件中每幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;通過不可逆加密算法,獲得唯一標(biāo)識所述還原的容器文件內(nèi)容的第一信息摘要值、以及唯一標(biāo)識所述原始容器文件內(nèi)容的第二信息摘要值;比較所述第一信息摘要值和第二信息摘要值是否一致,若不一致,則將所述原始容器文件的內(nèi)容寫入新容器文件、且同時記錄所述原始容器文件寫入新容器文件時的存儲位置。
5.一種流媒體數(shù)據(jù)的播放方法,其特征在于,包括向流媒體服務(wù)器發(fā)送在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識; 接收返回的新容器文件的文件頭和索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;根據(jù)所述索引列表中各關(guān)鍵幀的播放時間,選擇其中一個關(guān)鍵幀的播放時間; 從所述索引列表中,查找到選擇出的關(guān)鍵幀的播放時間對應(yīng)的關(guān)鍵幀在所述新容器文件中的偏移位置;向所述流媒體服務(wù)器發(fā)送數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求攜帶查找到的偏移位置,用于獲取以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù);根據(jù)所述文件頭中的數(shù)據(jù)格式,播放流媒體服務(wù)器返回的流媒體數(shù)據(jù)。
6.一種流媒體數(shù)據(jù)的播放方法,其特征在于,包括接收流媒體客戶端發(fā)送的在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;發(fā)送所述新容器文件的標(biāo)識對應(yīng)的新容器文件的文件頭和索引列表,所述索引列表包含關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置和關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;接收數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求中攜帶有偏移位置,該偏移位置是所述流媒體客戶端根據(jù)所述索引列表確定出的一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置;根據(jù)所述獲取請求中的偏移位置,向流媒體客戶端返回新容器文件中以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù)。
7.一種流媒體數(shù)據(jù)的下載方法,其特征在于,包括流媒體服務(wù)器接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;流媒體服務(wù)器根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;流媒體服務(wù)器將所述還原的容器文件發(fā)送給所述流媒體客戶端。
8.一種流媒體數(shù)據(jù)的下載方法,其特征在于,包括流媒體服務(wù)器接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;判斷所述新容器文件標(biāo)識對應(yīng)的新容器文件中是否包含原始容器文件; 若是,從所述新容器文件中讀取原始容器文件,并將所述原始容器文件發(fā)送給流媒體客戶端;否則,流媒體服務(wù)器根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;將所述還原的容器文件發(fā)送給所述流媒體客戶端。
9.一種流媒體數(shù)據(jù)的處理裝置,其特征在于,包括第一接收單元,用于接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流;解析單元,用于從所述原始容器文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;第一寫入單元,用于將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;第二寫入單元,用于在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。
10.如權(quán)利要求9所述的裝置,其特征在于,還包括獲取單元,用于獲得關(guān)鍵幀的索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始媒體數(shù)據(jù)流中的播放時間;所述關(guān)鍵幀是指一組連續(xù)畫面中的第一個幀,作為隨機(jī)訪問的參考點(diǎn);所述關(guān)鍵幀在原始媒體數(shù)據(jù)流中的播放時間是解析獲得的;第三寫入單元,用于將獲取單元獲取的索引列表寫入新容器文件中。
11.如權(quán)利要求9或10所述的裝置,其特征在于,還包括第一還原單元,用于在第二寫入單元寫入后,根據(jù)所述新容器文件中每幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;摘要值生成單元,用于通過不可逆加密算法,獲得唯一標(biāo)識第一還原單元生成的所述還原的容器文件內(nèi)容的第一信息摘要值、以及唯一標(biāo)識所述原始容器文件內(nèi)容的第二信息摘要值;比較單元,用于比較所述第一信息摘要值和第二信息摘要值是否一致; 第四寫入單元,用于在比較單元的比較結(jié)果不一致時,將所述原始流媒體文件的內(nèi)容寫入新容器文件、且同時記錄所述原始容器文件寫入新容器文件時的存儲位置。
12.—種流媒體客戶端,其特征在于,包括第一發(fā)送單元,用于向流媒體服務(wù)器發(fā)送在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;第二接收單元,用于接收返回的新容器文件的文件頭和索引列表,所述索引列表包含至少一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置、各關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;選擇單元,用于根據(jù)第二接收單元接收的所述索引列表中各關(guān)鍵幀的播放時間,選擇其中一個關(guān)鍵幀的播放時間;查找單元,用于從所述索引列表中,查找到選擇單元選擇出的關(guān)鍵幀的播放時間對應(yīng)的關(guān)鍵幀在所述新容器文件中的偏移位置第二發(fā)送單元,用于向所述流媒體服務(wù)器發(fā)送數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求攜帶查找到的偏移位置,用于獲取以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù);播放單元,用于根據(jù)第二接收單元接收到的所述文件頭中的數(shù)據(jù)格式,播放流媒體服務(wù)器返回的流媒體數(shù)據(jù)。
13.一種流媒體服務(wù)器,其特征在于,包括第三接收單元,用于接收流媒體客戶端發(fā)送的在線播放請求,所述在線播放請求中攜帶新容器文件的標(biāo)識;第三發(fā)送單元,用于發(fā)送所述新容器文件的標(biāo)識對應(yīng)的新容器文件的文件頭和索引列表,所述索引列表包含關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置和關(guān)鍵幀在原始容器文件所包含的原始媒體數(shù)據(jù)流中的播放時間;第四接收單元,用于接收數(shù)據(jù)獲取請求,所述數(shù)據(jù)獲取請求中攜帶有偏移位置,該偏移位置是所述流媒體客戶端根據(jù)所述索引列表確定出的一個關(guān)鍵幀的流媒體數(shù)據(jù)在所述新容器文件中的偏移位置;第四發(fā)送單元,用于根據(jù)所述獲取請求中的偏移位置,向流媒體客戶端返回以該偏移位置為起始點(diǎn),至少1幀的流媒體數(shù)據(jù)。
14.一種流媒體服務(wù)器,其特征在于,包括第五接收單元,用于接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;第二還原單元,用于根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;第五發(fā)送單元,用于將所述第二還原單元還原的容器文件發(fā)送給所述流媒體客戶端。
15.一種流媒體服務(wù)器,其特征在于,包括第五接收單元,用于接收流媒體客戶端發(fā)送的下載請求,所述下載請求中攜帶新容器文件的標(biāo)識;判斷單元,用于判斷第五接收單元接收到得所述新容器文件標(biāo)識對應(yīng)的新容器文件中是否包含原始容器文件;讀取單元,用于判斷單元判斷出包含原始容器文件時,從所述新容器文件中讀取原始容器文件,觸發(fā)第五發(fā)送單元將讀取的原始容器文件發(fā)送給流媒體客戶端;第二還原單元,用于判斷單元判斷出未包含原始容器文件時,根據(jù)所述新容器文件的標(biāo)識對應(yīng)的新容器文件中,每幀流媒體數(shù)據(jù)在原始容器文件中的偏移位置,將該幀流媒體數(shù)據(jù)寫入一個文件中,從而生成還原的容器文件;觸發(fā)第五發(fā)送單元將還原的容器文件發(fā)送給所述流媒體客戶端。
全文摘要
本發(fā)明公開了一種流媒體數(shù)據(jù)的處理方法、播放方法以及裝置,用以解決現(xiàn)有技術(shù)將輸入的原始容器文件轉(zhuǎn)換為統(tǒng)一格式的新容器文件的過程中,處理過程復(fù)雜,占用處理資源較多的問題。該方法包括接收輸入的原始容器文件,所述原始容器文件中包含原始媒體數(shù)據(jù)流;從所述原始容器文件中解析出每一幀流媒體數(shù)據(jù),并獲得該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置;將所述每一幀流媒體數(shù)據(jù)、以及該幀流媒體數(shù)據(jù)在所述原始容器文件中的偏移位置寫入新容器文件的載荷部分;在新容器文件的文件頭中寫入該新容器文件的元數(shù)據(jù),以及所述原始容器文件中原始媒體數(shù)據(jù)流的元數(shù)據(jù)。簡化了轉(zhuǎn)換過程中處理的復(fù)雜性,提高了轉(zhuǎn)換效率。
文檔編號H04N21/44GK102510519SQ201110306400
公開日2012年6月20日 申請日期2011年10月11日 優(yōu)先權(quán)日2011年10月11日
發(fā)明者周劍輝, 杜春華 申請人:成都市華為賽門鐵克科技有限公司