基於mpeg-4的流媒體伺服器端配置緩衝區的方法及系統的製作方法
2023-10-10 02:24:54 2
專利名稱:基於mpeg-4的流媒體伺服器端配置緩衝區的方法及系統的製作方法
技術領域:
本發明涉及通信技術領域,尤其涉及一種基於MPEG-4的流媒體伺服器端配置緩衝區的方法及系統。
背景技術:
伺服器端緩衝技術是一種應用級視頻質量控制技術,其想是在伺服器端劃分一塊內存作為緩衝區,通過緩衝一定數據量來平滑網絡抖動。如圖1所示,filling_rate(t)表示t刻已經編碼的視頻流填入緩衝區的速度,如果要求編碼視流無損失地填入緩衝區,這時,filling_rate(t)實際上等於當視頻編碼碼率。Outing_rate (t)表示t時刻視頻流流出緩衝的速度,因為視頻流流出後隨即將通過網絡發送出去,所以0uting_rate(t)實際上等於當前網絡發送速率。BuffeHt)表示t時刻緩衝區已經緩存視頻流的總大小。由於當前IP網絡的盡最大能力的設計思想和底層硬體的局限性還不能夠提供充分可靠的服務質量保證(QoQ,因此在C/S模式傳輸時要引入伺服器端緩衝技術來彌補當前網絡傳輸的缺陷。MPEG-4的視頻編碼流碼率波動極大,它比一般的C/S模式傳輸更需要引入緩衝區來吸收這種碼率波動。伺服器端緩衝區對於基於MPEG-4的流媒體系統是非常重要的。近年來,人們對於流媒體伺服器端緩衝區管理方法提出了一些方法和設想,它們採用了不同的思路和技術方案。歸納總結,圖2所示是一種典型的MPEG-4視頻流網絡傳輸架構。在發送端,由自適應的MPEG-4編碼器對原始視頻流進行編碼、打包後傳遞給RTP/ UDP/IP模塊,通過網絡傳輸到接收端。這些成功接收的包以發送端相反的順序通過RTP/ UDP/IP模塊,由MPEG-4解碼器進行解碼。同時接收端根據數據包到達的情況計算出網絡傳輸狀況。通過實時傳輸控制協議(RTCP)反饋給發送端。發送端根據這些反饋信息調整編碼參數。在圖2所示的典型的視頻流傳輸框架中,現有的伺服器緩衝算法主要有兩種途徑。1、編碼前調整編碼幀率。2、編碼後丟幀控制。當緩衝區佔有率超過50%時,就假定它已經開始出現溢出的苗頭,從而開始隔幀編碼。這種假定在帶寬資源很窄的網絡中或在無線視頻傳輸中尤為合理的,在這些情形下, 緩衝區的數據還不一定馬上就會被調度出去,而編碼後的MPEG-4視頻數據卻要不斷地進入緩衝區,如果此時不控制進入緩衝區的MPEG-4速率,緩衝區就會有溢出的危險。一旦緩衝區剩餘容量達到一頂的警戒時,現有的算法都是採用拋棄一些非重要的楨來減緩緩衝區的壓力。現有技術解決了緩衝區溢出的危險,但是卻影響了流媒體的質量,使得解碼出來的圖像視頻存在一定的失真。
發明內容
本文提出的伺服器端緩衝區動態配置算法充分考慮了 MPEG-4視頻編碼流的特點,在儘量保證不丟幀的前提下,通過動態配置緩衝區的容量和調整幀的編碼率來很好地預防緩衝區溢出和提高有效解碼率,進一步提高了視頻質量。本算法非常適合系統資源足夠、帶寬窄或強實時性的視頻流式傳輸。為了解決上述問題,本發明提出了一種基於MPEG-4的流媒體伺服器端配置緩衝區的方法,所述方法包括計算當前緩衝區中已經緩存視頻流的緩存佔有率;判斷所述緩存佔有率是大於預設的第一閾值佔有率且小於第二閾值佔有率,所述第二閾值佔有率大於第一閾值佔有率;如果所述緩存佔有率小於第一閾值,則調整現有緩衝區的大小;如果所述緩存佔有率超過第一閾值且小於第二閾值佔有率,則通過控制幀率來調整MPEG-4視頻編碼碼率;如果所述緩存佔有率超過第二閾值佔有率,則通過動態丟幀算法釋放幀。所述調整現有緩衝區的大小計算式為緩衝區佔有率*緩衝區大小*(1+(1_緩衝區佔有率)*0. 1)。所述通過控制幀率來調整MPEG-4視頻編碼碼率包括當緩存佔有率大於第一閾值佔有率且小於第三閾值佔有率時,對MPEG-4視頻編碼進行隔幀編碼;當緩存佔有率大於第三閾值佔有率且小於第二閾值佔有率時,對MPEG-4視頻編碼進行隔三幀編碼。所述通過動態丟幀算法釋放幀包括判斷緩衝區的空閒區是否大於幀長,如果緩衝區的空閒區小於幀長,則先將緩衝區重要性低的幀釋放。所述通過動態丟幀算法釋放幀還包括如果緩衝區中釋放幀後滿足不了緩衝區的空閒區大於幀長,則將即將要進入的幀丟棄。所述第一閾值佔有率在百分之五十以上。相應的,本發明實施例還公開了一種基於MPEG-4的流媒體伺服器端配置緩衝區的系統,包括計算模塊,用於計算當前緩衝區已經緩存視頻流的緩存佔有率;判斷模塊,用於判斷緩存佔有率與預設的第一閾值佔有率和第二閾值佔有率間的關係,並將判斷結果返回到處理模塊中處理;處理模塊,用於根據判斷模塊反饋的判斷結果進行處理,所述處理模塊包括第一處理單元,用於在所述緩存佔有率小於第一閾值佔有率時,調整現有緩衝區的大小;第二處理單元,用於在所述緩存佔有率超過第一閾值佔有率且小於第二閾值佔有率時,通過控制幀率來調整MPEG-4視頻編碼碼率;第三處理單元,用於在所述緩存佔有率超過第二閾值佔有率時,通過動態丟幀算法釋放幀。在本發明實施例中,算法的前一部分能夠有效地防止緩衝區的溢出,這是因為在網絡帶寬一定的情況下傳輸佔有帶寬巨大的視頻數據,動態配置緩衝區充分利用了資源且保證了質量。算法的後兩部分在充分考慮到系統資源緊缺的前提下,考慮到了考慮了 MPEG-4的編解碼原理,能夠有效地提高視頻質量。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。圖1是現有技術中伺服器端緩衝區描述結構示例圖;圖2是現有技術中視頻流傳輸架構圖;圖3是本發明實施例中的基於MPEG-4的流媒體伺服器端配置緩衝區的方法流程圖;圖4是本發明實施例中的基於MPEG-4的流媒體伺服器端配置緩衝區的系統示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。本發明實施中的基於MPEG-4的流媒體伺服器端配置緩衝區的方法,主要包括計算當前緩衝區中已經緩存視頻流的緩存佔有率;判斷所述緩存佔有率是大於預設的第一閾值佔有率且小於第二閾值佔有率,所述第二閾值佔有率大於第一閾值佔有率;如果所述緩存佔有率小於第一閾值,則調整現有緩衝區的大小;如果所述緩存佔有率超過第一閾值且小於第二閾值佔有率,則通過控制幀率來調整MPEG-4視頻編碼碼率;如果所述緩存佔有率超過第二閾值佔有率,則通過動態丟幀算法釋放幀。根據圖2所示是一種典型的MPEG-4視頻流網絡傳輸架構,實質上是依據接收端計算出來的Outing_rate(t)來調節filling_rate (t)。然而這種調節方式需要反饋控制協議的參與而且編碼參數調整複雜,會增加系統資源開銷和網絡帶寬的浪費。如果改成根據 Buffer (t)來調節filling_rate (t),就無須反饋控制協議的參與,直接就用UDP協議傳輸也可達到伺服器緩衝區動態調整的目的。由前面描述可以知道,理想情況下,t時刻緩衝區已經緩存視頻流的總大小BuffeHt)等於0 t時間段內緩衝區填入的數據總和減去0 t時間段內緩衝區流出的數據總和,可用式(2)表示。Buffer{t) = ( Filling _ rate{t) - ( Outing _ rate{t)(2)
Jo—Jo—由式⑵變形成式(3)
t fitFilling _ rate =Buffer(t) + Outing _ rate(t)(3) Jo — Jo —由式(3)可以清楚地看出,filling_rate(t)調節的依據有兩種(1)根據Outing_rate(t)的變化來調節;
(2)是根據Buffer_filied⑴的值來調節。緩衝區管理控制算法分前後三部分前一部分調整buffer的大小來調節buffer, 當達到系統資源上限的時候就採用最後一部門代碼;第二部分調整MPEG-4視頻編碼器編碼參數來實現對filling_rate(t)的調節;後一部分根據各類幀重要性來淘汰重要性低的視頻幀佔據緩衝區,保證當前緩存的視頻幀都是最重要的。圖3示出了本發明實施例中的基於MPEG-4的流媒體伺服器端配置緩衝區的方法流程圖,其主要包括如下步驟S301 計算當前緩衝區已經緩存視頻流的緩存佔有率;S302:判斷緩存佔有率是否大於第一預先設置的第一閾值佔有率,如果該緩存佔有率小於預先設置的第一閾值佔有率,則進行S303,如果該緩存佔有率大於預先設置的第一閾值佔有率,則進行S304 ;S303 調整現有的緩衝區的大小;伺服器端緩衝區的起始大小是一個固定的值,比如說這裡當BuffeHt)達到50% 或者60%時的緩衝區的大小的時候,緩衝區採用一定的算法隨之增加。當緩衝區達到資源上限時,緩衝區不變而採用第二部分調整MPEG-4視頻編碼器編碼參數算法。比如系統循環讀取MPEG-4視頻流,在計算緩衝區佔有率後,如果佔有率未達到第一閾值70%情況下,調整現有緩衝區的大小為緩衝區佔有率*緩衝區大小(1+(1-緩衝區佔有率)*1/10)。S304:判斷緩存佔有率是否大於預先設置的第二閾值佔有率,如果緩存佔有率大於預先設置的第二閾值佔有率,則進入S305,如果緩存佔有率小於預先設置的第二閾值佔有率,則進入S306 ;S305 則通過幀控制來調整MPEG-4視頻編碼碼率;MPEG-4視頻編碼器的碼率之所以能夠調節主要有賴於它編碼的可伸縮性。視頻的伸縮性包括空間可伸縮性、時間可伸縮性、信噪比可伸縮性3種。空間可伸縮性和信噪比可伸縮性影響視頻流的畫面質量,時間可伸縮性影響視頻流的連續性,選擇何種伸縮性實際上取決於畫面質量和連續性之間的取捨。本文選取時間可伸縮性(即控制幀率)來調整 MPEG-4視頻編碼碼率。衡量視頻傳輸技術的好壞,不能單純以如何提高網絡利用率為標準。一方面,網絡傳輸的視頻流越多並不代表在解碼時解出的有效視頻幀越多。因為MPEG-4視頻編碼採用了幀間預測機制,如果參考幀丟了,在接收端由於錯誤傳播將造成相當一段視頻無法使用, 所以在回放時會出現停頓現象。另一方面,網絡傳輸的視頻流越多並不代表它不連續性丟幀,有時情願接收的幀數少一些,只要視頻幀丟失得較為均勻就行。算法前一部分選取時間可伸縮性(即控制幀率)來調整MPEG-4視頻編碼碼率除了起預防緩衝區溢出的作用外,實際上還起到了預防連續性丟幀的作用。具體通過幀控制來調整MPEG-4視頻編碼碼率還可以實現細化過程,比如當緩存佔有率大於第一閾值佔有率且小於第三閾值佔有率時,對MPEG-4視頻編碼進行隔幀編碼;當緩存佔有率大於第三閾值佔有率且小於第二閾值佔有率時,對MPEG-4視頻編碼進行隔三幀編碼。這裡的第一閾值佔有率小於第三閾值佔有率,第三閾值佔有率小於第二閾值佔有率。S306 則通過動態丟幀算法釋放幀。至於如何提高傳輸視頻幀的有效解碼,可先從考察MPEG-4的3類幀入手。MPEG-4 視頻幀分為3類I-V0P,P-V0P和B-V0P。為了方便表述不妨簡稱為I幀、P幀和B幀。3類編碼幀的重要性依次為I幀、P幀和B幀。同樣是P幀,前面的比後面的更重要(因為後面的P幀要參考前面的P幀才能解碼)。在緩衝區不得不丟幀的情況下,先將緩衝區中重要性低的幀釋放,直至有足夠空間為止,如果緩衝區中該釋放的幀都釋放了還是沒有足夠空間, 這時才把即將要進入的幀丟棄。具體流程如下首先需要判斷緩衝區的空閒區是否大於幀長,大於則編碼後直接進入緩衝區,如果不是的話,需要從後往前找到一幀重要性低的VOP釋放。需要說明的是,本實施例中的第一閾值佔有率一般設置在50%以上,比如為 50%,或者60%,或者100%,這裡的第一閾值佔有率、第二閾值佔有率、第三閾值佔有率都小於100%,基於上述實現過程中,這裡的第一閾值佔有率可以取值為70%、第二閾值佔有率可以取值為90 %、第三閾值佔有率可以取值為80%,當然這裡的取值可以針對具體應用和實施情況來取值。相應的,本發明實施例還提供了一種基於MPEG-4的流媒體伺服器端配置緩衝區的系統,包括計算模塊41,用於計算當前緩衝區已經緩存視頻流的緩存佔有率;判斷模塊42,用於判斷緩存佔有率與預設的第一閾值佔有率和第二閾值佔有率間的關係,並將判斷結果返回到處理模塊中處理;這裡的判斷模塊可以直接判斷緩存佔有率與第一閾值佔有率、第二閾值佔有率甚至是第三閾值佔有率之間的關係,並可以根據判斷關係將結果返回到處理單元中的各個處理單元中執行相應的任務。處理模塊43,用於根據判斷模塊反饋的判斷結果進行處理,所述處理模塊包括第一處理單元431,用於在所述緩存佔有率小於第一閾值時,調整現有緩衝區的大小;這裡的調整現有緩衝區的大小計算式可以是緩衝區佔有率*緩衝區大小*(1+(1-緩衝區佔有率)*0. 1)。第二處理單元432,用於在所述緩存佔有率超過第一閾值且小於第二閾值佔有率時,通過控制幀率來調整MPEG-4視頻編碼碼率;具體的情況可以是,當緩存佔有率大於第一閾值佔有率且小於第三閾值佔有率時,對MPEG-4視頻編碼進行隔幀編碼;當緩存佔有率大於第三閾值佔有率且小於第二閾值佔有率時,對MPEG-4視頻編碼進行隔三幀編碼。第三處理單元433,用於在所述緩存佔有率超過第二閾值佔有率時,通過動態丟幀算法釋放幀。具體的,當判斷緩衝區的空閒區是否大於幀長,如果緩衝區的空閒區小於幀長,則先將緩衝區重要性低的幀釋放。如果緩衝區中釋放幀後滿足不了緩衝區的空閒區大於幀長,則將即將要進入的幀丟棄。需要說明的是,本實施例中的第一閾值佔有率一般設置在50%以上,比如為 50%,或者60%,或者100%,這裡的第一閾值佔有率、第二閾值佔有率、第三閾值佔有率都小於100%,基於上述實現過程中,這裡的第一閾值佔有率可以取值為70%、第二閾值佔有率可以取值為90%、第三閾值佔有率可以取值為80%,當然這裡的取值可以針對具體應用和實施情況來取值。本文提出的伺服器端緩衝區動態配置算法充分考慮了 MPEG-4視頻編碼流的特點,在儘量保證不丟幀的前提下,通過動態配置緩衝區的容量和調整幀的編碼率來很好地預防緩衝區溢出和提高有效解碼率,進一步提高了視頻質量。本算法非常適合系統資源足夠、帶寬窄或強實時性的視頻流式傳輸。本發明實施例中的算法的前一部分能夠有效地防止緩衝區的溢出,這是因為在網絡帶寬一定的情況下傳輸佔有帶寬巨大的視頻數據,動態配置緩衝區充分利用了資源且保證了質量。算法的後兩部分在充分考慮到系統資源緊缺的前提下,考慮到了考慮了 MPEG-4的編解碼原理,能夠有效地提高視頻質量。
以上對本發明實施例所提供的,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種基於MPEG-4的流媒體伺服器端配置緩衝區的方法,其特徵在於,包括 計算當前緩衝區中已經緩存視頻流的緩存佔有率;判斷所述緩存佔有率是大於預設的第一閾值佔有率且小於第二閾值佔有率,所述第二閾值佔有率大於第一閾值佔有率;如果所述緩存佔有率小於第一閾值,則調整現有緩衝區的大小; 如果所述緩存佔有率超過第一閾值且小於第二閾值佔有率,則通過控制幀率來調整 MPEG-4視頻編碼碼率;如果所述緩存佔有率超過第二閾值佔有率,則通過動態丟幀算法釋放幀。
2.如權利要求1所述的方法,其特徵在於,所述調整現有緩衝區的大小計算式為緩衝區佔有率*緩衝區大小* (1+(1"緩衝區佔有率)*0. 1)。
3.如權利要求1所述的方法,其特徵在於,所述通過控制幀率來調整MPEG-4視頻編碼碼率包括當緩存佔有率大於第一閾值佔有率且小於第三閾值佔有率時,對MPEG-4視頻編碼進行隔幀編碼;當緩存佔有率大於第三閾值佔有率且小於第二閾值佔有率時,對MPEG-4視頻編碼進行隔三幀編碼。
4.如權利要求1所述的方法,其特徵在於,所述通過動態丟幀算法釋放幀包括判斷緩衝區的空閒區是否大於幀長,如果緩衝區的空閒區小於幀長,則先將緩衝區重要性低的幀釋放。
5.如權利要求4所述的方法,其特徵在於,所述通過動態丟幀算法釋放幀還包括 如果緩衝區中釋放幀後滿足不了緩衝區的空閒區大於幀長,則將即將要進入的幀丟棄。
6.如權利要求1至5任一項所述的方法,其特徵在於,所述第一閾值佔有率在百分之五十以上。
7.一種基於MPEG-4的流媒體伺服器端配置緩衝區的系統,其特徵在於,包括 計算模塊,用於計算當前緩衝區已經緩存視頻流的緩存佔有率;判斷模塊,用於判斷緩存佔有率與預設的第一閾值佔有率和第二閾值佔有率間的關係,並將判斷結果返回到處理模塊中處理;處理模塊,用於根據判斷模塊反饋的判斷結果進行處理,所述處理模塊包括 第一處理單元,用於在所述緩存佔有率小於第一閾值佔有率時,調整現有緩衝區的大第二處理單元,用於在所述緩存佔有率超過第一閾值佔有率且小於第二閾值佔有率時,通過控制幀率來調整MPEG-4視頻編碼碼率;第三處理單元,用於在所述緩存佔有率超過第二閾值佔有率時,通過動態丟幀算法釋放幀。
全文摘要
本發明實施例公開了基於MPEG-4的流媒體伺服器端配置緩衝區的方法及系統,其中該方法包括計算當前緩衝區中已經緩存視頻流的緩存佔有率;判斷所述緩存佔有率是大於預設的第一閾值佔有率且小於第二閾值佔有率,所述第二閾值佔有率大於第一閾值佔有率;如果所述緩存佔有率小於第一閾值,則調整現有緩衝區的大小;如果所述緩存佔有率超過第一閾值且小於第二閾值佔有率,則通過控制幀率來調整MPEG-4視頻編碼碼率;如果所述緩存佔有率超過第二閾值佔有率,則通過動態丟幀算法釋放幀。本發明實施例在儘量保證不丟幀的前提下,通過動態配置緩衝區的容量和調整幀的編碼率來很好地預防緩衝區溢出和提高有效解碼率,進一步提高了視頻質量。
文檔編號H04N21/6437GK102378065SQ20111031837
公開日2012年3月14日 申請日期2011年10月19日 優先權日2011年10月19日
發明者羅春耕, 羅晴明 申請人:江西省南城縣網信電子有限公司