專利名稱:流媒體文件存儲和播放的方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體領(lǐng)域,尤其涉及一種流媒體文件存儲和播放的方法、裝置及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)基礎(chǔ)設(shè)施的改善,顯示技術(shù)的發(fā)展。高清電視、高清電影、3D電影等高質(zhì)量的節(jié)目已經(jīng)有條件進(jìn)入普通家庭。在網(wǎng)絡(luò)視頻,交互式網(wǎng)絡(luò)電視(Internet Protocol Television, IPTV)應(yīng)用中,這種高質(zhì)量的節(jié)目的視頻點(diǎn)播(Video on demand, V0D)業(yè)務(wù)將占有很大的比重?,F(xiàn)有技術(shù)多以MP4、3GP等文件格式為基礎(chǔ),以分片方式進(jìn)行存儲,并基于MP4,3GP 等文件在私有段構(gòu)建關(guān)鍵幀索引。此方法解決了一些存儲、冗余等問題,但增加了流媒體實現(xiàn)的復(fù)雜度。流媒體服務(wù)器需要解析MP4,3GP等文件格式,從中讀取媒體信息,幀索引。解析過程復(fù)雜,且會導(dǎo)致過多的小數(shù)據(jù)的讀取,影響讀寫性能,從而影響了流媒體服務(wù)器推流的質(zhì)量。在實現(xiàn)本發(fā)明實施例的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題現(xiàn)有方法存儲的媒體文件,影響媒體文件的讀取效率。
發(fā)明內(nèi)容
本發(fā)明的實施例提供一種流媒體文件存儲和播放的方法、裝置及系統(tǒng),能夠提高媒體文件讀取效率。為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案一種流媒體文件存儲方法,包括將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼I D,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有子媒體文件的關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件。一種流媒體文件存儲裝置,包括劃分單元,用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲單元,用于存儲所述媒體文件的全部子媒體文件。一種流媒體文件播放方法,包括
接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn)。
根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。一種流媒體服務(wù)器,包括接收單元,用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找單元,用于查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;比對單元,用于將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;確定起播點(diǎn)單元,用于從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn);發(fā)送單元,用于根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。一種流媒體文件存儲和播放系統(tǒng),包括流媒體文件存儲裝置、流媒體服務(wù)器,其中所述流媒體文件存儲裝置,用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件;所述流媒體服務(wù)器,用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn);根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。
本發(fā)明實施例提供的流媒體文件存儲和播放的方法、裝置及系統(tǒng),存儲媒體文件時,將媒體文件劃分為至少一個子媒體文件,每個子媒體文件由含有自身信息段、媒體信息段和幀信息段的頭數(shù)據(jù)段及TS數(shù)據(jù)段組成,這種存儲方法存儲的媒體文件格式以TS流數(shù)據(jù)為負(fù)載,組織媒體文件的類型,碼率,幀率,視頻幀的位置、時間參數(shù)等信息;使得播放媒體文件時,根據(jù)文件ID及時間參數(shù)確定目的子媒體文件,根據(jù)關(guān)鍵幀確定起播點(diǎn),從TS數(shù)據(jù)段讀取幀數(shù)據(jù)?;谏鲜雒襟w文件存儲方法存儲的媒體文件格式,播放時,可以實現(xiàn)更簡單、方便、靈活的流媒體播控操作。
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例1提供的流媒體文件存儲方法的流程圖;圖2為本發(fā)明實施例1提供的流媒體文件存儲裝置的結(jié)構(gòu)圖;圖3為本發(fā)明實施例1提供的流媒體文件播放方法的流程圖;圖4為本發(fā)明實施例1提供的流媒體服務(wù)器的結(jié)構(gòu)圖;圖5為本發(fā)明實施例1提供的流媒體文件存儲和播放系統(tǒng);圖6為本發(fā)明實施例2中子媒體文件的組成示意圖;圖7為本發(fā)明實施例2中子媒體文件頭數(shù)據(jù)段中自身信息段的組成示意圖;圖8為本發(fā)明實施例2中子媒體文件頭數(shù)據(jù)段中媒體信息段的組成示意圖;圖9為本發(fā)明實施例2中子媒體文件頭數(shù)據(jù)段中幀信息段的組成示意圖;圖10為本發(fā)明實施例3提供的流媒體文件播放方法的流程圖;圖11為本發(fā)明實施例3提供的流媒體服務(wù)器的結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實施例提供了一種媒體文件的存儲格式,這種格式以TS流數(shù)據(jù)為負(fù)載,用適當(dāng)?shù)姆绞浇M織媒體文件的流類型,碼率,幀率,視頻幀的位置、時間等信息。使得流媒體服務(wù)器可以快捷的讀取媒體文件基本信息,可以按時間點(diǎn)對視頻關(guān)鍵幀進(jìn)行隨機(jī)讀取。基于此格式,流媒體服務(wù)器可以實現(xiàn)更簡單、方便、靈活的流媒體播控操作。以上述存儲格式為基礎(chǔ),提出了一種基于幀率的播放方法,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。傳輸流(Transport Stream, TS)是一種非常適合流媒體的一種格式,基本特點(diǎn)是媒體數(shù)據(jù)按時間順序存儲,從節(jié)目任何時間點(diǎn)都可以接入播放。它有完善的時鐘同步,信息存儲機(jī)制。已經(jīng)廣泛的用于DVB (數(shù)字視頻廣播)直播系統(tǒng)。基于TS流建立的這種存儲格式,不但繼承了 TS的這些優(yōu)點(diǎn),而且使流媒體服務(wù)器更方便高效的實現(xiàn)快進(jìn)快退,任意時間點(diǎn)處播放,分段拼接等操作。實施例1 本實施例提供一種流媒體文件存儲方法,如圖1所示,包括101、將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS 數(shù)據(jù)段。具體地,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有子媒體文件的關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù)。102、存儲所述媒體文件的全部子媒體文件。本實施例的執(zhí)行主體可以為一種流媒體文件存儲裝置,如存儲服務(wù)器等。采用上述方法存儲的媒體文件,格式結(jié)構(gòu)簡潔、節(jié)省存儲空間,在播放時擺脫了復(fù)雜的文件格式解析,且這種格式適合整塊的讀取,從而提高了媒體文件的讀寫效率。與上述流媒體文件存儲方法對應(yīng),本實施又提供一種流媒體文件存儲裝置,如圖2 所示,包括劃分單元201、存儲單元202。劃分單元201、用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段。具體地,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù)。存儲單元202、用于存儲所述媒體文件的全部子媒體文件。本實施例提供的流媒體文件存儲裝置可以是存儲服務(wù)器等。本發(fā)明實施例提供的媒體文件存儲裝置,存儲的媒體文件格式結(jié)構(gòu)簡潔、占用空間小,使得在播放本裝置存儲的媒體文件時,擺脫了復(fù)雜的文件格式解析,且這種結(jié)構(gòu)適合整塊的讀取,從而提高了媒體文件的讀寫效率。此外,本實施例還提供一種流媒體文件播放方法,如圖3所示,包括301、接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID。302、查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件。303、將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件。304、從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn)。305、根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。本實施例的執(zhí)行主體可以是一種流媒體服務(wù)器。采用上述流媒體文件播放方法,需要的媒體基本信息可以很方便的獲得,幀信息索引表為簡單高效的實現(xiàn)快進(jìn)快退、定點(diǎn)播放操作提供了良好的支持,從而提高播放性能和效率。此外,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。與上述流媒體文件播放方法對應(yīng),本實施例還提供一種流媒體服務(wù)器,如圖4所示,包括接收單元401、查找單元402、比對單元403、確定起播點(diǎn)單元404、發(fā)送單元405。接收單元401、用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID。查找單元402、用于查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件。比對單元403、用于將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件。確定起播點(diǎn)單元404、用于從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS 數(shù)據(jù)段的存儲位置為起播點(diǎn)。發(fā)送單元405、用于根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。采用上述流媒體服務(wù)器,便于從存儲的媒體文件獲取播放必備參數(shù),實現(xiàn)高效率播放,此外,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。最后,本實施例還提供了一種流媒體文件存儲和播放系統(tǒng),如圖5所示,所述系統(tǒng)包括流媒體文件存儲裝置501、流媒體服務(wù)器502,其中所述流媒體文件存儲裝置501、用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件。所述流媒體服務(wù)器502、用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn);根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。采用本實施例提供的流媒體文件存儲和播放系統(tǒng),在存儲媒體文件時,將媒體文件劃分為至少一個子媒體文件,每個子媒體文件由含有自身信息段、媒體信息段和幀信息段的頭數(shù)據(jù)段及TS數(shù)據(jù)段組成;在播放流媒體文件時,根據(jù)文件ID及時間參數(shù)確定目的子媒體文件,根據(jù)關(guān)鍵幀確定起播點(diǎn),從TS數(shù)據(jù)段讀取幀數(shù)據(jù)。與現(xiàn)有方法存儲的媒體文件, 存在影響媒體文件讀取效率的問題相比,本發(fā)明實施例提供的流媒體文件存儲和播放的方法裝置及系統(tǒng)能夠提高媒體文件讀取效率。本發(fā)明實施例提供的流媒體文件存儲和播放的方法、裝置及系統(tǒng),存儲媒體文件時,將媒體文件劃分為至少一個子媒體文件,每個子媒體文件由含有自身信息段、媒體信息段和幀信息段的頭數(shù)據(jù)段及TS數(shù)據(jù)段組成,這種存儲方法存儲的媒體文件格式以TS流數(shù)據(jù)為負(fù)載,組織媒體文件的類型,碼率,幀率,視頻幀的位置、時間等信息;使得播放媒體文件時,根據(jù)文件ID及時間參數(shù)確定目的子媒體文件,根據(jù)關(guān)鍵幀確定起播點(diǎn),從TS數(shù)據(jù)段讀取幀數(shù)據(jù)?;谏鲜雒襟w文件存儲方法存儲的媒體文件格式,播放時,可以實現(xiàn)更簡單、 方便、靈活的流媒體播控操作,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。實施例2 本發(fā)明實施例提供一種流媒體文件存儲方法,如圖1所示,包括101、將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS 數(shù)據(jù)段。在劃分媒體文件時,當(dāng)幀數(shù)大于子媒體文件的幀索引表或關(guān)鍵幀的幀數(shù)大于子媒體文件的關(guān)鍵幀索引表的長度,必須對媒體文件進(jìn)行劃分。在設(shè)置關(guān)鍵幀索引表和幀索引表的長度時,可以調(diào)整關(guān)鍵幀索引表和幀索引表的比例以達(dá)到最有效的空間利用率,當(dāng)設(shè)置完畢后,關(guān)鍵幀索引表和幀索引表的長度便確定下來,具體劃分實例請參見下述圖9部分描述。當(dāng)然,當(dāng)幀數(shù)小于子媒體文件的幀索引表且關(guān)鍵幀的幀數(shù)小于子媒體文件的關(guān)鍵幀索引表的長度時,可以不對媒體文件劃分,也可以按照時間點(diǎn)或數(shù)據(jù)量的大小對媒體文件劃分。例如,一個媒體文件全部時長為2小時,可以每半個小時劃分一個子媒體文件,即劃分成4個子媒體文件;按數(shù)據(jù)量大小劃分媒體文件與按時間點(diǎn)劃分媒體文件的方法類似。本實施例,關(guān)鍵幀索引表和幀索引表的長度設(shè)定后,幀索引表的長度和關(guān)鍵幀索引表的長度也是固定的;子媒體文件的頭數(shù)據(jù)段部分的長度是固定的,便于播放媒體文件時將頭數(shù)據(jù)段部分加載到內(nèi)存進(jìn)行隨機(jī)讀寫。應(yīng)用本實施例時,可以根據(jù)具體情況設(shè)置頭數(shù)據(jù)段的大小,在設(shè)置頭數(shù)據(jù)段的大小時,主要考慮頭數(shù)據(jù)段需存儲的索引表的長度。例如,當(dāng)設(shè)置頭數(shù)據(jù)段的大小為1MB時, 按照25幀/秒的幀率,大約可以存儲一小時的節(jié)目。當(dāng)然,如果媒體文件為高清節(jié)目,一個子媒體文件可以達(dá)到3G,通常情況,在實際應(yīng)用中子媒體文件的大小要遠(yuǎn)小于這個值。進(jìn)一步,本實施例提供的存儲格式以分塊或分片為單位存儲媒體文件,一個媒體文件可以存儲于一個或多個子媒體文件中,各個子媒體文件間通過媒體文件身份標(biāo)識號碼 ID (File ID)和子媒體文件編號進(jìn)行關(guān)聯(lián),上層應(yīng)用可以通過File ID和子媒體文件編號建立文件索引。如圖6所示,其為本實施例子媒體文件的組成示意圖,子媒體文件由兩部分組成一個固定長度的頭數(shù)據(jù)段(Header)和TS數(shù)據(jù)段,頭數(shù)據(jù)段(Header)由自身信息段、媒體信息段、幀信息段組成,TS數(shù)據(jù)段存儲與頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù)。具體地,自身信息段,用于存儲子媒體文件本身的描述信息。媒體信息段,用于存儲子媒體文件的時間參數(shù)(包括起始時間和時長)、幀率、視頻類型、音頻類型、碼率、數(shù)字版權(quán)管理(digital right management, DRM)標(biāo)記。如圖7所示,自身信息段包含子媒體文件本身的描述信息,包括,媒體文件身份標(biāo)識號碼(File ID)、子媒體文件編號、子媒體文件大小(size)。同一個媒體文件所有子媒體文件的媒體文件身份標(biāo)識號碼(File ID)相同且在一個系統(tǒng)中唯一;子媒體文件編號從0 開始,依次遞增。系統(tǒng)可以根據(jù)這兩個值建立一個文件路徑的索引,方便快速查找。具體地,媒體文件身份標(biāo)識號碼,用于不同媒體文件的識別,同一媒體文件的子媒體文件身份標(biāo)識號碼相同;子媒體文件編號,用于同一媒體文件的多個子媒體文件排序; 子媒體文件大小,用于標(biāo)示子媒體文件的大小。接下來,所述頭數(shù)據(jù)段還包括媒體信息段,媒體信息段內(nèi)容及存儲結(jié)構(gòu)如圖8所示,它存儲了子媒體文件的時間參數(shù)(包括起始時間和時長)、幀率、視頻類型、音頻類型、 碼率、DRM標(biāo)記。具體地,子媒體文件的時間參數(shù)包括子媒體文件起始時間和時長;子媒體文件的幀率用于在數(shù)據(jù)傳輸過程中測量單位時間傳送的幀的個數(shù);子媒體文件的視頻類型標(biāo)識了子媒體文件的視頻類型;子媒體文件的音頻類型標(biāo)識了子媒體文件的音頻類型;子媒體文件的碼率標(biāo)識了子媒體文件的碼率,碼率是數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),一般我們用的單位是千位每秒;子媒體文件的DRM標(biāo)記用于標(biāo)識節(jié)目的內(nèi)容是否經(jīng)過數(shù)字版權(quán)管理相關(guān)技術(shù)處理。媒體信息段存儲的信息可以供流媒體服務(wù)器使用,如流媒體服務(wù)器可以根據(jù)碼率進(jìn)行流控和推流;時間參數(shù)包括起始時間和時長,在客戶端請求從某個時間點(diǎn)進(jìn)行播放時, 流媒體服務(wù)器可以根據(jù)這個時間值判斷節(jié)目起始點(diǎn)是否在本子媒體文件,如果在本子媒體文件,則根據(jù)更精確的時間標(biāo)記確定起播點(diǎn)位置,如果不在本子媒體文件,則檢查下個子媒體文件;音視頻類型信息可以通過Announce (播報)消息通知客戶端,然后客戶端提前初始化對應(yīng)解碼器,減少顯示延遲。幀信息段內(nèi)容及存儲結(jié)構(gòu)如圖9所示,它包括幀索引表和關(guān)鍵幀索引表。幀索引表記錄幀的類型、偏移位置(pos)、保留空間(reserved),關(guān)鍵幀索引表記錄關(guān)鍵幀在幀索引表里面的序號和時間戳,時間戳的值從0開始,根據(jù)幀的PTS (!Presentation Time Stamp, 顯示時間戳)的差值進(jìn)行累加,關(guān)鍵幀的位置信息可以通過序號計算出偏移量,然后直接從幀索引節(jié)點(diǎn)讀??;圖9中的保留空間,不存儲數(shù)據(jù),用于存儲空間的字節(jié)對齊。具體地,圖9中,幀數(shù)為幀索引表中實際存儲的幀的個數(shù)。關(guān)鍵幀幀數(shù)為關(guān)鍵幀索引表中實際存儲的關(guān)鍵幀的個數(shù)。M為幀索引表的長度,M*8為幀索引表占用的存儲空間的大小。N為關(guān)鍵幀索引表的長度,N*8為關(guān)鍵幀索引表占用的存儲空間的大小。對應(yīng)于上述媒體文件劃分部分,假設(shè)幀索引表的長度M為1000幀,關(guān)鍵幀索引表的長度N為50幀,在劃分媒體文件時,如果媒體文件小于等于1000幀,且關(guān)鍵幀幀數(shù)(本實例中若每25幀取一個關(guān)鍵幀,則1000幀的媒體文件共有40個關(guān)鍵幀)小于等于50幀,則不需要對小于等于1000幀的媒體文件進(jìn)行劃分(此時,可以根據(jù)時間點(diǎn)或數(shù)據(jù)量的大小對媒體文件劃分);如果媒體文件大于1000幀或關(guān)鍵幀幀數(shù)大于50幀,則必須對媒體文件進(jìn)行劃分。102、存儲所述媒體文件的全部子媒體文件。采用上述方法存儲的媒體文件,將媒體文件劃分為至少一個子媒體文件,每個子媒體文件由含有自身信息段、媒體信息段和幀信息段的頭數(shù)據(jù)段及TS數(shù)據(jù)段組成,存儲的媒體文件格式結(jié)構(gòu)簡潔、節(jié)省存儲空間,這種存儲格式針對流媒體服務(wù)器的播放控制特點(diǎn)設(shè)計,播放時需要的媒體基本信息可以很方便的獲得,使得在播放以上述格式存儲的媒體文件時,擺脫了復(fù)雜的文件格式解析,這種結(jié)構(gòu)適合整塊的讀取,從而提高了媒體文件的讀寫效率。與上述方法對應(yīng),本實施例一種流媒體文件存儲裝置,請參閱圖2,所述流媒體文件存儲裝置包括劃分單元201、存儲單元202。劃分單元201、用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段。具體地,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率、所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù)。進(jìn)一步,劃分單元201還用于當(dāng)所述媒體文件的幀數(shù)大于所述幀索引表長度或所述媒體文件的關(guān)鍵幀幀數(shù)大于所述關(guān)鍵幀索引表長度時,對所述媒體文件劃分;當(dāng)所述媒體文件的幀數(shù)小于所述幀索引表長度、所述媒體文件的關(guān)鍵幀幀數(shù)小于所述關(guān)鍵幀索引表長度時,按照時間點(diǎn)或數(shù)據(jù)量大小對所述媒體文件劃分。存儲單元202、用于存儲所述媒體文件的全部子媒體文件。需要說明的是,本實施例提供的流媒體文件存儲裝置是流媒體文件存儲方法的具體應(yīng)用,詳述內(nèi)容請參閱本實施例上述流媒體文件存儲方法。采用本實施例提供的流媒體文件存儲裝置存儲的媒體文件,將媒體文件劃分為至少一個子媒體文件,每個子媒體文件由含有自身信息段、媒體信息段和幀信息段的頭數(shù)據(jù)段及TS數(shù)據(jù)段組成,本裝置存儲的媒體文件格式結(jié)構(gòu)簡潔、節(jié)省存儲空間,本裝置存儲的媒體文件格式針對流媒體服務(wù)器的播放控制特點(diǎn)設(shè)計,播放時需要的媒體基本信息可以很方便的獲得,從而提高了媒體文件的讀寫效率。實施例3:本實施例提供一種流媒體文件播放方法,請參閱圖10,包括11、接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID。12、查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件。13、查找到所述文件ID對應(yīng)的媒體文件后,向所述客戶端發(fā)送回復(fù)消息,所述回復(fù)消息攜帶所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記。
14、接收客戶端發(fā)送的播放指示,所述播放指示中攜帶起始時間點(diǎn)。15、將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件。16、從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn)。具體地,本實施例根據(jù)起始時間點(diǎn)定位起播點(diǎn)的位置,具體為客戶端上報節(jié)目的起播時間點(diǎn),依次讀取對應(yīng)媒體文件(如電影節(jié)目)的子媒體文件的頭數(shù)據(jù)段,根據(jù)頭數(shù)據(jù)段中媒體信息段存儲的子媒體文件時間參數(shù)中的起始時間和時長判斷起播點(diǎn)是否落在此子媒體文件,如果不是,則讀取下一個;如果是,則根據(jù)關(guān)鍵幀索引段的時間戳,找到距此時間點(diǎn)最近的關(guān)鍵幀,然后根據(jù)序號從幀索引表里面讀取幀數(shù)據(jù)的位置信息,確定起播點(diǎn)的位置,最后從確定的起播點(diǎn)開始讀取、推送幀數(shù)據(jù)。17、根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。具體地,收到客戶端播放請求后,根據(jù)所述媒體文件的幀率確定每秒應(yīng)發(fā)送的幀個數(shù),從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端;收到客戶端發(fā)送快進(jìn)/快退請求后,根據(jù)所述客戶端所選快進(jìn)/快退倍率及所述媒體文件的幀率確定每次跨越的幀個數(shù),從所述起播點(diǎn)開始抽取幀數(shù)據(jù)發(fā)送到所述客戶端。本實施例,采用基于幀率的播控方法,幀率是媒體文件(如視頻)的一個重要參數(shù),一個媒體文件(如電影節(jié)目)的幀率通常是固定的,且有標(biāo)準(zhǔn)對其進(jìn)行規(guī)定。例如,電影一般是每秒M幀,PAL制式每秒25幀,NTSC制式每秒30幀?;趲蔬M(jìn)行流數(shù)據(jù)的推送,可以根據(jù)幀率實現(xiàn)簡單穩(wěn)定的算法。同時這也更符合客戶端的播放邏輯,客戶端都是以顯示單元為單位進(jìn)行解碼播放的,并且對片源沒有了 CBR(恒定編碼率)編碼的限制,可以針對節(jié)目內(nèi)容特點(diǎn),進(jìn)行CBR或VBR (變化編碼率)編碼。18、若所述目的子媒體文件有至少一個接續(xù)的子媒體文件,根據(jù)客戶端操作,依次在所述至少一個接續(xù)的子媒體文件中讀取幀數(shù)據(jù)向所述客戶端發(fā)送。具體地,子媒體文件間的接續(xù)順序可以子媒體文件編號確定。接下來,本實施例基于幀率的播放流程如下基于幀率的正常播放流程如下所述A.接收客戶端發(fā)送的建立連接請求,請求消息攜帶客戶端欲建立連接的文件ID, 檢查文件ID對應(yīng)的媒體文件是否正常,如果文件正常,返回正確消息,并在消息中攜帶媒體信息(視頻類型,音頻類型,幀率,DRM標(biāo)記,碼率),媒體信息中的數(shù)據(jù)按照SDP (會話描述協(xié)議)組織;如果文件不存在或異常則回復(fù)錯誤消息并結(jié)束連接。B.接收客戶端發(fā)送的播放指示,在播放指示里攜帶起始時間點(diǎn),根據(jù)起始時間點(diǎn)確定起播點(diǎn)位置。如果起始時間點(diǎn)是零,則直接從頭開始播放;如果時間點(diǎn)大于零,則按子媒體文件編號(chunk idx)遍歷子媒體文件,檢查子媒體文件時間參數(shù)中的開始時間 (start time)和時長(duration),確定從哪個子媒體文件開始播放。確定子媒體文件后,遍歷關(guān)鍵幀索引表,比較起始時間點(diǎn)與關(guān)鍵幀的時間信息,選擇時間點(diǎn)最接近的關(guān)鍵幀,然后從幀索引表里查詢此關(guān)鍵幀的位置,獲得的這個位置就是起播點(diǎn),確定起播位置后返回正確消息給客戶端,否則返回錯誤并結(jié)束播放。C.從B步驟獲得的起播點(diǎn)起,根據(jù)媒體信息段的幀率參數(shù),計算出單位時間內(nèi)需要發(fā)送的幀的個數(shù)。然后從幀索引表讀取幀的位置信息,根據(jù)位置信息讀取對應(yīng)的數(shù)據(jù)發(fā)送到客戶端。當(dāng)前子媒體文件的數(shù)據(jù)播放完后,根據(jù)子媒體文件編號(chunk idx)找到相鄰下一個子媒體文件繼續(xù)播放。D.客戶端發(fā)送停止請求或播放到文件結(jié)尾后,流服務(wù)器停止發(fā)送數(shù)據(jù)?;趲实目爝M(jìn)\快退播放流程如下A.客戶端與流服務(wù)器正常建立連接并播放媒體文件。B.接收客戶端的快進(jìn)\快退請求,在請求中攜帶快進(jìn)\快退倍速,回復(fù)確認(rèn)消息。C.根據(jù)幀率和快進(jìn)\快退倍速,計算需要跨越的幀的個數(shù),確定需要播放的關(guān)鍵幀,并根據(jù)關(guān)鍵幀索引表和幀索引表的信息計算對應(yīng)關(guān)鍵幀的位置,然后以一定的時間間隔讀取關(guān)鍵幀的數(shù)據(jù)發(fā)送到客戶端。D.重復(fù)C步驟,直到播放到結(jié)尾或客戶端請求切換到正常播放。此外,本實施例還支持正常播放與快進(jìn)\快退間的轉(zhuǎn)換,例如,當(dāng)正常播放時,收到客戶端的快進(jìn)\快退請求,則在收到客戶端的快進(jìn)\快退請求時間點(diǎn)起進(jìn)行快進(jìn)\快退播放;或當(dāng)快進(jìn)\快退播放時,收到客戶端的正常播放請求,則在收到客戶端的正常播放請求時間點(diǎn)起進(jìn)行正常播放。本實施例的執(zhí)行主體可以為流媒體服務(wù)器等。本實施例提供的流媒體文件播放方法更符合媒體播放邏輯,結(jié)合本發(fā)明提供的流媒體文件存儲格式,本播放方法可以高效的進(jìn)行各種播控操作。而且,采用本實施例提供的流媒體文件播放方法,在播放媒體文件時,根據(jù)文件ID及時間參數(shù)確定目的子媒體文件, 根據(jù)關(guān)鍵幀確定起播點(diǎn),從TS數(shù)據(jù)段讀取幀數(shù)據(jù),本播放方法基于上述媒體文件存儲方法存儲的媒體文件格式,播放時可以實現(xiàn)更簡單、方便、靈活的流媒體播控操作,此外,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。與流媒體文件播放方法對應(yīng),本實施例還提供一種流媒體服務(wù)器,如圖11所示, 所述流媒體服務(wù)器包括接收單元111、查找單元112、發(fā)送回復(fù)消息單元113、播放指示接收單元114、比對單元115、確定起播點(diǎn)單元116、發(fā)送單元117、接續(xù)單元118。接收單元111、用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找單元112、用于查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;發(fā)送回復(fù)消息單元113、用于查找到所述文件ID對應(yīng)的媒體文件后,向所述客戶端發(fā)送回復(fù)消息,所述回復(fù)消息攜帶所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記。播放指示接收單元114、用于接收客戶端發(fā)送的播放指示,所述播放指示中攜帶起始時間點(diǎn)。比對單元115、用于將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;確定起播點(diǎn)單元116、用于從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS 數(shù)據(jù)段的存儲位置為起播點(diǎn);發(fā)送單元117、用于根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。具體地,所述發(fā)送單元還用于收到客戶端播放請求后,根據(jù)所述媒體文件的幀率確定每秒應(yīng)發(fā)送的幀個數(shù),從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端;收到客戶端發(fā)送快進(jìn)/快退請求后,根據(jù)所述客戶端所選快進(jìn)/快退倍率及所述媒體文件的幀率確定每次跨越的幀個數(shù),從所述起播點(diǎn)開始抽取幀數(shù)據(jù)發(fā)送到所述客戶端。接續(xù)單元118、用于若所述目的子媒體文件有至少一個接續(xù)的子媒體文件,根據(jù)客戶端操作,依次在所述至少一個接續(xù)的子媒體文件中讀取幀數(shù)據(jù)向所述客戶端發(fā)送。需要說明的是,本實施例的流媒體服務(wù)器是流媒體文件播放方法的應(yīng)用,未盡部分請參閱本實施例流媒體文件播放方法部分。結(jié)合本發(fā)明提供的流媒體文件存儲格式,本實施例提供的流媒體服務(wù)器更符合媒體播放邏輯,可以高效的進(jìn)行各種播控操作。而且,采用本實施例提供的流媒體服務(wù)器,在播放媒體文件時,根據(jù)文件ID及時間參數(shù)確定目的子媒體文件,根據(jù)關(guān)鍵幀確定起播點(diǎn), 從TS數(shù)據(jù)段讀取幀數(shù)據(jù),本流媒體服務(wù)器基于上述媒體文件存儲方法存儲的媒體文件格式,播放時可以實現(xiàn)更簡單、方便、靈活的流媒體播控操作,此外,上述流媒體文件播放方法支持CBR編碼和VBR編碼,并且可以更精確的控制流數(shù)據(jù)的推送,從而提高服務(wù)質(zhì)量。本發(fā)明實施例可以應(yīng)用于媒體文件存儲及播放時,還可以用于支持流媒體文件存儲和播放的系統(tǒng),能夠提高媒體文件的讀取速度。本發(fā)明實施例的裝置、單元、模塊都可以是硬件,比如處理器、特定用途電路等。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述,僅為本發(fā)明的具體實施方式
,但本發(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)利要求
1.一種流媒體文件存儲方法,其特征在于,包括將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和傳輸流TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID ;所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率, 所述幀信息段存有子媒體文件的關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件。
2.根據(jù)權(quán)利要求1所述的流媒體文件存儲方法,其特征在于,所述將媒體文件分成至少一份子媒體文件包括當(dāng)所述媒體文件的幀數(shù)大于所述幀索引表長度或所述媒體文件的關(guān)鍵幀幀數(shù)大于所述關(guān)鍵幀索引表長度時,對所述媒體文件劃分;當(dāng)所述媒體文件的幀數(shù)小于所述幀索引表長度、所述媒體文件的關(guān)鍵幀幀數(shù)小于所述關(guān)鍵幀索引表長度時,按照時間點(diǎn)或數(shù)據(jù)量大小對所述媒體文件劃分。
3.根據(jù)權(quán)利要求1所述的流媒體文件存儲方法,其特征在于,所述媒體信息段還存有 所述媒體文件的視頻類型、音頻類型、數(shù)字版權(quán)管理DRM標(biāo)記。
4.一種流媒體文件存儲裝置,其特征在于,包括劃分單元,用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲單元,用于存儲所述媒體文件的全部子媒體文件。
5.根據(jù)權(quán)利要求4所述的流媒體文件存儲裝置,其特征在于,所述劃分單元包括以下還用于當(dāng)所述媒體文件的幀數(shù)大于所述幀索引表長度或所述媒體文件的關(guān)鍵幀幀數(shù)大于所述關(guān)鍵幀索引表長度時,對所述媒體文件劃分;當(dāng)所述媒體文件的幀數(shù)小于所述幀索引表長度、所述媒體文件的關(guān)鍵幀幀數(shù)小于所述關(guān)鍵幀索引表長度時,按照時間點(diǎn)或數(shù)據(jù)量大小對所述媒體文件劃分。
6.根據(jù)權(quán)利要求4所述的流媒體文件存儲裝置,其特征在于,所述媒體信息段還存有 所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記。
7.一種流媒體文件播放方法,其特征在于,包括接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件; 將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn);根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。
8.根據(jù)權(quán)利要求7所述的流媒體文件播放方法,其特征在于,所述根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端包括收到客戶端播放請求后,根據(jù)所述媒體文件的幀率確定每秒應(yīng)發(fā)送的幀個數(shù),從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端;收到客戶端發(fā)送快進(jìn)/快退請求后,根據(jù)所述客戶端所選快進(jìn)/快退倍率及所述媒體文件的幀率確定每次跨越的幀個數(shù),從所述起播點(diǎn)開始抽取幀數(shù)據(jù)發(fā)送到所述客戶端。
9.根據(jù)權(quán)利要求7所述的流媒體文件播放方法,其特征在于,在所述查找與所述文件 ID對應(yīng)的媒體文件之后,包括查找到所述文件ID對應(yīng)的媒體文件后,向所述客戶端發(fā)送回復(fù)消息,所述回復(fù)消息攜帶所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記。
10.根據(jù)權(quán)利要求7所述的流媒體文件播放方法,其特征在于,根據(jù)客戶端操作請求及媒體信息段的幀率,從TS數(shù)據(jù)段讀取幀數(shù)據(jù)發(fā)送到所述客戶端之后包括若所述目的子媒體文件有至少一個接續(xù)的子媒體文件,根據(jù)客戶端操作,依次在所述至少一個接續(xù)的子媒體文件中讀取幀數(shù)據(jù)向所述客戶端發(fā)送。
11.一種流媒體服務(wù)器,其特征在于,包括接收單元,用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找單元,用于查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;比對單元,用于將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;確定起播點(diǎn)單元,用于從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置為起播點(diǎn);發(fā)送單元,用于根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。
12.根據(jù)權(quán)利要求11所述的流媒體服務(wù)器,其特征在于,所述發(fā)送單元還用于收到客戶端播放請求后,根據(jù)所述媒體文件的幀率確定每秒應(yīng)發(fā)送的幀個數(shù),從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端;收到客戶端發(fā)送快進(jìn)/快退請求后,根據(jù)所述客戶端所選快進(jìn)/快退倍率及所述媒體文件的幀率確定每次跨越的幀個數(shù),從所述起播點(diǎn)開始抽取幀數(shù)據(jù)發(fā)送到所述客戶端。
13.根據(jù)權(quán)利要求11所述的流媒體服務(wù)器,其特征在于,還包括發(fā)送回復(fù)消息單元,用于查找到所述文件ID對應(yīng)的媒體文件后,向所述客戶端發(fā)送回復(fù)消息,所述回復(fù)消息攜帶所述媒體文件的視頻類型、音頻類型、DRM標(biāo)記。
14.根據(jù)權(quán)利要求11所述的流媒體服務(wù)器,其特征在于,還包括接續(xù)單元,用于若所述目的子媒體文件有至少一個接續(xù)的子媒體文件,根據(jù)客戶端操作,依次在所述至少一個接續(xù)的子媒體文件中讀取幀數(shù)據(jù)向所述客戶端發(fā)送。
15.一種流媒體文件存儲和播放系統(tǒng),其特征在于,包括流媒體文件存儲裝置、流媒體服務(wù)器,其中所述流媒體文件存儲裝置,用于將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID,所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件;所述流媒體服務(wù)器,用于接收客戶端發(fā)送的建立連接請求,所述建立連接請求攜帶有所述客戶端欲建立連接的文件ID ;查找與所述文件ID對應(yīng)的媒體文件,所述媒體文件分為至少一個子媒體文件;將客戶端選定起始時間點(diǎn)與所述媒體文件的全部子媒體文件的時間參數(shù)進(jìn)行比對,確定目的子媒體文件,所述目的子媒體文件為包含所述客戶端選定起始時間點(diǎn)的時間參數(shù)對應(yīng)的子媒體文件;從關(guān)鍵幀索引表中選取與所述客戶端選定起始時間點(diǎn)最接近的關(guān)鍵幀,在幀索引表里查詢所述關(guān)鍵幀在TS數(shù)據(jù)段的存儲位置,所述關(guān)鍵幀在TS 數(shù)據(jù)段的存儲位置為起播點(diǎn);根據(jù)客戶端請求及媒體文件的幀率,從所述起播點(diǎn)開始讀取幀數(shù)據(jù)發(fā)送到所述客戶端。
16.根據(jù)權(quán)利要求15所述的流媒體文件存儲和播放系統(tǒng),其特征在于,所述流媒體文件存儲和播放系統(tǒng)包括權(quán)利要求4-6及權(quán)利要求11-14任一項所述的裝置。
全文摘要
本發(fā)明實施例公開了一種流媒體文件存儲和播放的方法裝置及系統(tǒng),能夠提高媒體文件讀取效率。流媒體文件存儲方法包括將媒體文件分成至少一份子媒體文件,每份子媒體文件包括頭數(shù)據(jù)段和TS數(shù)據(jù)段,所述頭數(shù)據(jù)段包括自身信息段、媒體信息段、幀信息段,所述自身信息段存有媒體文件身份標(biāo)識號碼ID;所述媒體信息段存有子媒體文件的時間參數(shù)、所述媒體文件的幀率,所述幀信息段存有子媒體文件的關(guān)鍵幀索引表、幀索引表;所述TS數(shù)據(jù)段存儲所述頭數(shù)據(jù)段對應(yīng)的TS流數(shù)據(jù);存儲所述媒體文件的全部子媒體文件。本發(fā)明實施例主要應(yīng)用于支持流媒體文件存儲和播放的系統(tǒng)。
文檔編號H04N21/23GK102413358SQ20111023151
公開日2012年4月11日 申請日期2011年8月12日 優(yōu)先權(quán)日2011年8月12日
發(fā)明者徐延霞, 湯立輝, 馬宇堅 申請人:青島海信傳媒網(wǎng)絡(luò)技術(shù)有限公司