多分段的媒體文件跨段播放方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及媒體文件播放方法及系統(tǒng),尤其涉及一種多分段的媒體文件跨段播放方法和系統(tǒng)。
【背景技術(shù)】
[0002]基于開放互聯(lián)網(wǎng)的移動(dòng)流媒體服務(wù)是將來(lái)滿足直播、點(diǎn)播以及時(shí)移等諸多應(yīng)用需求的最佳解決方案之一?;陂_放互聯(lián)網(wǎng)的音視頻服務(wù),終端可以是電視機(jī)、電腦、機(jī)頂盒、PAD、智能手機(jī)等等。意指在網(wǎng)絡(luò)之上提供服務(wù),強(qiáng)調(diào)服務(wù)與物理網(wǎng)絡(luò)的無(wú)關(guān)性。對(duì)于現(xiàn)在各大音視頻網(wǎng)站所提供的媒體內(nèi)容,絕大多數(shù)是采用按時(shí)間分割成多個(gè)分段的方式來(lái)存儲(chǔ)和傳輸一段媒體內(nèi)容(例如:一部90分鐘的電景^,可分成9段,每段10分鐘),其中的每個(gè)分段都是獨(dú)立完整的媒體文件。
[0003]目前的多分段媒體文件有分段FLV文件和分段MP4文件,每個(gè)媒體文件(FLV或MP4)分段都由“頭信息”和“媒體數(shù)據(jù)”組成。通常,頭信息在媒體頭信息部,媒體數(shù)據(jù)在頭信息后直到媒體文件尾。
[0004]頭信息一般設(shè)置在視頻文件中的文件最開始位置或者結(jié)尾處,通常由文件類型、文件播放時(shí)長(zhǎng)、所含視音頻流數(shù)量、各音視頻流采用的編碼標(biāo)準(zhǔn)以及各音視頻流所含“幀信息”等描述信息組成。以MP4文件為例,該頭文件中包含有視頻文件的每幀碼流的位置偏移、時(shí)間戳、碼流尺寸、時(shí)長(zhǎng)、視頻編碼方式、分辨率、音頻編碼方式、采樣率等基本信息。
[0005]媒體數(shù)據(jù)由各視頻幀和各音頻幀組成。其中,F(xiàn)LV文件的視(音)頻幀包含此幀的顯示時(shí)間戳和編碼數(shù)據(jù);MP4的視(音)頻幀只含有編碼數(shù)據(jù)。
[0006]現(xiàn)有技術(shù)在跨段播放這種多分段的媒體文件時(shí),是按照以下方式播放的,即:打開播放器,播放一個(gè)分段的媒體文件,若此時(shí)seek到新的分段,需“重置播放器”,然后再播放新的分段媒體文件。這里的“重置播放器”指的是在播放器內(nèi)部重新初始化播放器的過程。
[0007]但是,目前的這種“跨段播放”存在著明顯的缺陷,主要在于:
[0008]跨段播放需要重啟播放器(關(guān)閉并重新打開下載模塊、解復(fù)用模塊、解碼模塊、渲染模塊),打開新的分段進(jìn)行播放,且新分段需要重新加載,等待下載時(shí)間,段與段之間會(huì)出現(xiàn)畫面、音頻卡頓。另外,跨段后播放的視頻時(shí)長(zhǎng)僅僅是當(dāng)前新的分段的時(shí)長(zhǎng),而不是全部拼接好的時(shí)長(zhǎng),影響用戶觀看體驗(yàn)。
[0009]另外,由于目前的在線視頻中對(duì)視頻文件中的分段內(nèi)容拆分后并不進(jìn)行拼頭操作,即使用戶采用下載離線視頻文件后續(xù)來(lái)本地播放,跨段播放時(shí)系統(tǒng)播放器同樣會(huì)進(jìn)行多次重啟播放器的操作,段與段之間會(huì)出現(xiàn)閃爍,或者音頻之間停頓等問題。
[0010]事實(shí)上,采用拆分后重新拼頭操作需要花費(fèi)更多的帶寬資源和時(shí)長(zhǎng),這對(duì)于媒體提供商來(lái)說,前期投入和后期維護(hù)成本會(huì)顯著增加,并不是一種輕便的解決方案。
【發(fā)明內(nèi)容】
[0011]有鑒于此,本申請(qǐng)所要解決的技術(shù)問題是提供了一種多分段的媒體文件跨段播放方法和系統(tǒng),來(lái)解決多分段的媒體文件跨段播放時(shí)的畫面和音頻卡頓和時(shí)間顯示不同步的問題。
[0012]為了解決上述技術(shù)問題,本申請(qǐng)一方面提出了一種多分段的媒體文件跨段播放方法,所述媒體文件包括按順序接連的第一分段、至少一個(gè)中間分段、第二分段,所述多分段的媒體文件跨段播放方法包括:
[0013]在第一分段的播放過程中跨段seek到第二分段時(shí),停止第一分段的下載和解復(fù)用,保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、渲染緩存;
[0014]開始第二分段的下載和解復(fù)用,在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和渲染模塊開始相應(yīng)的解碼和渲染;
[0015]對(duì)第一分段和第二分段跨段seek操作的銜接處的時(shí)間戳進(jìn)行拼接處理。
[0016]在一些【具體實(shí)施方式】中,所述在第一分段的播放過程中跨段seek到第二分段時(shí),停止第一分段的下載和解復(fù)用,保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、渲染緩存包括:
[0017]在第一分段的播放過程中跨段seek到第二分段時(shí),關(guān)閉第一分段的下載模塊和第一分段的解復(fù)用模塊,清空第一分段的解復(fù)用包隊(duì)列;
[0018]保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、渲染緩存。
[0019]在一些【具體實(shí)施方式】中,所述開始第二分段的下載和解復(fù)用,在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和渲染模塊開始相應(yīng)的解碼和渲染包括:
[0020]打開第二分段的下載模塊,啟動(dòng)第二分段的解復(fù)用模塊,對(duì)第二分段進(jìn)行頭信息解析,
[0021]在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和渲染模塊開始相應(yīng)的解碼和渲染。
[0022]在一些【具體實(shí)施方式】中,所述對(duì)第一分段和第二分段跨段seek操作的銜接處的時(shí)間戳進(jìn)行拼接處理包括:利用第二分段相對(duì)于第一分段的時(shí)長(zhǎng)偏移加上解復(fù)用第二分段得到的每幀音視頻包的時(shí)間戳確定第二分段的每個(gè)音視頻拼接時(shí)間戳。
[0023]在一些【具體實(shí)施方式】中,所述第二分段相對(duì)于第一分段的時(shí)長(zhǎng)偏移根據(jù)所述第一分段的時(shí)長(zhǎng)和所述至少一個(gè)中間分段的時(shí)長(zhǎng)而確定。
[0024]本發(fā)明另一方面提出了一種多分段的媒體文件跨段播放系統(tǒng),所述媒體文件包括按順序接連的第一分段、至少一個(gè)中間分段、第二分段,所述多分段的媒體文件跨段播放系統(tǒng)包括:
[0025]第一分段處理單元,配置以在第一分段的播放過程中跨段seek到第二分段時(shí),停止第一分段的下載和解復(fù)用,保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、渲染緩存;
[0026]第二分段處理單元,配置以開始第二分段的下載和解復(fù)用,在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和清染模塊開始相應(yīng)的解碼和清染;
[0027]時(shí)間同步單元,配置以對(duì)第一分段和第二分段跨段seek操作的銜接處的時(shí)間戳進(jìn)行拼接處理。
[0028]在一些【具體實(shí)施方式】中,所述第一分段處理單元配置以:
[0029]在第一分段的播放過程中跨段seek到第二分段時(shí),關(guān)閉第一分段的下載模塊和第一分段的解復(fù)用模塊,清空第一分段的解復(fù)用包隊(duì)列;
[0030]保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、渲染緩存。
[0031]在一些【具體實(shí)施方式】中,所述第二分段處理單元配置以:
[0032]打開第二分段的下載模塊,啟動(dòng)第二分段的解復(fù)用模塊,對(duì)第二分段進(jìn)行頭信息解析;
[0033]在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和渲染模塊開始相應(yīng)的解碼和渲染。
[0034]在一些【具體實(shí)施方式】中,所述時(shí)間同步單元配置以:利用第二分段相對(duì)于第一分段的時(shí)長(zhǎng)偏移加上解復(fù)用第二分段得到的每幀音視頻包的時(shí)間戳確定第二分段的每個(gè)音視頻拼接時(shí)間戳。
[0035]在一些【具體實(shí)施方式】中,所述第二分段相對(duì)于第一分段的時(shí)長(zhǎng)偏移根據(jù)所述第一分段的時(shí)長(zhǎng)和所述至少一個(gè)中間分段的時(shí)長(zhǎng)而確定。
[0036]與現(xiàn)有技術(shù)相比,本申請(qǐng)所述的方法和系統(tǒng),達(dá)到了如下效果:
[0037]采用本發(fā)明的方法,解碼模塊和解復(fù)用模塊正常工作,不需要重置播放器(關(guān)閉上一個(gè)播放,啟動(dòng)新一個(gè)播放),防止資源損耗,seek速度更快,于是減少了跨段播放之間的停頓時(shí)間(由于下載的情況下可能還有少許時(shí)間,但是總體上節(jié)省了資源和停頓時(shí)間),確保跨段播放時(shí)的流暢性。
[0038]同時(shí),跨段播放時(shí)的顯示時(shí)間同步,seek操作的可視性更高,提升了用戶的觀看體驗(yàn)。
【附圖說明】
[0039]此處所說明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
[0040]圖1示出了本發(fā)明一實(shí)施例的多分段的媒體文件跨段播放方法的流程圖;
[0041]圖2示出了圖1中的方法中的步驟SlOl的一種【具體實(shí)施方式】的詳細(xì)執(zhí)行圖;
[0042]圖3示出了圖1中的方法中的步驟S102的一種【具體實(shí)施方式】的詳細(xì)執(zhí)行圖;
[0043]圖4示出了一具體實(shí)施例的分段媒體文件應(yīng)用本發(fā)明的方法的示意圖;
[0044]圖5示出了本發(fā)明的多分段的媒體文件跨段播放系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0045]如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來(lái)指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來(lái)稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來(lái)作為區(qū)分組件的方式,而是以組件在功能上的差異來(lái)作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包括”為一開放式用語(yǔ),故應(yīng)解釋成“包括但不限定于”。說明書后續(xù)描述為實(shí)施本申請(qǐng)的較佳實(shí)施方式,然所述描述乃以說明本申請(qǐng)的一般原則為目的,并非用以限定本申請(qǐng)的范圍。本申請(qǐng)的保護(hù)范圍當(dāng)視所附權(quán)利要求書所界定者為準(zhǔn)。
[0046]如圖1所示,為本發(fā)明一實(shí)施例的多分段的媒體文件跨段播放方法,所述媒體文件包括按順序接連的第一分段、至少一個(gè)中間分段、第二分段,所述多分段的媒體文件跨段播放方法包括:
[0047]SlOl:在第一分段的播放過程中跨段seek到第二分段時(shí),停止第一分段的下載和解復(fù)用,保持解碼模塊和渲染模塊的開啟狀態(tài),清空解碼模塊和渲染模塊對(duì)第一分段的解碼緩存、清染緩存;
[0048]S102:開始第二分段的下載和解復(fù)用,在第二分段頭信息解析完畢后,對(duì)第二分段進(jìn)行音視頻包的解復(fù)用,并將解復(fù)用出的數(shù)據(jù)包放入所述解碼模塊和渲染模塊開始相應(yīng)的解碼和渲染;
[0049]S103:對(duì)第一分段和第二分段跨段seek操作的銜接處的時(shí)間戳進(jìn)行拼接處理。
[0050]繼續(xù)參照?qǐng)D2,關(guān)于步驟SlO