專利名稱:流媒體剪輯播放進(jìn)度管理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流媒體技術(shù)領(lǐng)域,特別涉及一種流媒體剪輯播放進(jìn)度管理方法及系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用的豐富,互聯(lián)網(wǎng)中流媒體文件的使用和加工的需求日益增多,出現(xiàn)了許多需要將多個(gè)不同的流媒體剪輯片段關(guān)聯(lián)在一起連續(xù)進(jìn)行播放的情況,如電影預(yù)告片(包含電影中多個(gè)片段的拼接)、精簡(jiǎn)劇情片段(包含多部作品不同片段的組合拼接)、歌曲串燒等。由于很多時(shí)候這些流媒體剪輯的內(nèi)容是不連續(xù)的,而且在格式等方面都不相同,要將其拼接成連續(xù)播放的文件需要對(duì)各剪輯內(nèi)容進(jìn)行大量的處理,尤其是多個(gè)剪輯片段的完整播放進(jìn)度的處理較復(fù)雜?,F(xiàn)有技術(shù)中,在流媒體文件的播放過(guò)程中,進(jìn)度的顯示通常都是基于PTS (Presentation Time Stamp,顯示巾貞的時(shí)間戳)進(jìn)行計(jì)算的,其中,以每段流媒體開(kāi)始播放的時(shí)間點(diǎn)為基準(zhǔn)時(shí)間,對(duì)應(yīng)的第一幅畫面幀的PTS值作為基準(zhǔn)PTS,在基準(zhǔn)時(shí)間和基準(zhǔn)PTS的基礎(chǔ)上利用當(dāng)前PTS來(lái)計(jì)算播放時(shí)間,再由播放時(shí)間與總播放時(shí)間的比值來(lái)確定顯示的播放進(jìn)度。然而,在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)的處理方法僅適用于PTS值連續(xù)的多段剪輯(這類文件通常是同一流媒體文件的自然分割,如DVD的多個(gè)連續(xù)片段),而無(wú)法在PTS值不連續(xù)的多段剪輯間使用。但對(duì)于常見(jiàn)的剪輯拼接,絕大多數(shù)情況下各片段的PTS值僅在其分段內(nèi)連續(xù),分段之間PTS值通常有較大的差異。因此,現(xiàn)有技術(shù)中,當(dāng)連續(xù)播放這種流媒體剪輯時(shí),由于各片段中的PTS值在段間不連續(xù),在第一次片段跳轉(zhuǎn)時(shí)就開(kāi)始發(fā)生進(jìn)度計(jì)算和顯示的錯(cuò)誤,整個(gè)播放過(guò)程進(jìn)度顯示變成雜亂無(wú)章,導(dǎo)致流媒體播放不正常甚至引起播放過(guò)程崩潰。雖然通過(guò)人工預(yù)處理可以適當(dāng)減輕這種情況,但是人工預(yù)處理需要專業(yè)的知識(shí),且對(duì)于多段視頻,人工預(yù)處理的工作量大、易出錯(cuò),處理時(shí)間、準(zhǔn)確性和精度都無(wú)法得到保證。
發(fā)明內(nèi)容
(一 )要解決的技術(shù)問(wèn)題針對(duì)現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明為了解決現(xiàn)有技術(shù)中多片段流媒體剪輯無(wú)法有效連續(xù)播放的問(wèn)題,提出了一種流媒體剪輯播放進(jìn)度管理方法及系統(tǒng)。( 二 )技術(shù)方案為了實(shí)現(xiàn)上述目的,一方面,本發(fā)明提供了一種流媒體剪輯播放進(jìn)度管理方法,所述方法包括步驟SI,在播放多段剪輯時(shí),當(dāng)服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù),會(huì)同時(shí)向終端發(fā)送EOS/BOS消息;S2,終端的播放系統(tǒng)根據(jù)收到的E0S/B0S消息啟動(dòng)對(duì)PTS的偵聽(tīng);
S3,在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值;S4,將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為是PTS發(fā)生了非翻轉(zhuǎn)跳變,執(zhí)行步驟S5 ;否則返回步驟S3繼續(xù)偵聽(tīng);S5,非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制;隨后停止偵聽(tīng),返回步驟SI等待再次收到服務(wù)器的E0S/B0S消息直至全部剪輯播放完畢。
優(yōu)選地,步驟S4中,所述兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn)是指(當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000大于跳變閾值。優(yōu)選地,步驟S4中,是否發(fā)生所述翻轉(zhuǎn)的判定方式為如果(PTS最大值-I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000小于跳變閾值,則判斷發(fā)生了翻轉(zhuǎn),否則認(rèn)為未發(fā)生翻轉(zhuǎn)。優(yōu)選地,如果未發(fā)生翻轉(zhuǎn),播放時(shí)間的計(jì)算公式為播放時(shí)間=基準(zhǔn)時(shí)間+(I當(dāng)前PTS值-基準(zhǔn)PTS值I )/90000。優(yōu)選地,如果發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式變?yōu)椴シ艜r(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值|)/90000。優(yōu)選地,對(duì)于所述跳變閾值,有正常播放狀態(tài)下跳變閾值=偵聽(tīng)間隔時(shí)間*2 ;倍速播放狀態(tài)下跳變閾值=播放倍速*關(guān)鍵幀間隔時(shí)間*2。另一方面,本發(fā)明還同時(shí)提供一種流媒體剪輯播放進(jìn)度管理系統(tǒng),所述系統(tǒng)包括消息發(fā)送模塊、偵聽(tīng)啟動(dòng)模塊、偵聽(tīng)模塊、判斷模塊和更新模塊;其中,所述消息發(fā)送模塊,用于在播放多段剪輯時(shí),在服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù)的同時(shí)向終端發(fā)送E0S/B0S消息;所述偵聽(tīng)啟動(dòng)模塊,用于根據(jù)收到的E0S/B0S消息啟動(dòng)對(duì)PTS的偵聽(tīng);所述偵聽(tīng)模塊,用于在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值;所述判斷模塊,用于將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為是PTS發(fā)生了非翻轉(zhuǎn)跳變,交由所述更新模塊處理;否則由所述偵聽(tīng)模塊繼續(xù)偵聽(tīng);所述更新模塊,用于在非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制;隨后停止偵聽(tīng),等待所述消息發(fā)送模塊再次發(fā)送的E0S/B0S消息直至全部剪輯播放完畢。優(yōu)選地,所述判斷模塊中,根據(jù)(I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000是否大于跳變閾值來(lái)判斷兩次PTS值之間的變化是否超出了正常的計(jì)數(shù)累進(jìn)。優(yōu)選地,所述判斷模塊中,根據(jù)(PTS最大值-1當(dāng)前PTS值-前一次偵聽(tīng)的PTS值)/90000是否小于跳變閾值來(lái)判斷是否發(fā)生了翻轉(zhuǎn)。優(yōu)選地,所述系統(tǒng)中,如果判斷模塊判斷發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式變?yōu)椴シ艜r(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值|)/90000。(三)有益效果
采用本發(fā)明實(shí)施例中的技術(shù)方案,通過(guò)對(duì)PTS的偵聽(tīng),在視頻剪輯片段切換后重置進(jìn)度計(jì)算的時(shí)間基準(zhǔn)和PTS基準(zhǔn),使得視頻剪輯片段切換后仍能夠正常而準(zhǔn)確的進(jìn)行播放進(jìn)度的計(jì)算和顯示。本發(fā)明是通過(guò)播放系統(tǒng)內(nèi)在程序的改變,解決了視頻剪輯各片段PTS不連續(xù)導(dǎo)致的進(jìn)度顯示混亂問(wèn)題,從而使視頻剪輯編輯的工作量大大減輕,即使沒(méi)有前期人工編輯整合的處理,用戶也能夠正常的看到視頻播放的進(jìn)度。
圖I為本發(fā)明的實(shí)施例中流媒體剪輯播放進(jìn)度管理方法的處理流程示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明的實(shí)施例中提供了一種用于流媒體剪輯的播放進(jìn)度管理方法及系統(tǒng),能夠在多段流媒體剪輯連續(xù)播放的情況下,正常且準(zhǔn)確地顯示和控制整體播放進(jìn)度。其中,流媒體在播放時(shí),服務(wù)器會(huì)持續(xù)的將數(shù)據(jù)傳輸給終端設(shè)備,終端設(shè)備接收到以后通過(guò)播放系統(tǒng)進(jìn)行播放,并且將開(kāi)始播放的時(shí)刻作為基準(zhǔn)時(shí)間(通常為0,也可以為當(dāng)前的絕對(duì)時(shí)間),該時(shí)刻對(duì)應(yīng)的PTS值作為基準(zhǔn)PTS值。在播放過(guò)程中,可以通過(guò)獲取當(dāng)前PTS值,并調(diào)用基準(zhǔn)時(shí)間值和基準(zhǔn)PTS值進(jìn)行播放時(shí)間和播放進(jìn)度的計(jì)算和顯示。首先,參見(jiàn)圖1,本發(fā)明的實(shí)施例中,流媒體剪輯播放進(jìn)度管理方法的一般步驟為播放多段剪輯時(shí),當(dāng)服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù),會(huì)同時(shí)向終端發(fā)送EOS/BOS(End of Segment,段結(jié)束,表明到達(dá)一段流媒體數(shù)據(jù)的結(jié)尾;Begin of Segment,段開(kāi)始,表明到達(dá)一段流媒體數(shù)據(jù)的開(kāi)始)消息;終端的播放系統(tǒng)根據(jù)收到的消息得知下一段剪輯數(shù)據(jù)即將到達(dá)緩存,于是啟動(dòng)對(duì)PTS的偵聽(tīng);在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值;將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí)(因?yàn)榉D(zhuǎn)的條件是達(dá)到PTS的最大值,因此很容易判斷),則認(rèn)為是PTS發(fā)生了跳變;否則繼續(xù)偵聽(tīng);將跳變情況判斷為流媒體剪輯的內(nèi)容發(fā)生了變換,或者說(shuō)剛越過(guò)了兩段剪輯的邊界連接點(diǎn),此時(shí)為了不使播放進(jìn)度條顯示出錯(cuò),進(jìn)行如下動(dòng)作取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,作為接下來(lái)的播放進(jìn)度的計(jì)算基準(zhǔn);然后停止偵聽(tīng)和判斷,等待再次收到服務(wù)器的E0S/B0S消息,屆時(shí)再次運(yùn)行上述流程,直至視頻剪輯播放完畢為止。其中,上述方法中判斷PTS是否發(fā)生跳變的方法如下如果(I當(dāng)前PTS-上一個(gè)PTS I) /90000大于跳變閾值時(shí),判定發(fā)生PTS跳變;同時(shí),如果(PTS最大值-I當(dāng)前PTS-上一個(gè)PTS I )/90000小于跳變閾值時(shí),則確定本次跳變?yōu)榉D(zhuǎn)跳變,否則確定為非翻轉(zhuǎn)跳變;非翻轉(zhuǎn)跳變?yōu)橛行?,表示播放進(jìn)入了下一個(gè)片段(即可以進(jìn)一步執(zhí)行更新步驟);翻轉(zhuǎn)跳變?yōu)闊o(wú)效跳變,不能作為播放內(nèi)容的切換的標(biāo)準(zhǔn)。其中,正常播放狀態(tài)下跳變閾值=偵聽(tīng)間隔時(shí)間*2倍速播放狀態(tài)下跳變閾值=播放倍速*關(guān)鍵幀間隔時(shí)間*2在任何一個(gè)視頻片段內(nèi),如果PTS發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式立即更換為播放時(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值I )/90000。隨后 一直持續(xù)到本片段結(jié)束或者確定發(fā)生PTS跳變?yōu)橹?。其中上述?jì)算過(guò)程中的PTS最大值通常為Oxlffffffff,該值的數(shù)值較大,通常在一個(gè)片段內(nèi)最多只有一次達(dá)到最大值進(jìn)行翻轉(zhuǎn)的情況發(fā)生。判斷PTS是否發(fā)生了翻轉(zhuǎn)(基于PTS最大值以及當(dāng)前PTS值變化情況進(jìn)行判斷)以及在PTS發(fā)生翻轉(zhuǎn)時(shí)更換進(jìn)度計(jì)算公式為現(xiàn)有技術(shù),不再贅述。上述方法中,跳變后繼續(xù)使用正常進(jìn)度計(jì)算公式而不是翻轉(zhuǎn)后的計(jì)算公式,只是根據(jù)當(dāng)前播放時(shí)間和當(dāng)前PTS值重新校正基準(zhǔn)值。下面通過(guò)一個(gè)更具體的實(shí)施方式來(lái)對(duì)本發(fā)明的方法做進(jìn)一步說(shuō)明。以播放一段抽取多組鏡頭組成的電影預(yù)覽片源,從頭開(kāi)始播放,第一段的基準(zhǔn)時(shí)間為O秒,對(duì)應(yīng)該時(shí)刻的PTS值賦予給基準(zhǔn)PTS值,即StdPTS = 162081900。在接下來(lái)的過(guò)程中,進(jìn)度顯示的計(jì)算如下播放時(shí)間=基準(zhǔn)時(shí)間+ (currentPTS-stdPTS)/90000 =0+ (currentPTS-162081900)/90000 ;播放進(jìn)度=播放時(shí)間/視頻剪輯總時(shí)間。正常速度播放一段時(shí)間后,播放系統(tǒng)接收到服務(wù)器的EOS消息,于是開(kāi)始進(jìn)行PTS偵聽(tīng),當(dāng)前播放狀態(tài)為正常播放,這時(shí)候取的偵聽(tīng)間隔時(shí)間為O. I秒,那么按照正常播放狀態(tài)下的跳變閾值計(jì)算公式,跳變閾值threshold = O. 1*2 = O. 2秒。第一次偵聽(tīng)獲得的PTS為L(zhǎng)astPTS = 167298300,0. I秒后再次獲取PTS,得到currentPTS =167305500,然后進(jìn)行跳變的計(jì)算和判斷如下計(jì)算公式為(currentPTS-LastPTS)/90000=(167305500-167298300) /90000 = O. 08 秒,由于 O. 08 秒< threshold (O. 2 秒),因此判斷沒(méi)有發(fā)生跳變 JfcurrentPTS 的值 167305500 賦予給 lastPTS,即 IastPTS= 167305500。然后繼續(xù)偵聽(tīng),O. I秒后偵聽(tīng)到當(dāng)前PTS值并賦予給currentPTS,即currentPTS=167312700,再次計(jì)算(currentPTS-LastPTS) /90000 = (167312700-167305500) /90000=O. 08秒,0. 08秒< threshold,仍沒(méi)有跳變,則繼續(xù)重復(fù)偵聽(tīng)。直至當(dāng)某次偵聽(tīng)時(shí)LastPTS = 167478300,currentPTS = 196883100 時(shí),通過(guò)公式計(jì)算(currentPTS-LastPTS) /90000 = (196883100-167478300) /90000 = 326. 72 秒,由于326. 72秒> threshold,同時(shí)根據(jù)翻轉(zhuǎn)公式判定又未發(fā)生翻轉(zhuǎn),因此判斷PTS值發(fā)生了跳變,說(shuō)明已經(jīng)播放到下一段視頻剪輯片段內(nèi)容。此時(shí)將currentPTS = 196883100的值賦給基準(zhǔn)PTS值,即此時(shí)stdPTS = 196883100 ;并將已經(jīng)播放完成的視頻片段的總時(shí)間值賦給基準(zhǔn)時(shí)間,這里為60秒,停止偵聽(tīng)直至再次收到EOS消息。在之后這段時(shí)間內(nèi)(即在第二個(gè)視頻片段內(nèi))進(jìn)度顯示的計(jì)算公式為播放時(shí)間=基準(zhǔn)時(shí)間+ (currentPTS-stdPTS)/90000 = 60+ (currentPTS-196883100)/90000 ;進(jìn)度百分比=播放時(shí)間/視頻剪輯總時(shí)間。這樣在播放第二段視頻剪輯時(shí)重置了起算基準(zhǔn)值,在第二個(gè)視頻剪輯片段播放I秒時(shí),顯示的播放時(shí)間為61秒,因此播放時(shí)間和進(jìn)度的計(jì)算是正常而準(zhǔn)確的,不受各視頻剪輯片段PTS不連續(xù)的影響。接著進(jìn)行8倍速的播放,第二段播放即將結(jié)束時(shí),播放系統(tǒng)再次收到服務(wù)器的EOS消息,再次開(kāi)始進(jìn)行PTS偵聽(tīng),由于當(dāng)前播放狀態(tài)為倍速播放,所以按照倍速播放的跳變閾值計(jì)算公式,由于倍速播放時(shí)關(guān)鍵幀的間隔為O. 2秒,所以偵聽(tīng)間隔時(shí)間取O. 2*2 =
O.4秒,跳變閾值threshold = 8*0. 2*2 = 3. 2秒,第一次偵聽(tīng)獲得的PTS為L(zhǎng)astPTS =199061100,0. 4秒后再次獲取currentPTS = 199233900,按照跳變判別公式獲得PTS間隔(currentPTS-LastPTS)/90000 = I. 92 秒,I. 92 秒< threshold(3. 2 秒),因此沒(méi)有發(fā)生跳變,繼續(xù)偵聽(tīng)。直到LastPTS = 207675900, currentPTS = 216067500時(shí),通過(guò)公式計(jì)算(currentPTS-LastPTS) /90000 = 93. 24 秒,由于 93. 24 秒> threshold,同時(shí)根據(jù)翻轉(zhuǎn)公式判定又未發(fā)生翻轉(zhuǎn),因此判斷PTS值發(fā)生了跳變,將currentPTS = 216067500的值賦給基準(zhǔn)PTSJP stdPTS = 216067500,同時(shí)將已經(jīng)播放完成的視頻片段的總時(shí)間值賦給基準(zhǔn)時(shí)間,將播放切換至第三段剪輯。在之后的播放過(guò)程中,如果還有多個(gè)非連續(xù)的視頻片段,則每一個(gè)都會(huì)收到EOS消息,啟動(dòng)上述程序,循環(huán)執(zhí)行上述動(dòng)作,不再贅述。其中,已經(jīng)播放完成的視頻片段的總時(shí)間的獲取,如第一段60秒,第二段120秒,以及整個(gè)視頻剪輯總時(shí)間如600秒,這樣各段視頻的時(shí)間值由服務(wù)器提供,為現(xiàn)有技術(shù),不再贅述。在正常播放情況下,進(jìn)行PTS偵聽(tīng)的所取的時(shí)間間隔很小,一般為O. I秒,獲取的PTS基準(zhǔn)值與實(shí)際剪輯視頻PTS起始值之間的誤差在O. I秒以內(nèi),可以達(dá)到進(jìn)度顯示的要求。在倍速播放情況下,獲取的PTS基準(zhǔn)值與實(shí)際剪輯視頻PTS起始值之間的誤差與倍速有關(guān),最大在3S左右,由于此時(shí)對(duì)進(jìn)度顯示的要求不是特別嚴(yán)格,此誤差在可接受的范圍內(nèi)。此外,本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括上述實(shí)施例方法的各步驟,而所述的存儲(chǔ)介質(zhì)可以是=ROM/RAM、磁碟、光盤、存儲(chǔ)卡等。因此,與本發(fā)明的方法相對(duì)應(yīng)的,本發(fā)明還同時(shí)包括一種流媒體剪輯播放進(jìn)度管理系統(tǒng),該系統(tǒng)通常以與方法各步驟相對(duì)應(yīng)的功能模塊的形式表示;所述系統(tǒng)包括消息發(fā)送模塊、偵聽(tīng)啟動(dòng)模塊、偵聽(tīng)模塊、判斷模塊和更新模塊;其中,所述消息發(fā)送模塊,用于在播放多段剪輯時(shí),在服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù)的同時(shí)向終端發(fā)送E0S/B0S消息;所述偵聽(tīng)啟動(dòng)模塊,用于根據(jù)收到的E0S/B0S消息啟動(dòng)對(duì)PTS的偵聽(tīng);所述偵聽(tīng)模塊,用于在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值;所述判斷模塊,用于將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為是PTS發(fā)生了非翻轉(zhuǎn)跳變,交由所述更新模塊處理;否則由所述偵聽(tīng)模塊繼續(xù)偵聽(tīng);所述更新模塊,用于在非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制;隨后停止偵聽(tīng),等待所述消息發(fā)送模塊再次發(fā)送的EOS/BOS消息直至全部剪輯播放完畢。其中,所述判斷模塊中,根據(jù)(I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000是否大于跳變閾值來(lái)判斷兩次PTS值之間的變化是否超出了正常的計(jì)數(shù)累進(jìn)。根據(jù)(PTS最大值-I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I)/90000是否小于跳變閾值來(lái)判斷是否發(fā)生了翻轉(zhuǎn)。所述系統(tǒng)中,如果判斷模塊判斷發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式變?yōu)椴シ艜r(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值|)/90000。
采用本發(fā)明實(shí)施例中的技術(shù)方案,通過(guò)對(duì)PTS的偵聽(tīng),在視頻剪輯片段切換后重置進(jìn)度計(jì)算的時(shí)間基準(zhǔn)和PTS基準(zhǔn),使得視頻剪輯片段切換后仍能夠正常而準(zhǔn)確的進(jìn)行播放進(jìn)度的計(jì)算和顯示。本發(fā)明是通過(guò)播放系統(tǒng)內(nèi)在程序的改變,解決了視頻剪輯各片段PTS不連續(xù)導(dǎo)致的進(jìn)度顯示混亂問(wèn)題,從而使視頻剪輯編輯的工作量大大減輕,即使沒(méi)有前期人工編輯整合的處理,用戶也能夠正常的看到視頻播放的進(jìn)度。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的發(fā)明保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種流媒體剪輯播放進(jìn)度管理方法,其特征在于,所述方法包括步驟 SI,在播放多段剪輯時(shí),當(dāng)服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù),會(huì)同時(shí)向終端發(fā)送EOS/BOS消息; S2,終端的播放系統(tǒng)根據(jù)收到的EOS/BOS消息啟動(dòng)對(duì)PTS的偵聽(tīng); S3,在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值; S4,將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為是PTS發(fā)生了非翻轉(zhuǎn)跳變,執(zhí)行步驟S5 ;否則返回步驟S3繼續(xù)偵聽(tīng); S5,非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制;隨后停止偵聽(tīng),返回步驟SI等待再次收到服務(wù)器 的EOS/BOS消息直至全部剪輯播放完畢。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,步驟S4中,所述兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn)是指(I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000大于跳變閾值。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,步驟S4中,是否發(fā)生所述翻轉(zhuǎn)的判定方式為如果(PTS最大值-1當(dāng)前PTS值-前一次偵聽(tīng)的PTS值I) /90000小于跳變閾值,則判斷發(fā)生了翻轉(zhuǎn),否則認(rèn)為未發(fā)生翻轉(zhuǎn)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,如果未發(fā)生翻轉(zhuǎn),播放時(shí)間的計(jì)算公式為 播放時(shí)間=基準(zhǔn)時(shí)間+(I當(dāng)前PTS值-基準(zhǔn)PTS值I)/90000。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,如果發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式變?yōu)? 播放時(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值I)/90000。
6.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,對(duì)于所述跳變閾值,有 正常播放狀態(tài)下跳變閾值=偵聽(tīng)間隔時(shí)間*2 ; 倍速播放狀態(tài)下跳變閾值=播放倍速*關(guān)鍵幀間隔時(shí)間*2。
7.一種流媒體剪輯播放進(jìn)度管理系統(tǒng),其特征在于,所述系統(tǒng)包括消息發(fā)送模塊、偵聽(tīng)啟動(dòng)模塊、偵聽(tīng)模塊、判斷模塊和更新模塊;其中, 所述消息發(fā)送模塊,用于在播放多段剪輯時(shí),在服務(wù)器發(fā)送完一段剪輯的數(shù)據(jù)的同時(shí)向終端發(fā)送EOS/BOS消息; 所述偵聽(tīng)啟動(dòng)模塊,用于根據(jù)收到的EOS/BOS消息啟動(dòng)對(duì)PTS的偵聽(tīng); 所述偵聽(tīng)模塊,用于在偵聽(tīng)過(guò)程中,每隔一段時(shí)間取一次當(dāng)前PTS值; 所述判斷模塊,用于將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果兩次PTS值之間的變化超出了正常的計(jì)數(shù)累進(jìn),并且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為是PTS發(fā)生了非翻轉(zhuǎn)跳變,交由所述更新模塊處理;否則由所述偵聽(tīng)模塊繼續(xù)偵聽(tīng); 所述更新模塊,用于在非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制;隨后停止偵聽(tīng),等待所述消息發(fā)送模塊再次發(fā)送的EOS/BOS消息直至全部剪輯播放完畢。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述判斷模塊中,根據(jù)(I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值|)/90000是否大于跳變閾值來(lái)判斷兩次PTS值之間的變化是否超出了正常的計(jì)數(shù)累進(jìn)。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述判斷模塊中,根據(jù)(PTS最大值-I當(dāng)前PTS值-前一次偵聽(tīng)的PTS值1)/90000是否小于跳變閾值來(lái)判斷是否發(fā)生了翻轉(zhuǎn)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)中,如果判斷模塊判斷發(fā)生了翻轉(zhuǎn),則播放時(shí)間的計(jì)算公式變?yōu)? 播放時(shí)間=基準(zhǔn)時(shí)間+(PTS最大值-I當(dāng)前PTS值-基準(zhǔn)PTS值I)/90000。
全文摘要
本發(fā)明涉及流媒體技術(shù)領(lǐng)域,提供了一種流媒體剪輯播放進(jìn)度管理方法及系統(tǒng)。該方法包括步驟發(fā)送完一段剪輯的數(shù)據(jù)的同時(shí)發(fā)送EOS/BOS消息;根據(jù)收到的消息啟動(dòng)對(duì)PTS的偵聽(tīng);每隔一段時(shí)間取一次當(dāng)前PTS值;將當(dāng)前PTS值與前一次偵聽(tīng)的PTS值進(jìn)行比較,如果變化超出了正常的計(jì)數(shù)累進(jìn)且不是發(fā)生翻轉(zhuǎn)時(shí),則認(rèn)為發(fā)生了非翻轉(zhuǎn)跳變;否則繼續(xù)偵聽(tīng);非翻轉(zhuǎn)跳變時(shí),取當(dāng)前的播放時(shí)間為基準(zhǔn)時(shí)間,取當(dāng)前PTS值為對(duì)應(yīng)的基準(zhǔn)PTS值,更新播放時(shí)間和播放進(jìn)度的顯示與控制。本發(fā)明的實(shí)施例中提供了一種用于流媒體剪輯的播放進(jìn)度管理方法及系統(tǒng),能夠在多段流媒體剪輯連續(xù)播放的情況下,正常且準(zhǔn)確地顯示和控制整體播放進(jìn)度。
文檔編號(hào)H04N21/462GK102647622SQ201210122649
公開(kāi)日2012年8月22日 申請(qǐng)日期2012年4月23日 優(yōu)先權(quán)日2012年4月23日
發(fā)明者丁倩 申請(qǐng)人:青島海信傳媒網(wǎng)絡(luò)技術(shù)有限公司