本發(fā)明涉及一種自適應(yīng)視頻切片方法。
背景技術(shù):
目前為了提高服務(wù)能力和分發(fā)能力,并節(jié)約帶寬成本,視頻網(wǎng)站都會(huì)對(duì)一部分較長(zhǎng)的視頻內(nèi)容做切片處理后輸出,即根據(jù)視頻的封裝格式,將一個(gè)大的、長(zhǎng)的視頻文件切成若干個(gè)視頻分段進(jìn)行分發(fā)和服務(wù)。
如圖1所示,視頻中的聲音和圖像都是壓縮后,蓋上時(shí)間戳,打包成幀后裝在文件中,圖像和聲音有各自的壓縮算法和格式,聲音幀和圖像幀的時(shí)間關(guān)系往往是不匹配的。由于聲音和圖像在播放過(guò)程中按照自己的速度前進(jìn),故而正常的播放并不會(huì)有問(wèn)題。而播放結(jié)束時(shí),這種不匹配就會(huì)產(chǎn)生影響。
當(dāng)視頻內(nèi)容被當(dāng)成一整個(gè)視頻被播放時(shí),播放結(jié)束時(shí),由于內(nèi)容結(jié)束,并沒(méi)有后續(xù)的播放,故而這種不匹配不會(huì)產(chǎn)生任何影響。
傳統(tǒng)的基于關(guān)鍵幀圖像的切片方法,由于僅僅考慮圖像數(shù)據(jù)的正確性和連續(xù)性,完全不考慮聲音,在切片的位置,聲音和圖像的時(shí)間戳往往是不匹配的。當(dāng)視頻被切開(kāi)以后,如圖2所示,在切片的交界處,需要停止播放前一個(gè)切片,再重新開(kāi)始播放新切片,而播放新切片時(shí),圖像和聲音會(huì)一同開(kāi)始,而聲音往往應(yīng)該早于或者晚于圖像幀出現(xiàn),與正確的時(shí)間有所差異。這種差異,在觀感上即表現(xiàn)為聲音的毛刺,對(duì)于這類切片,需要播放器對(duì)這種時(shí)間線的錯(cuò)位進(jìn)行修正,否則聲音的毛刺無(wú)法消除。
目前常用的切片方法,根據(jù)切片的要求,從整個(gè)視頻中尋找若干關(guān)鍵幀圖像,作為切片點(diǎn),將視頻內(nèi)容分割開(kāi),重新組裝成小的視頻分段。這種切片方法的實(shí)現(xiàn)最為簡(jiǎn)單,然而,這種切片方法需要專門的播放器適配,使用普通的視頻播放器,播放這些切片時(shí),在播放到切片交界處時(shí)會(huì)出現(xiàn)短暫的聲音毛刺,造成視聽(tīng)體驗(yàn)的下降。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種自適應(yīng)視頻切片方法,不需要播放器專門適配,能避免播放視頻切片交界處的聲音毛刺,獲得更佳的播放試聽(tīng)體驗(yàn)。
為了達(dá)到上述目的,本發(fā)明提供一種自適應(yīng)視頻切片方法,選擇視頻關(guān)鍵幀作為切片點(diǎn),使切片點(diǎn)的視頻幀時(shí)間戳無(wú)限接近音頻幀時(shí)間戳。
該方法具體包含以下步驟:
步驟S1、確定視頻切片點(diǎn)的切片時(shí)間范圍;
步驟S2、從視頻關(guān)鍵幀列表中獲取在該切片時(shí)間范圍內(nèi)的所有視頻關(guān)鍵幀,形成切片點(diǎn)候選列表;
步驟S3、對(duì)切片點(diǎn)候選列表中的視頻關(guān)鍵幀進(jìn)行排序,選擇與音頻幀時(shí)間戳最為匹配的視頻關(guān)鍵幀作為切片點(diǎn)。
所述的步驟S1中,確定視頻切片點(diǎn)的切片時(shí)間范圍的方法包含以下步驟:
步驟S1.1、根據(jù)業(yè)務(wù)需求,確定最佳切片點(diǎn)時(shí)間戳T;
步驟S1.2、確定實(shí)際切片點(diǎn)和最佳切片點(diǎn)的最大誤差的容忍范圍t;
步驟S1.3、根據(jù)最佳切片點(diǎn)時(shí)間戳和最大誤差容忍范圍確定視頻切片點(diǎn)的切片時(shí)間范圍[T-t,T+t]。
所述的步驟S1.1中,所述的最佳切片點(diǎn)時(shí)間戳T的選擇需要滿足條件:分段數(shù)目合理、分段后文件大小利于存儲(chǔ)和分發(fā)調(diào)度。
所述的步驟S1.2中,所述的最大誤差的容忍范圍t根據(jù)采用的音頻和視頻的格式確定,該最大誤差的容忍范圍t需滿足基本條件:在該最大誤差的容忍范圍t內(nèi)能找到音頻時(shí)間戳和視頻時(shí)間戳完全相同的點(diǎn)。
所述的步驟S1中,所述的步驟S3中,對(duì)切片點(diǎn)候選列表中的視頻關(guān)鍵幀進(jìn)行排序選擇的方法包含以下步驟:
步驟S3.1、計(jì)算切片點(diǎn)候選列表中每一個(gè)視頻關(guān)鍵幀的時(shí)間戳和下一個(gè)音頻幀的時(shí)間戳之間的絕對(duì)差值,作為該視頻關(guān)鍵幀的得分;
步驟S3.2、按照得分大小對(duì)視頻關(guān)鍵幀進(jìn)行排序,選擇得分最小的視頻關(guān)鍵幀作為切片點(diǎn),如果得分最小的視頻關(guān)鍵幀有多個(gè),則進(jìn)行步驟S3.3;
步驟S3.3、計(jì)算得分相同的視頻關(guān)鍵幀的時(shí)間戳和最佳切片點(diǎn)時(shí)間戳的絕對(duì)差值,按照絕對(duì)差值的大小對(duì)視頻關(guān)鍵幀進(jìn)行排序,選擇絕對(duì)差值最小的視頻關(guān)鍵幀作為切片點(diǎn)。
本發(fā)明不需要播放器專門適配,能避免播放視頻切片交界處的聲音毛刺,獲得更佳的播放試聽(tīng)體驗(yàn)。
附圖說(shuō)明
圖1是背景技術(shù)中視頻中聲音和圖像的時(shí)間關(guān)系。
圖2是背景技術(shù)中傳統(tǒng)視頻切片方法產(chǎn)生聲音毛刺的示意圖。
圖3是本發(fā)明提供的一種自適應(yīng)視頻切片方法的流程圖。
具體實(shí)施方式
以下根據(jù)圖3具體說(shuō)明本發(fā)明的較佳實(shí)施例。
如圖3所示,本發(fā)明提供一種自適應(yīng)視頻切片方法,保證切片點(diǎn)的視頻幀時(shí)間戳和音頻幀時(shí)間戳相等,該方法具體包含以下步驟:
步驟S1、確定視頻切片點(diǎn)的切片時(shí)間范圍;
步驟S2、從視頻關(guān)鍵幀列表中獲取在該切片時(shí)間范圍內(nèi)的所有視頻關(guān)鍵幀,形成切片點(diǎn)候選列表;
所述的視頻關(guān)鍵幀所在的數(shù)據(jù)包具有專門的標(biāo)志標(biāo)識(shí),用于標(biāo)識(shí)視頻關(guān)鍵幀;
步驟S3、對(duì)切片點(diǎn)候選列表中的視頻關(guān)鍵幀進(jìn)行排序,選擇與音頻幀時(shí)間戳最為匹配的視頻關(guān)鍵幀作為切片點(diǎn)。
所述的步驟S1中,確定視頻切片點(diǎn)的切片時(shí)間范圍的方法包含以下步驟:
步驟S1.1、根據(jù)業(yè)務(wù)需求,確定最佳切片點(diǎn)時(shí)間戳T;
所述的最佳切片點(diǎn)時(shí)間戳T的選擇需要滿足條件:分段數(shù)目合理、分段后文件大小利于存儲(chǔ)和分發(fā)調(diào)度;
如果分段數(shù)目較少,則單個(gè)分段文件會(huì)較大,這樣對(duì)存儲(chǔ)較為友好,但是不利于分發(fā)和服務(wù)調(diào)度,反之,如果分段數(shù)目較大,則單個(gè)分段文件會(huì)較小,利用分發(fā)和服務(wù)調(diào)度,但不便于存儲(chǔ);
步驟S1.2、確定實(shí)際切片點(diǎn)和最佳切片點(diǎn)的最大誤差的容忍范圍t;
所述的最大誤差的容忍范圍t根據(jù)采用的音頻和視頻的格式確定,該最大誤差的容忍范圍t需滿足基本條件:在該最大誤差的容忍范圍t內(nèi)能找到音頻時(shí)間戳和視頻時(shí)間戳完全相同的點(diǎn),所述的最大誤差的容忍范圍t在滿足基本條件的基礎(chǔ)上,越小越好;
步驟S1.3、根據(jù)最佳切片點(diǎn)時(shí)間戳和最大誤差容忍范圍確定視頻切片點(diǎn)的切片時(shí)間范圍[T-t,T+t]。
所述的步驟S3中,對(duì)切片點(diǎn)候選列表中的視頻關(guān)鍵幀進(jìn)行排序選擇的方法包含以下步驟:
步驟S3.1、計(jì)算切片點(diǎn)候選列表中每一個(gè)視頻關(guān)鍵幀的時(shí)間戳和下一個(gè)音頻幀的時(shí)間戳之間的絕對(duì)差值,作為該視頻關(guān)鍵幀的得分;
步驟S3.2、按照得分大小對(duì)視頻關(guān)鍵幀進(jìn)行排序,選擇得分最小的視頻關(guān)鍵幀作為切片點(diǎn),如果得分最小的視頻關(guān)鍵幀有多個(gè),則進(jìn)行步驟S3.3;
步驟S3.3、計(jì)算得分相同的視頻關(guān)鍵幀的時(shí)間戳和最佳切片點(diǎn)時(shí)間戳的絕對(duì)差值,按照絕對(duì)差值的大小對(duì)視頻關(guān)鍵幀進(jìn)行排序,選擇絕對(duì)差值最小的視頻關(guān)鍵幀作為切片點(diǎn)。
針對(duì)聲音毛刺產(chǎn)生的原因,本發(fā)明在切片視頻的時(shí)候,盡量保證切片點(diǎn)的視頻幀時(shí)間戳和音頻幀時(shí)間戳相等,在播放后一個(gè)切片時(shí),聲音就不會(huì)與正確的時(shí)間線產(chǎn)生錯(cuò)位,也不需要播放器做專門的適配。
相比于傳統(tǒng)的基于關(guān)鍵幀圖像的視頻切片方法,本發(fā)明提出的方法可以無(wú)需任何客戶端的適配而消除播放切片的聲音毛刺,帶來(lái)更好的視聽(tīng)體驗(yàn)。在實(shí)際的使用中,升級(jí)客戶端意味著大規(guī)模升級(jí)客戶端,非常的繁瑣,且不可控制。此外很多常用的播放器,必入頁(yè)面播放視頻所使用Flash和HTML5播放器都無(wú)法隨意按需修改。本發(fā)明所提出的方法,在消除毛刺的同時(shí),讓使用者可以完全不受這些問(wèn)題所困擾。
在則,本發(fā)明所提出的方法,擁有更強(qiáng)的適應(yīng)性。如果業(yè)務(wù)需求對(duì)切片點(diǎn)的選擇范圍限制很大,本發(fā)明即使找不到時(shí)間戳完全匹配的切片點(diǎn),也能找到匹配度最高的切片點(diǎn)(即,切片點(diǎn)的視頻幀時(shí)間戳無(wú)限接近音頻幀時(shí)間戳),盡可能減少毛刺的時(shí)長(zhǎng),優(yōu)化體驗(yàn)。
本發(fā)明的方法相比于傳統(tǒng)方法,在算法上和實(shí)現(xiàn)成本上增加并不多,而且由于現(xiàn)代處理器對(duì)向量計(jì)算的優(yōu)化,性能上的損失也非常小,相比于上述的益處,這些弊端可謂微乎其微。
本發(fā)明提供的切片方法已經(jīng)在www.bilibili.com線上使用,超過(guò)半年,根據(jù)實(shí)測(cè),確定了最長(zhǎng)10秒的關(guān)鍵幀距離,最佳切片點(diǎn)時(shí)間戳位置為6分鐘的整數(shù)倍,容忍的誤差范圍在半分鐘內(nèi),可以保證每一個(gè)切片都發(fā)生在匹配位置。產(chǎn)生的視頻切片供該網(wǎng)站頁(yè)面上使用的Flash播放器(無(wú)法修改播放內(nèi)核)播放,上線以來(lái)從未發(fā)現(xiàn)聲音的毛刺或接到類似的反饋。
盡管本發(fā)明的內(nèi)容已經(jīng)通過(guò)上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見(jiàn)的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來(lái)限定。