本發(fā)明涉及視頻會議技術(shù)領(lǐng)域,尤其涉及一種視頻會議系統(tǒng)的視頻流輪播方法。
背景技術(shù):
現(xiàn)有的視頻會議系統(tǒng),通常均具備4x4(16人)及以上的布局顯示方式。布局可容納的人數(shù)越多,每一路視頻流在布局顯示的畫面就越小,從而影響到用戶體驗。因此,考慮到用戶觀看視頻畫面的體驗,一般來說最大選擇4x4布局顯示方式。但是,如果與會視頻終端超過了布局可容納最大方數(shù),那么如果要將不在布局中的視頻流顯示到布局中,則需要人為通過會控系統(tǒng)將其拉入布局。
輪播功能就是基于這種與會視頻終端較多的視頻會議場景下提出的一種解決方案。所謂的輪播功能,即定時的將與會的視頻流解碼數(shù)據(jù),添加到布局中指定位置進行視頻畫面合成編碼,再發(fā)送給各個會場終端,無需人為進行會控操作。隨著會議的進行,每個會場都可以觀察到其他會場的視頻畫面。
現(xiàn)有的會議視頻輪播技術(shù),主要存在以下兩個缺點:
第一,對于沒在輪播合成畫面中的會場終端,并沒有停止向服務(wù)器發(fā)送視頻流,而這些視頻流對于當(dāng)下輪播合成畫面是沒有用的。在與會視頻終端較多的情況下,對服務(wù)器的下行帶寬造成較大壓力,容易造成網(wǎng)絡(luò)擁塞,導(dǎo)致在輪播合成畫面中的視頻流丟包,影響體驗;
第二,服務(wù)器對于沒有在輪播合成畫面中的視頻流會繼續(xù)解碼,從而達到輪播切換的過程平滑。但是,在某個輪播周期內(nèi),并沒有必要對沒在輪播合成畫面中的視頻流一直解碼,而只要在需要合成某路視頻流時,提前一定時間對視頻流進行解碼,并對解碼數(shù)據(jù)進行緩存。這樣,當(dāng)需要合成某路視頻流時,能夠從解碼緩存中獲取解碼數(shù)據(jù)進行合成,即可實現(xiàn)平滑切換。如果在某個輪播周期內(nèi),一直對不在輪播合成畫面中的視頻流進行解碼,其實對于服務(wù)器的硬件性能是一種浪費,也降低了服務(wù)器可支持的最大并發(fā)方數(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題,在于提供一種視頻會議系統(tǒng)的視頻流輪播方法,有效降低帶寬壓力,提升服務(wù)器可支持的最大并發(fā)方數(shù)。
本發(fā)明是這樣實現(xiàn)的:
一種視頻會議系統(tǒng)的視頻流輪播方法,包括如下步驟:
步驟1、mcu服務(wù)器配置輪播預(yù)測時間t,根據(jù)輪播預(yù)測時間t確定出每一輪播周期內(nèi)的預(yù)測開始時刻t1和預(yù)測結(jié)束時刻t2;
步驟2、當(dāng)?shù)竭_本輪輪播的預(yù)測開始時刻t1時,mcu服務(wù)器向下一輪輪播的視頻終端發(fā)送開始發(fā)送視頻流的控制指令,下一輪輪播的視頻終端接收到該開始發(fā)送視頻流的控制指令后,向mcu服務(wù)器發(fā)送對應(yīng)的視頻流;
步驟3、mcu服務(wù)器向下一輪輪播的視頻終端發(fā)送關(guān)鍵幀請求,下一輪輪播的視頻終端接收到該關(guān)鍵幀請求后,將視頻畫面編碼成關(guān)鍵幀,并發(fā)送給mcu服務(wù)器;
步驟4、mcu服務(wù)器開啟下一輪輪播的視頻流的解碼開關(guān),對接收的下一輪輪播的視頻流進行解碼,將解碼后的視頻數(shù)據(jù)存儲至解碼緩存隊列中;
步驟5、當(dāng)?shù)竭_本輪輪播的預(yù)測結(jié)束時刻t2時,mcu服務(wù)器將本輪輪播的視頻終端對應(yīng)的視頻畫面移出輪播合成畫面;
步驟6、mcu服務(wù)器向本輪輪播的視頻終端發(fā)送停止發(fā)送視頻流的指令,本輪輪播的視頻終端接收到該停止發(fā)送視頻流的指令后,停止向mcu服務(wù)器發(fā)送對應(yīng)的視頻流;
步驟7、mcu服務(wù)器重置本輪輪播的視頻終端的視頻流的解碼器,并關(guān)閉本輪輪播的視頻流的解碼開關(guān),暫停解碼功能;
步驟8、mcu服務(wù)器從下一輪輪播的視頻終端的視頻流的解碼緩存隊列中獲取視頻數(shù)據(jù)進行輪播合成畫面的合成和編碼,并發(fā)送給所有視頻終端。
進一步地,所述步驟1中mcu服務(wù)器配置輪播預(yù)測時間t具體為:
所述mcu服務(wù)器根據(jù)視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小、解碼器的解碼預(yù)估時間以及網(wǎng)絡(luò)延遲預(yù)估時間,獲得最優(yōu)的輪播預(yù)測時間t;
所述輪播預(yù)測時間t是通過視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小以及自定義預(yù)留時間計算出來的,所述自定義預(yù)留時間是通過解碼器的解碼預(yù)估時間和網(wǎng)絡(luò)延遲預(yù)估時間得到的,其計算公式為:
輪播預(yù)測時間t=抖動緩沖器最小緩存大小/視頻終端的發(fā)送幀率+解碼器的解碼預(yù)估時間+網(wǎng)絡(luò)延遲預(yù)估時間;
其中,輪播預(yù)測時間t的單位為秒,抖動緩沖器最小緩存大小的單位為幀,視頻終端的發(fā)送幀率的單位為幀/秒,解碼器的解碼預(yù)估時間和網(wǎng)絡(luò)延遲預(yù)估時間的單位為秒。
進一步地,所述步驟4和步驟8構(gòu)成的解碼過程具體為:
mcu服務(wù)器接收下一輪輪播的視頻終端發(fā)送過來的視頻流,并存儲至mcu服務(wù)器上對應(yīng)的抖動緩沖器內(nèi)進行緩存,mcu服務(wù)器開啟下一輪輪播的視頻流的解碼開關(guān),mcu服務(wù)器上對應(yīng)的解碼器從抖動緩沖器內(nèi)獲取對應(yīng)的視頻流進行解碼,并將解碼后的視頻數(shù)據(jù)存儲至mcu服務(wù)器上對應(yīng)的解碼緩存隊列中;
mcu服務(wù)器從對應(yīng)的解碼緩存隊列中獲取相應(yīng)的視頻數(shù)據(jù)進行輪播合成畫面的合成,并將合成后的視頻數(shù)據(jù)通過mcu服務(wù)器上的編碼器進行編碼,再將編碼后的輪播合成畫面發(fā)送給所有視頻終端。
本發(fā)明具有如下優(yōu)點:
本發(fā)明通過引入帶有終端視頻流發(fā)送控制的控制指令的rtcp報文,以及提前預(yù)測處理功能,在保證輪播平滑切換的前提下,可以在高并發(fā)條件下有效地降低服務(wù)器的下行帶寬壓力,改善網(wǎng)絡(luò)擁塞情況。同時,也可以充分地利用服務(wù)器的硬件性能,提高服務(wù)器的并發(fā)性能,即可并發(fā)參會的視頻方數(shù)。
本發(fā)明給出了預(yù)測時間計算公式,mcu服務(wù)器根據(jù)視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小、解碼器的解碼能力(解碼器的解碼預(yù)估時間)以及網(wǎng)絡(luò)傳輸情況(網(wǎng)絡(luò)延遲預(yù)估時間),獲得最優(yōu)的輪播預(yù)測時間t。如果設(shè)置的預(yù)測時間大于最優(yōu)的輪播預(yù)測時間t,那么需要同時解8路視頻流的時間也就越長,對于服務(wù)器并發(fā)解碼壓力也就越大。
附圖說明
下面參照附圖結(jié)合實施例對本發(fā)明作進一步的說明。
圖1為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中輪播周期及預(yù)測時間時間軸示意圖。
圖2為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中第n個輪播周期示意圖。
圖3為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中視頻流開始發(fā)流控制指令示意圖。
圖4為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中關(guān)鍵幀請求響應(yīng)示意圖
圖5為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中mcu服務(wù)器解碼合成編碼處理示意圖。
圖6為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中視頻流停止發(fā)流控制指令示意圖。
圖7為本發(fā)明一種視頻會議系統(tǒng)的視頻流輪播方法中第n+1個輪播周期示意圖。
具體實施方式
為使得本發(fā)明更明顯易懂,現(xiàn)以一優(yōu)選實施例,并配合附圖作詳細說明如下。
本發(fā)明的一種視頻會議系統(tǒng)的視頻流輪播方法,其特征在于:包括如下步驟:
步驟1、mcu服務(wù)器配置輪播預(yù)測時間t,根據(jù)輪播預(yù)測時間t確定出每一輪播周期內(nèi)的預(yù)測開始時刻t1和預(yù)測結(jié)束時刻t2;
所述mcu服務(wù)器配置輪播預(yù)測時間t具體為:
所述mcu服務(wù)器根據(jù)視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器(jitterbuffer)最小緩存大小、解碼器的解碼預(yù)估時間以及網(wǎng)絡(luò)延遲預(yù)估時間,獲得最優(yōu)的輪播預(yù)測時間t;
所述輪播預(yù)測時間t是通過視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小以及自定義預(yù)留時間計算出來的,所述自定義預(yù)留時間是通過解碼器的解碼預(yù)估時間和網(wǎng)絡(luò)延遲預(yù)估時間得到的,其計算公式為:
輪播預(yù)測時間t=抖動緩沖器最小緩存大小/視頻終端的發(fā)送幀率+解碼器的解碼預(yù)估時間+網(wǎng)絡(luò)延遲預(yù)估時間;
其中,輪播預(yù)測時間t的單位為秒,抖動緩沖器最小緩存大小的單位為幀,視頻終端的發(fā)送幀率的單位為幀/秒,解碼器的解碼預(yù)估時間和網(wǎng)絡(luò)延遲預(yù)估時間的單位為秒。
步驟2、當(dāng)?shù)竭_本輪輪播的預(yù)測開始時刻t1時,mcu服務(wù)器向下一輪輪播的視頻終端發(fā)送開始發(fā)送視頻流的控制指令,下一輪輪播的視頻終端接收到該開始發(fā)送視頻流的控制指令后,開始向mcu服務(wù)器發(fā)送對應(yīng)的視頻流;
步驟3、mcu服務(wù)器向下一輪輪播的視頻終端發(fā)送關(guān)鍵幀請求(fir,fullintrarequest),下一輪輪播的視頻終端接收到該關(guān)鍵幀請求后,將視頻畫面編碼成關(guān)鍵幀,并發(fā)送給mcu服務(wù)器;
步驟4、mcu服務(wù)器開啟下一輪輪播的視頻流的解碼開關(guān),對接收的下一輪輪播的視頻流進行解碼,將解碼后的視頻數(shù)據(jù)存儲至解碼緩存隊列中;
步驟5、當(dāng)?shù)竭_本輪輪播的預(yù)測結(jié)束時刻t2時,mcu服務(wù)器將本輪輪播的視頻終端對應(yīng)的視頻畫面移出輪播合成畫面;
步驟6、mcu服務(wù)器向本輪輪播的視頻終端發(fā)送停止發(fā)送視頻流的指令,本輪輪播的視頻終端接收到該停止發(fā)送視頻流的指令后,停止向mcu服務(wù)器發(fā)送對應(yīng)的視頻流;
步驟7、mcu服務(wù)器重置本輪輪播的視頻終端的視頻流的解碼器,并關(guān)閉本輪輪播的視頻流的解碼開關(guān),暫停解碼功能;
步驟8、mcu服務(wù)器從下一輪輪播的視頻終端的視頻流的解碼緩存隊列中獲取視頻數(shù)據(jù)進行輪播合成畫面的合成編碼,并發(fā)送給所有視頻終端。
如圖5所示,所述步驟4和步驟8構(gòu)成的整個解碼過程具體為:
mcu服務(wù)器上設(shè)有抖動緩沖器(jitterbuffer)、解碼器、解碼緩存隊列、編碼器,mcu服務(wù)器接收下一輪輪播的視頻終端發(fā)送過來的視頻流,并存儲至對應(yīng)的抖動緩沖器內(nèi)進行緩存,mcu服務(wù)器開啟下一輪輪播的視頻流的解碼開關(guān),對應(yīng)的解碼器從抖動緩沖器內(nèi)獲取對應(yīng)的視頻流進行解碼,并將解碼后的視頻數(shù)據(jù)存儲至對應(yīng)的解碼緩存隊列中;
mcu服務(wù)器從對應(yīng)的解碼緩存隊列中獲取相應(yīng)的視頻數(shù)據(jù)進行輪播合成畫面的合成,并將合成后的視頻數(shù)據(jù)通過編碼器進行編碼,再將編碼后的輪播合成畫面發(fā)送給所有視頻終端。
實施例一:
如圖1所示,mcu服務(wù)器根據(jù)視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小、解碼器的解碼預(yù)估時間以及網(wǎng)絡(luò)延遲預(yù)估時間,配置出輪播預(yù)測時間t為500ms,即mcu服務(wù)器在某一輪輪播結(jié)束前的500ms要開始輪播預(yù)測的相關(guān)處理。第n個輪播周期為tn,第n+1個輪播周期為tn+1,第n+2個輪播周期為tn+2。
如圖2所示,假設(shè)某個輪播會議場景中,擁有8個視頻終端,且該會議布局方式設(shè)置成2x2的布局,同時假設(shè)輪播順序為1、2、…8。在第n個輪播周期中,輪播合成畫面需要合成來自視頻終端1、視頻終端2、視頻終端3、視頻終端4的視頻畫面,然后發(fā)送給所有視頻終端。此時,由于需要合成視頻終端1、視頻終端2、視頻終端3、視頻終端4的視頻畫面,那么這4個視頻終端需要向mcu服務(wù)器發(fā)送視頻流,而視頻終端5、視頻終端6、視頻終端7、視頻終端8不在輪播合成畫面中,沒有必要向mcu服務(wù)器發(fā)送視頻流。視頻終端開始發(fā)送或停止發(fā)送的控制方式是通過rtcp報文進行控制的,rtcp報文中增加有開始發(fā)送視頻流的控制指令或停止發(fā)送視頻流的控制指令,當(dāng)需要視頻終端發(fā)送視頻流時,mcu服務(wù)器發(fā)送帶有開始發(fā)送視頻流的控制指令的rtcp報文給相應(yīng)的視頻終端,視頻終端接收后,通過識別rtcp報文中的開始發(fā)送視頻流的控制指令,從而相應(yīng)的視頻終端發(fā)送視頻流給mcu服務(wù)器;當(dāng)不需要視頻終端發(fā)送視頻流時,mcu服務(wù)器發(fā)送帶有停止發(fā)送視頻流的控制指令的rtcp報文給相應(yīng)的視頻終端,視頻終端接收后,通過識別rtcp報文中的停止發(fā)送視頻流的控制指令,從而相應(yīng)的視頻終端不再發(fā)送視頻流給mcu服務(wù)器。
當(dāng)時間到達第n輪輪播結(jié)束前的500ms時(即預(yù)測開始時刻t1,見圖1),開始預(yù)測的相關(guān)處理。由圖2可知,第n輪輪播的輪播合成畫面為視頻終端1、視頻終端2、視頻終端3、視頻終端4,則第n+1輪輪播的輪播合成畫面就為視頻終端5、視頻終端6、視頻終端7、視頻終端8。此時,mcu服務(wù)器與視頻終端之間需要完成三個任務(wù):
a1、如圖3所示,mcu服務(wù)器通過發(fā)送帶有開始發(fā)送視頻流的控制指令的rtcp報文給視頻終端5、視頻終端6、視頻終端7、視頻終端8,告知視頻終端5、視頻終端6、視頻終端7、視頻終端8往mcu服務(wù)器發(fā)送視頻流,視頻終端5、視頻終端6、視頻終端7、視頻終端8接收到該rtcp報文后,識別開始發(fā)送視頻流的控制指令,將對應(yīng)的視頻流發(fā)送給mcu服務(wù)器;
a2、如圖4所示,緊接著mcu服務(wù)器向視頻終端5、視頻終端6、視頻終端7、視頻終端8發(fā)送關(guān)鍵幀請求,視頻終端5、視頻終端6、視頻終端7、視頻終端8接收到該關(guān)鍵幀請求后,將視頻畫面編碼成關(guān)鍵幀,方便合成視頻畫面,并發(fā)送給mcu服務(wù)器;
a3、如圖5所示,mcu服務(wù)器接收下一輪輪播的視頻終端發(fā)送過來的視頻流,并對應(yīng)存儲至抖動緩沖器5、抖動緩沖器6、抖動緩沖器7、抖動緩沖器8內(nèi)進行緩存,mcu服務(wù)器開啟視頻終端5、視頻終端6、視頻終端7、視頻終端8這4路視頻流的解碼開關(guān)(解碼器在n-1輪輪播結(jié)束時已完成重置),對應(yīng)的解碼器5、解碼器6、解碼器7、解碼器8從抖動緩沖器5、抖動緩沖器6、抖動緩沖器7、抖動緩沖器8內(nèi)獲取對應(yīng)的視頻流進行解碼,成功解碼的視頻數(shù)據(jù)放入對應(yīng)的解碼緩存隊列5、解碼緩存隊列6、解碼緩存隊列7、解碼緩存隊列8中。
當(dāng)時間到達第n輪輪播結(jié)束時刻時(即預(yù)測結(jié)束時刻t2,見圖1),此時,mcu服務(wù)器與視頻終端之間需要完成三個操作:
b1、mcu服務(wù)器將視頻終端1、視頻終端2、視頻終端3、視頻終端4的視頻畫面移出輪播合成畫面;
b2、如圖6所示,mcu服務(wù)器通過發(fā)送帶有停止發(fā)送視頻流的控制指令的rtcp報文給視頻終端1、視頻終端2、視頻終端3、視頻終端4,告知視頻終端1、視頻終端2、視頻終端3、視頻終端4停止往mcu服務(wù)器發(fā)送視頻流,視頻終端1、視頻終端2、視頻終端3、視頻終端4接收到該rtcp報文后,識別停止發(fā)送視頻流的控制指令,停止將對應(yīng)的視頻流發(fā)送給mcu服務(wù)器;
b3、mcu服務(wù)器重置視頻終端1、視頻終端2、視頻終端3、視頻終端4的視頻流的解碼器,并關(guān)閉視頻終端1、視頻終端2、視頻終端3、視頻終端4的視頻流的解碼開關(guān),暫停解碼功能;
接下來,如圖5所示,mcu服務(wù)器從視頻終端5、視頻終端6、視頻終端7、視頻終端8的視頻流對應(yīng)的的解碼緩存隊列5、解碼緩存隊列6、解碼緩存隊列7、解碼緩存隊列8中獲取相應(yīng)的視頻數(shù)據(jù)進行輪播合成畫面的合成編碼,并將合成后的視頻數(shù)據(jù)通過編碼器進行編碼,再將編碼后的輪播合成畫面發(fā)送給所有視頻終端,如圖7所示。
本發(fā)明的優(yōu)點如下:
本發(fā)明通過引入帶有終端視頻流發(fā)送控制的控制指令的rtcp報文,以及提前預(yù)測處理功能,在保證輪播平滑切換的前提下,可以在高并發(fā)條件下有效地降低服務(wù)器的下行帶寬壓力,改善網(wǎng)絡(luò)擁塞情況。同時,也可以充分地利用服務(wù)器的硬件性能,提高服務(wù)器的并發(fā)性能,即可并發(fā)參會的視頻方數(shù)。
本發(fā)明給出了預(yù)測時間計算公式,mcu服務(wù)器根據(jù)視頻終端的發(fā)送幀率、mcu服務(wù)器設(shè)置的抖動緩沖器最小緩存大小、解碼器的解碼能力(解碼器的解碼預(yù)估時間)以及網(wǎng)絡(luò)傳輸情況(網(wǎng)絡(luò)延遲預(yù)估時間),獲得最優(yōu)的輪播預(yù)測時間t。如果設(shè)置的預(yù)測時間大于最優(yōu)的輪播預(yù)測時間t,那么需要同時解8路視頻流的時間也就越長,對于服務(wù)器并發(fā)解碼壓力也就越大。
雖然以上描述了本發(fā)明的具體實施方式,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護的范圍內(nèi)。