專利名稱:去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機多媒體技術(shù)的視頻播放容錯技術(shù),特別涉及一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法。
背景技術(shù):
網(wǎng)絡(luò)點播是網(wǎng)絡(luò)中常用的技術(shù)手段,但是網(wǎng)絡(luò)點播的節(jié)目內(nèi)容受到網(wǎng)絡(luò)環(huán)境的影響會造成種種錯誤,從而使用戶端顯示不清楚,尤其是容易出現(xiàn)馬賽克現(xiàn)象。例如,網(wǎng)絡(luò)傳輸中可能存在的數(shù)據(jù)丟包以及延時到達會對網(wǎng)絡(luò)點播造成影響,在點播過程中用戶拖動進度條也會造成鏈路中斷,使播放器的顯示設(shè)備丟失,解碼器解碼失敗以及播放器的數(shù)據(jù)幀出錯會影響網(wǎng)絡(luò)點播的視頻效果。
根據(jù)MPEG的定義,幀分為IDR幀,B幀和P幀。其中,IDR幀是關(guān)鍵幀,采用基準(zhǔn)幀模式,只提供幀內(nèi)壓縮,即把幀圖像壓縮到IDR幀時,僅僅考慮了幀內(nèi)的圖像。IDR幀壓縮不能除去幀間冗余度。幀內(nèi)壓縮基于離散余弦變換,類似于JPEG和H. 261圖像中使用離散余弦變換的壓縮標(biāo)準(zhǔn)。IDR幀壓縮可以得到6:1比而不產(chǎn)生任何可覺察的模糊現(xiàn)象。B幀為雙向幀間編碼。它從前面和后面的IDR幀或P幀中提取數(shù)據(jù)。B幀基于當(dāng)前幀與前一幀和后一幀圖像之間的差別進行壓縮。B幀壓縮可以達到200:1壓縮比,其文件尺寸一般為IDR幀壓縮尺寸的15%,不到P幀壓縮尺寸的一半。P幀采用了前向預(yù)測,即P幀是根據(jù)前面的P幀或I幀預(yù)測得來的。P幀采用預(yù)測編碼,利用相鄰幀的一般統(tǒng)計信息進行預(yù)測。也就是說,它考慮運動特性,提供幀間編碼。P幀預(yù)測當(dāng)前幀與前面最近的IDR幀或P幀的差別。
當(dāng)視頻是以H. 264編碼的ASF文件格式時,由于H. 264具有靈活宏塊次序,通過設(shè)置宏塊次序映射來任意地指配宏塊到不同的片組,但是這種靈活宏塊次序模式打亂了原宏塊順序,降低了編碼效率,增加了延時,但是增強了抗誤碼的性能。當(dāng)一個片組的數(shù)據(jù)丟失時可以用另一個片組的數(shù)據(jù)進行錯誤掩蓋。盡管有的編碼器,如X264的一幀就是一個片,但它依然能用相鄰幀作錯誤掩蓋.使用錯誤掩蓋的容錯技術(shù)最主要的不適是倒引起馬賽克現(xiàn)象,這會很大影響用戶體驗。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,可以在視頻解碼還原上實現(xiàn)優(yōu)化的濾波,避免黑屏及馬賽克現(xiàn)象,較好的滿足用戶的體驗需求。
為解決上述技術(shù)問題,本發(fā)明一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法的技術(shù)方案是,包括以下步驟
第一步,檢測到客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀有錯誤;
第二步,判斷數(shù)據(jù)幀出錯的類別,如果數(shù)據(jù)幀出現(xiàn)鏈路中斷的錯誤則重建過濾器鏈路,并設(shè)置需要同步標(biāo)志,如果數(shù)據(jù)幀出現(xiàn)數(shù)據(jù)不同步或者解碼失敗的錯誤則直接設(shè)置需要同步標(biāo)志;
第三步,判斷后繼的數(shù)據(jù)幀是否包含同步標(biāo)志,若不包含同步標(biāo)志,則進行正常的播放流程,若包含同步標(biāo)志,則判斷后繼的數(shù)據(jù)幀是不是IDR幀;
第四步,如果后繼的數(shù)據(jù)幀是IDR幀,則清空客戶播放端的緩沖區(qū)中
的數(shù)據(jù)幀,清除需要同步標(biāo)志,并進行正常的播放流程,如果后繼的數(shù)據(jù)
幀不是IDR幀,則丟棄該數(shù)據(jù)幀,讀取下一個數(shù)據(jù)幀,并判斷該下一個數(shù)據(jù)幀是不是IDR幀,并重復(fù)第四步。
本發(fā)明通過對客戶播放端緩沖區(qū)數(shù)據(jù)的檢測,當(dāng)檢測到有出錯幀或者丟失幀時,丟棄后繼的非IDR幀,直到出現(xiàn)新的IDR幀,這樣有效的去除馬賽克現(xiàn)象。
下面結(jié)合附圖和實施例對本發(fā)明作進一步詳細(xì)的說明
圖l為本發(fā)明流程示意圖2為本發(fā)明客戶播放端緩沖區(qū)數(shù)據(jù)示意圖。
具體實施例方式
如圖1所示,在采用基于DirectShow (DirectShow是微軟公司提供的一套在Windows平臺上進行流媒體處理的開發(fā)包,它支持多媒體流的捕捉和回放。)機制的播放器播放網(wǎng)絡(luò)視頻時,需要對數(shù)據(jù)幀進行判斷處理,首先檢測客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀是否有錯誤,如果沒有錯誤,則進行正常的播放程序,如果檢測到客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀有錯誤,并判斷其出錯的類別。
在判斷數(shù)據(jù)幀出錯類別時, 一般分為以下三種錯誤類別a,數(shù)據(jù)幀出現(xiàn)鏈路中斷錯誤;b,解碼器解碼失??;c,數(shù)據(jù)幀的數(shù)據(jù)不同步。當(dāng)用戶拖動進度條或者出現(xiàn)丟包時,數(shù)據(jù)幀出現(xiàn)鏈路中斷錯誤,需要重建過濾器鏈路,并在播放數(shù)據(jù)幀上設(shè)置需要同步標(biāo)志;當(dāng)出現(xiàn)解碼器解碼失敗的錯誤時,意味著數(shù)據(jù)可能出錯,這是需要將這個數(shù)據(jù)幀丟棄,并且需要直接
在數(shù)據(jù)幀上設(shè)置需要同步標(biāo)志;當(dāng)出現(xiàn)數(shù)據(jù)幀的數(shù)據(jù)不同步的錯誤時,則在數(shù)據(jù)幀上設(shè)置需要同步標(biāo)志。若沒有出現(xiàn)數(shù)據(jù)幀錯誤時,則不在數(shù)據(jù)幀上設(shè)置需要同步標(biāo)志。
檢測數(shù)據(jù)幀上是否設(shè)置了需要同步標(biāo)志,如果若不包含同步標(biāo)志,則進行正常的播放流程,若包含同步標(biāo)志,則判斷后繼的數(shù)據(jù)幀是不是IDR幀。在本發(fā)明中,IDR設(shè)置為50至100幀編碼一次,本發(fā)明中一個IDR幀刷新序列也可以取80幀。
在本發(fā)明中,客戶播放端的緩沖區(qū)至少存有20秒的播放數(shù)據(jù),并且,如圖2所示,客戶播放端的緩沖區(qū)的數(shù)據(jù)包括IDR幀和P幀。其中,IDR幀為即時刷新的I幀,IDR幀之后的圖像不會再以IDR幀之前的圖像為參考,它采用基準(zhǔn)幀模式,只提供幀內(nèi)壓縮,P幀為前向參考幀,在編解碼時要以前面的幀來作參考,它考慮運動特性,提供幀間編碼。圖2中的P1幀、P2幀和P3幀為出錯幀或者丟失幀,如果播放這些幀,會引起馬賽克現(xiàn)象,因此,本發(fā)明將該幀丟棄,判斷后繼的數(shù)據(jù)幀是不是IDR幀。
如果后繼的數(shù)據(jù)幀是IDR幀,則清空客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀,去除需要同步標(biāo)志,并進行正常的播放流程,如果后繼的數(shù)據(jù)幀不是IDR幀,則丟棄該數(shù)據(jù)幀,讀取下一個數(shù)據(jù)幀,并判斷該下一個數(shù)據(jù)幀是不是IDR幀,并重復(fù)第四歩。本發(fā)明通過對客戶播放端緩沖區(qū)的數(shù)據(jù)進行檢測,及時發(fā)現(xiàn)數(shù)據(jù)幀的 錯誤,并對數(shù)據(jù)幀出現(xiàn)的各種錯誤做相應(yīng)的處理,丟棄后繼的非IDR幀并
播放新的IDR幀,實現(xiàn)去除網(wǎng)絡(luò)視頻馬賽克現(xiàn)象的技術(shù)目標(biāo)。
權(quán)利要求
1. 一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,其特征在于,包括以下步驟第一步,檢測到客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀有錯誤;第二步,判斷數(shù)據(jù)幀出錯的類別,如果數(shù)據(jù)幀出現(xiàn)鏈路中斷的錯誤則重建過濾器鏈路,并設(shè)置需要同步標(biāo)志,如果數(shù)據(jù)幀出現(xiàn)數(shù)據(jù)不同步或者解碼失敗的錯誤則直接設(shè)置需要同步標(biāo)志;第三步,判斷后繼的數(shù)據(jù)幀是否包含同步標(biāo)志,若不包含同步標(biāo)志,則進行正常的播放流程,若包含同步標(biāo)志,則判斷后繼的數(shù)據(jù)幀是不是IDR幀;第四步,如果后繼的數(shù)據(jù)幀是IDR幀,則清空客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀,清除需要同步標(biāo)志,并進行正常的播放流程,如果后繼的數(shù)據(jù)幀不是IDR幀,則丟棄該數(shù)據(jù)幀,讀取下一個數(shù)據(jù)幀,并判斷該下一個數(shù)據(jù)幀是不是IDR幀,并重復(fù)第四步。
2. 根據(jù)權(quán)利要求1所述的一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,其特征在于,客戶播放端的緩沖區(qū)至少存有20秒的播放數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,其特征在于,客戶播放端的緩沖區(qū)的數(shù)據(jù)包括IDR幀和P幀。
4. 根據(jù)權(quán)利要求1所述的一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,其特征在于,所述的IDR設(shè)置為50至100幀編碼一次。
5. 根據(jù)權(quán)利要求4所述的一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,其特征在于,所述的IDR設(shè)置為80幀編碼一次。
全文摘要
本發(fā)明公開了一種去除網(wǎng)絡(luò)視頻播放馬賽克現(xiàn)象的容錯方法,包括以下步驟1.檢測到客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀有錯誤;2.判斷數(shù)據(jù)幀出錯的類別,并作出相應(yīng)的措施;3.判斷后繼的數(shù)據(jù)幀是否包含同步標(biāo)志,若包含同步標(biāo)志,則判斷后繼的數(shù)據(jù)幀是不是IDR幀;4.若后繼的數(shù)據(jù)幀是IDR幀,則清空客戶播放端的緩沖區(qū)中的數(shù)據(jù)幀,去除需要同步標(biāo)志,并進行正常的播放流程,如果后繼的數(shù)據(jù)幀不是IDR幀,則丟棄該數(shù)據(jù)幀,讀取下一個數(shù)據(jù)幀,并判斷該下一個數(shù)據(jù)幀是不是IDR幀,并重復(fù)第四步。本發(fā)明通過對客戶播放端緩沖區(qū)數(shù)據(jù)的檢測,當(dāng)檢測到有出錯幀或者丟失幀時,丟棄后繼的非IDR幀,有效的去除馬賽克現(xiàn)象。
文檔編號H04N7/66GK101547369SQ20081004319
公開日2009年9月30日 申請日期2008年3月26日 優(yōu)先權(quán)日2008年3月26日
發(fā)明者李海良, 宇 王, 陳明燦 申請人:盛大計算機(上海)有限公司