本發(fā)明實施例涉及視頻技術領域,尤其涉及一種視頻緩沖控制方法及裝置。
背景技術:
用戶可以通過客戶端(電視等設備)觀看網(wǎng)絡直播、網(wǎng)絡點播等視頻,為了保證用戶能夠觀看流暢的視頻,客戶端通常設置視頻緩沖區(qū),在視頻緩沖區(qū)中緩存未播放的視頻。
在現(xiàn)有技術中,在客戶端向視頻服務器發(fā)送視頻請求之后,視頻服務器以系統(tǒng)調(diào)度時長(通常大于或等于1秒)為單位向客戶端推流,每個系統(tǒng)調(diào)度時長向客戶端發(fā)送固定大小的視頻??蛻舳烁鶕?jù)自身內(nèi)存、及視頻服務器發(fā)送視頻的碼率,確定用于緩存視頻的視頻緩沖區(qū),將視頻服務器發(fā)送的視頻數(shù)據(jù)緩存在視頻緩沖區(qū),并根據(jù)視頻播放速度在視頻緩沖區(qū)中獲取視頻數(shù)據(jù)進行播放??蛻舳诉€實時檢測視頻緩沖區(qū)中緩存的視頻數(shù)據(jù)量,若緩沖區(qū)中緩存的視頻數(shù)據(jù)量小于預設最小值時,則客戶端請求視頻服務器加快向客戶端發(fā)送視頻數(shù)據(jù)的碼率,在緩存區(qū)中緩存的視頻數(shù)量大于預設最大值時,則客戶端請求視頻服務器降低向客戶端發(fā)送視頻數(shù)據(jù)的碼率。
由上可知,在現(xiàn)有技術中,由客戶端對視頻緩沖進行控制,這就要求所有進行視頻播放的客戶端均具備視頻緩沖控制的功能,導致對客戶端的要求較高;進一步的,由客戶端根據(jù)視頻緩沖區(qū)中的視頻數(shù)據(jù),確定視頻服務器發(fā)送視頻數(shù)據(jù)的碼率,會導致視頻服務器發(fā)送視頻數(shù)據(jù)的碼率波動較大,導致視頻推流的穩(wěn)定性較低。
技術實現(xiàn)要素:
本發(fā)明實施例提供一種視頻緩沖控制方法及裝置,提高了視頻推流的穩(wěn)定性。
第一方面,本發(fā)明實施例提供一種視頻緩沖控制方法,包括:
獲取目標視頻的平均推流碼率、所述目標視頻的加速推流碼率、及預設視頻緩沖時長,所述加速推流碼率大于所述平均推流碼率;
根據(jù)所述平均推流碼率、所述加速推流碼率、及所述預設視頻緩沖時長,確定所述目標視頻的加速推流時長;
根據(jù)所述目標視頻的起始推流時刻和當前時刻,確定所述目標視頻的當前推流時長;
在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之前,根據(jù)所述加速推流碼率,向客戶端推送視頻;
在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之后,根據(jù)所述平均推流碼率,向客戶端推送視頻。
在一種可能的實施方式中,獲取所述目標視頻的平均推流碼率,包括:
獲取所述目標視頻的文件大小和所述目標視頻的播放時長;
根據(jù)所述目標視頻的文件大小和所述目標視頻的播放時長,確定所述目標視頻的平均推流碼率。
在另一種可能的實施方式中,獲取所述目標視頻的加速推流碼率,包括:
獲取預設加速推流增量;
根據(jù)所述平均推流碼率和所述加速推流增量,確定所述加速推流碼率。
在另一種可能的實施方式中,根據(jù)所述平均推流碼率、所述加速推流碼率、及所述預設視頻緩沖時長,確定所述目標視頻的加速推流時長,包括:
根據(jù)如下公式一,確定所述目標視頻的加速推流時長Tfast:
其中,所述Tbuff為所述預設視頻緩沖時長,所述bavg為所述平均推流碼率,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,根據(jù)所述加速推流碼率,向客戶端推送視頻,包括:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述加速推流碼率,確定第一推流滯后時長;
若所述第一推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第一推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第一推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,根據(jù)所述平均推流碼率,向客戶端推送視頻,包括:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述平均推流碼率,確定第二推流滯后時長;
若所述第二推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第二推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第二推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述加速推流碼率,確定第一推流滯后時長,包括:
根據(jù)如下公式二確定所述第一推流滯后時長Tdelay1:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述平均推流碼率,確定推流滯后時長,包括:
根據(jù)如下公式三確定所述第二推流滯后時長Tdelay2:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bavg為所述平均推流碼率。
第二方面,本發(fā)明實施例提供一種視頻緩沖控制裝置,包括獲取模塊、第一確定模塊、第二確定模塊和推流模塊,其中,
所述獲取模塊用于,獲取目標視頻的平均推流碼率、所述目標視頻的加速推流碼率、及預設視頻緩沖時長,所述加速推流碼率大于所述平均推流碼率;
所述第一確定模塊用于,根據(jù)所述平均推流碼率、所述加速推流碼率、及所述預設視頻緩沖時長,確定所述目標視頻的加速推流時長;
所述第二確定模塊用于,根據(jù)所述目標視頻的起始推流時刻和當前時刻,確定所述目標視頻的當前推流時長;
所述推流模塊用于,在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之前,根據(jù)所述加速推流碼率,向客戶端推送視頻;
所述推流模塊還用于,在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之后,根據(jù)所述平均推流碼率,向客戶端推送視頻。
在一種可能的實施方式中,所述獲取模塊具體用于:
獲取所述目標視頻的文件大小和所述目標視頻的播放時長;
根據(jù)所述目標視頻的文件大小和所述目標視頻的播放時長,確定所述目標視頻的平均推流碼率。
在另一種可能的實施方式中,所述獲取模塊具體用于:獲取預設加速推流增量;
根據(jù)所述平均推流碼率和所述加速推流增量,確定所述加速推流碼率。
在另一種可能的實施方式中,所述第一確定模塊用于:
根據(jù)如下公式一,確定所述目標視頻的加速推流時長Tfast:
其中,所述Tbuff為所述預設視頻緩沖時長,所述bavg為所述平均推流碼率,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,所述推流模塊具體用于:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述加速推流碼率,確定第一推流滯后時長;
若所述第一推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第一推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第一推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,所述推流模塊具體用于:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述平均推流碼率,確定第二推流滯后時長;
若所述第二推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第二推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第二推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,所述推流模塊具體用于:
根據(jù)如下公式二確定所述第一推流滯后時長Tdelay1:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,所述推流模塊具體用于:
根據(jù)如下公式三確定所述第二推流滯后時長Tdelay2:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bavg為所述平均推流碼率。
本發(fā)明實施例提供的視頻緩沖控制方法及裝置,由視頻服務器對視頻緩沖進行控制,無需客戶端具備視頻緩沖控制的功能,進而降低了對客戶端的要求。進一步的,當客戶端的視頻緩沖區(qū)中未緩存到預設數(shù)量的視頻數(shù)據(jù)時,則視頻服務器以大于平均推流碼率的加速推流碼率向客戶端推流,以使客戶端的視頻緩沖區(qū)可以積累足量的視頻數(shù)據(jù);當客戶端的視頻緩沖區(qū)中首次緩存到預設數(shù)量的視頻之后,則視頻服務器以平均推流碼率向客戶端推流,以保證客戶端的視頻緩沖區(qū)中的視頻數(shù)據(jù)可以維持在預設數(shù)量,在上述過程中,視頻服務器均以穩(wěn)定的碼率向客戶端推流,避免視頻服務器向客戶端推流的碼率出現(xiàn)大的波動,進而提高視頻服務器推流的穩(wěn)定性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的視頻緩沖控制方法的應用場景示意圖;
圖2為本發(fā)明實施例提供的視頻緩沖控制方法的流程示意圖一;
圖3為本發(fā)明實施例提供的視頻緩沖控制方法的流程示意圖二;
圖4為本發(fā)明實施例提供的視頻緩沖控制裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明實施例提供的視頻緩沖控制方法的應用場景示意圖。請參見圖1,包括客戶端101和視頻服務器102。其中,客戶端101通常為緩存較為小的電視等終端設備??蛻舳?01中設置有視頻緩沖區(qū),在客戶端101向視頻服務器102發(fā)送視頻請求之后,視頻服務器102則持續(xù)向客戶端101推流,其中,視頻服務器102向客戶端101發(fā)送的視頻包首先被緩存在視頻緩沖區(qū),客戶端101在進行視頻播放時,從視頻緩沖區(qū)獲取緩沖的視頻,并進行視頻播放。
在本申請中,為了保證客戶端101能夠流暢的播放視頻,且視頻緩沖區(qū)中不會緩存過多的視頻數(shù)據(jù),在視頻服務器102接收到客戶端101發(fā)送的視頻請求之后,視頻服務器102先根據(jù)客戶端101請求的視頻的播放時長及總大小,確定平均推流碼率,在視頻服務器102開始推流的一段時長內(nèi),先以略大于平均推流碼率的速度向客戶端101推流,使得視頻服務器102向客戶端101發(fā)送視頻的速度略大于客戶端101進行視頻播放的速度,客戶端101可以將未及時播放的視頻數(shù)據(jù)緩存在視頻緩沖區(qū),在視頻服務器102確定客戶端101的視頻緩沖區(qū)中緩存的視頻量達到預設值之后,視頻服務器102則以平均推流碼率向客戶端101推流,以使客戶端101的視頻緩沖區(qū)中緩存的視頻量維持在預設值。在本申請中,由視頻服務器102對視頻緩沖進行控制,無需客戶端101具備視頻緩沖控制的功能,降低了對客戶端101的要求。進一步的,視頻服務器102在保證客戶端101的視頻緩沖區(qū)中的視頻量在預設值的前提下,可以以穩(wěn)定的速度向客戶端推流,進而提高視頻服務器102推流的穩(wěn)定性。
下面,通過具體實施例對本申請所示的技術方案進行詳細說明。需要說明的是,下面幾個具體實施例可以相互結(jié)合,對于相同或相似的內(nèi)容在不同的實施例中不再進行贅述。
圖2為本發(fā)明實施例提供的視頻緩沖控制方法的流程示意圖一。請參見圖2,該方法可以包括:
S201、獲取目標視頻的平均推流碼率、目標視頻的加速推流碼率、及預設視頻緩沖時長。
在本發(fā)明實施例中,在視頻服務器向客戶端推送目標視頻的過程中,視頻推流裝置以視頻包為單位進行推流,例如,當目標視頻為TS格式時,視頻包的大小為1316字節(jié)。
平均推流碼率與目標視頻的播放速率一致,可選的,可以通過如下可行的實現(xiàn)方式確定目標視頻的平均推流碼率:獲取目標視頻的文件大小和目標視頻的播放時長,并根據(jù)目標視頻的文件大小和目標視頻的播放時長,確定目標視頻的平均推流碼率,可以將目標視頻的文件大小與視頻播放時長的比值確定為平均推流碼率。需要說明的是,由于目標視頻的平均推流碼率為固定值,因此,視頻服務器可以只計算一次平均推流碼率,并緩存該平均推流碼率,當視頻服務器需要使用該平均推流碼率時,直接在緩存中獲取即可。
目標視頻的加速推流碼率大于目標視頻的平均推流碼率,可選的,可以通過如下可行的實現(xiàn)方式確定目標視頻的加速推流碼率:獲取預設加速推流增量,根據(jù)平均推流碼率和加速推流增量,確定加速推流碼率。需要說明的是,由于目標視頻的加速推流碼率為固定值,因此,視頻服務器可以只計算一次加速推流碼率,并緩存該加速推流碼率,當視頻服務器需要使用加速推流碼率時,直接在緩存中獲取即可。
可選的,加速推流增量可以為預設百分比,相應的,加速推流碼率bfast=bavg×(1+a),其中,bavg為平均推流碼率,a為預設百分比。例如,a可以為2%、3%等,在實際應用過程中,可以根據(jù)實際需要設置該預設百分比。
可選的,加速推流增量可以為預設增量推流碼率,相應的,加速推流碼率可以為平均推流碼率和預設增量推流碼率之和。在實際應用過程中,可以根據(jù)實際需要設置該預設增量推流碼率。
預設視頻緩沖時長為視頻服務器預先設置的一個時長,該預設視頻緩沖時長是指理想情況下、客戶端的視頻緩沖區(qū)中緩存的視頻可以播放的時長。例如,假設預設視頻緩沖時長為N秒,客戶端當前正在播放第N1秒的視頻,則理想情況下,客戶端的視頻緩沖區(qū)中應該緩存到了第N+N1秒的視頻。例如,該預設視頻緩沖時長可以為5秒等,在實際應用過程中,可以根據(jù)實際需要設置該預設視頻緩沖時長
S202、根據(jù)平均推流碼率、加速推流碼率、及預設視頻緩沖時長,確定目標視頻的加速推流時長。
可選的,可以根據(jù)如下公式一,確定目標視頻的加速推流時長Tfast:
其中,Tbuff為預設視頻緩沖時長,bavg為平均推流碼率,bfast為加速推流碼率。
S203、根據(jù)目標視頻的起始推流時刻和當前時刻,確定目標視頻的當前推流時長。
在初始時,目標視頻的起始推流時刻為視頻服務器首次向客戶端發(fā)送視頻包的時刻,例如,假設視頻服務器在3點向客戶端發(fā)送目標視頻的第一個視頻包,則目標視頻的起始推流時刻為3點。在實際應用過程中,當視頻服務器的推流滯后時長過大時,目標視頻的起始推流時刻可能會更新,起始推流時刻的更新具體在圖3實施例中進行詳細說明??蛇x的,視頻服務器可以在預設文件中存儲目標視頻的起始推流時刻,并根據(jù)推流的實際情況對起始推流時刻進行更新維護,這樣,當視頻服務器需要獲取起始推流時刻時,直接在預設文件中獲取即可,進而提高獲取目標視頻的起始推流時刻的效率。
可選的,當前推流時長為當前時刻與起始推流時刻之差。
S204、在目標視頻的當前推流時長首次大于或等于加速推流時長之前,根據(jù)加速推流碼率,向客戶端推送視頻。
從視頻服務器向客戶端發(fā)送目標視頻的第一個數(shù)據(jù)包起,若目標視頻的當前推流時長一直小于加速推流時長,則說明客戶端的視頻緩沖區(qū)中當前緩存的視頻的可播放時長小于加速推流時長,為了保證在客戶端的視頻緩沖區(qū)緩存足夠的視頻,則視頻服務器以加速推流碼率向客戶端推送視頻。
當視頻服務器以加速推流碼率向客戶端推送視頻時,視頻服務器向客戶端發(fā)送視頻的速度大于客戶端進行視頻播放的速度,以使客戶端可以在視頻緩沖區(qū)中緩存客戶端無法及時播放的視頻。
S205、在目標視頻的當前推流時長首次大于或等于加速推流時長之后,根據(jù)平均推流碼率,向客戶端推送視頻。
從視頻服務器向客戶端發(fā)送目標視頻的第一個數(shù)據(jù)包起,在目標視頻的當前推流時長首次大于或等于加速推流時長時,則說明客戶端的視頻緩沖區(qū)中當前緩存的視頻的可播放時長大于或等于加速推流時長,為了避免在客戶端緩沖過量的視頻,則視頻服務器以平均推流碼率向客戶端推送視頻。
本發(fā)明實施例提供的視頻緩沖控制方法,由視頻服務器對視頻緩沖進行控制,無需客戶端具備視頻緩沖控制的功能,進而降低了對客戶端的要求。進一步的,當客戶端的視頻緩沖區(qū)中未緩存到預設數(shù)量的視頻數(shù)據(jù)時,則視頻服務器以大于平均推流碼率的加速推流碼率向客戶端推流,以使客戶端的視頻緩沖區(qū)可以積累足量的視頻數(shù)據(jù);當客戶端的視頻緩沖區(qū)中首次緩存到預設數(shù)量的視頻之后,則視頻服務器以平均推流碼率向客戶端推流,以保證客戶端的視頻緩沖區(qū)中的視頻數(shù)據(jù)可以維持在預設數(shù)量,在上述過程中,視頻服務器均以穩(wěn)定的碼率向客戶端推流,避免視頻服務器向客戶端推流的碼率出現(xiàn)大的波動,進而提高視頻服務器推流的穩(wěn)定性。
在圖2所示實施例的基礎上,可選的,在視頻服務器向客戶端推送視頻的過程中,為了進一步提高推流的穩(wěn)定性,視頻服務器可以根據(jù)如下可行的實現(xiàn)方式向客戶端推流,具體的,請參見圖3所示的實施例。
圖3為本發(fā)明實施例提供的視頻緩沖控制方法的流程示意圖二。請參見圖3,該方法可以包括:
S301、獲取目標視頻的平均推流碼率、目標視頻的加速推流碼率、及預設視頻緩沖時長。
S301與S201的執(zhí)行過程相同,此處不再進行贅述。
S302、根據(jù)平均推流碼率、加速推流碼率、及預設視頻緩沖時長,確定目標視頻的加速推流時長。
S302與S202的執(zhí)行過程相同,此處不再進行贅述。
S303、根據(jù)目標視頻的起始推流時刻和當前時刻,確定目標視頻的當前推流時長。
S303與S203的執(zhí)行過程相同,此處不再進行贅述。
S304、判斷當前推流時長是否大于或等于加速推流時長。
若否,則執(zhí)行S305-S310。
若是,則執(zhí)行S311-S318。
S305、根據(jù)起始推流時刻、起始推流時刻與當前時刻之間推送的第一視頻量、及加速推流碼率,確定第一推流滯后時長。
第一視頻量是指起始推流時刻與當前時刻之間視頻服務器向客戶端發(fā)送的視頻量。可選的,視頻服務器可以記錄在起始推流時刻向客戶端發(fā)送的視頻包在視頻文件的位置P1、及視頻服務器最近一次向客戶端發(fā)送的視頻包在視頻文件的位置P2,并根據(jù)位置P1和P2,確定第一視頻量的大小。
可選的,可以根據(jù)如下公式二確定第一推流滯后時長Tdelay1:
其中,Tnow為當前時刻,Tbegin為起始推流時刻,n為第一視頻量,bfast為所述加速推流碼率。
需要說明的是,在上述公式二中,若第一視頻量n的單位和加速推流碼率bfast的單位不一致時,需要先統(tǒng)一第一視頻量n的加速推流碼率bfast的單位。例如,若第一視頻量n的單位為字節(jié),加速推流碼率bfast的單位為bit/s,則需要先將第一視頻量n的單位換成比特。
若第一推流滯后時長等于零,則說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的速度等于加速推流碼率。
若第一推流滯后時長大于零,則說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的碼率小于加速推流碼率。
若第一推流滯后時長小于零,則說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的碼率大于加速推流碼率。
S306、判斷第一推流滯后時長是否小于第一閾值。
若是,則執(zhí)行S307。若否,則執(zhí)行S308。
其中,第一閾值小于或等于零,可選的,第一閾值可以與S307中的暫停推流的預設時長相關,若預設時長為t,則第一閾值可以為-t。
S307、在預設時長內(nèi)暫停推流。
在本發(fā)明實施例中,預設時長通常較小,可選的,預設時長可以大于0且小于10毫秒,例如,預設時長可以為4毫秒。需要說明的是,在實際應用過程中,可以根據(jù)實際需要設置該預設時長,本發(fā)明實施例對此不作具體限定。
在第一推流滯后時長小于第一閾值時,說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的碼率過快,為了保證向客戶端進行穩(wěn)定的推流,則視頻服務器在預設時長內(nèi)暫停推流。
在S307之后,執(zhí)行S303。
S308、判斷第一推流滯后時長是否大于第二閾值。
第二閾值為需要修正起始推流時刻的最大門限值,可選的,第二閾值可以大于30毫秒且小于2秒。當然,在實際應用過程中,可以根據(jù)實際需要設置該第二閾值,本發(fā)明實施例對此不做具體限定。
若是,則執(zhí)行S309。若否,則執(zhí)行S310。
S309、將起始推流時刻更新為當前時刻,并向客戶端推送當前時刻對應的視頻包。
在第一推流滯后時長大于第二閾值時,說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的碼率過慢,且該慢的程度超出了用戶可接收的范圍,無法通過碼率補償將推流恢復正常。為了避免視頻服務器連續(xù)向客戶端發(fā)送視頻包而出現(xiàn)抖動(視頻服務器在短時段內(nèi)的碼率突然過高),則視頻服務器將起始推流時刻更新為當前時刻,這樣,視頻服務器可以從當前時刻起,重新對推流碼率進行監(jiān)控,避免了視頻服務器出現(xiàn)過大抖動。
在S309之后,執(zhí)行S303。
S310、向客戶端推送當前時刻對應的視頻包。
在S310之后,執(zhí)行S303。
在第一推流滯后時長大于或等于第一閾值且小于或等于第二閾值時,說明在起始推流時刻與當前時刻之間,視頻服務器向客戶端推流的碼率偏慢,但是偏慢的程度在用戶可接受范圍內(nèi),可以通過碼率補償將推流恢復正常。為了進行碼率補償,則視頻服務器立刻在目標視頻中確定當前時刻對應的視頻包,并向客戶端發(fā)送當前時刻對應的視頻包。
可選的,視頻服務器可以在目標視頻中確定未推送視頻,并將未推送視頻中、播放時刻最早的預設大小的視頻確定為當前時刻對應的視頻包??蛇x的,當目標視頻的格式為TS視頻時,預設大小可以為1316字節(jié)。需要說明的是,若未推送視頻的大小小于預設大小,則將為推送視頻對應的視頻包確定為當前時刻對應的視頻包。
S311、根據(jù)起始推流時刻、起始推流時刻與當前時刻之間推送的第一視頻量、及平均推流碼率,確定第二推流滯后時長。
可選的,可以根據(jù)如下公式三確定第二推流滯后時長Tdelay2:
其中,Tnow為當前時刻,Tbegin為起始推流時刻,n為第一視頻量,bavg為平均推流碼率。
S312、判斷第二推流滯后時長是否小于第一閾值,第一閾值小于或等于零。
若是,則執(zhí)行S313。若否,則執(zhí)行S314。
需要說明的是,S312中的第一閾值與S306中的第一閾值類似,此處不再進行贅述。
S313、在預設時長內(nèi)暫停推流。
需要說明的是,S313中的預設時長與S307中的預設時長類似,此處不再進行贅述。
在S313之后,執(zhí)行S317。
S314、判斷第二推流滯后時長是否大于第二閾值。
第二閾值為需要修正起始推流時刻的最大門限值,可選的,第二閾值可以大于30毫秒且小于2秒。當然,在實際應用過程中,可以根據(jù)實際需要設置該第二閾值,本發(fā)明實施例對此不做具體限定。
若是,則執(zhí)行S315。若否,則執(zhí)行S316。
S315、將起始推流時刻更新為當前時刻,并向客戶端推送當前時刻對應的視頻包。
在S315之后,執(zhí)行S317。
S316、向客戶端推送當前時刻對應的視頻包。
S316的執(zhí)行過程可以參考S310,此處不再進行贅述。
S317、判斷目標視頻是否推送完成。
若是,則執(zhí)行S318。
若否,則執(zhí)行S311。
S318、結(jié)束。
圖4為本發(fā)明實施例提供的視頻緩沖控制裝置的結(jié)構(gòu)示意圖。該視頻緩沖控制裝置可以設置在視頻服務器中。請參見圖4,該裝置可以包括獲取模塊11、第一確定模塊12、第二確定模塊13和推流模塊14,其中,
所述獲取模塊11用于,獲取目標視頻的平均推流碼率、所述目標視頻的加速推流碼率、及預設視頻緩沖時長,所述加速推流碼率大于所述平均推流碼率;
所述第一確定模塊12用于,根據(jù)所述平均推流碼率、所述加速推流碼率、及所述預設視頻緩沖時長,確定所述目標視頻的加速推流時長;
所述第二確定模塊13用于,根據(jù)所述目標視頻的起始推流時刻和當前時刻,確定所述目標視頻的當前推流時長;
所述推流模塊14用于,在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之前,根據(jù)所述加速推流碼率,向客戶端推送視頻;
所述推流模塊14還用于,在所述目標視頻的當前推流時長首次大于或等于所述加速推流時長之后,根據(jù)所述平均推流碼率,向客戶端推送視頻。
本發(fā)明實施例提供的視頻緩沖控制裝置可以執(zhí)行上述方法實施例所示技術方案,其實現(xiàn)原理以及有益效果類似,此處不再進行贅述。
在一種可能的實施方式中,所述獲取模塊11具體用于:
獲取所述目標視頻的文件大小和所述目標視頻的播放時長;
根據(jù)所述目標視頻的文件大小和所述目標視頻的播放時長,確定所述目標視頻的平均推流碼率。
在另一種可能的實施方式中,所述獲取模塊11具體用于:獲取預設加速推流增量;
根據(jù)所述平均推流碼率和所述加速推流增量,確定所述加速推流碼率。
在另一種可能的實施方式中,所述第一確定模塊12用于:
根據(jù)如下公式一,確定所述目標視頻的加速推流時長Tfast:
其中,所述Tbuff為所述預設視頻緩沖時長,所述bavg為所述平均推流碼率,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,所述推流模塊14具體用于:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述加速推流碼率,確定第一推流滯后時長;
若所述第一推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第一推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第一推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,所述推流模塊14具體用于:
根據(jù)所述起始推流時刻、所述起始推流時刻與所述當前時刻之間推送的第一視頻量、及所述平均推流碼率,確定第二推流滯后時長;
若所述第二推流滯后時長小于第一閾值,則在預設時長內(nèi)暫停推流,所述第一閾值小于或等于零;
若所述第二推流滯后時長大于或等于所述第一閾值且小于或等于第二閾值,則向客戶端推送所述當前時刻對應的視頻包;
若所述第二推流滯后時長大于第二閾值,則將所述起始推流時刻更新為所述當前時刻,并向客戶端推送所述當前時刻對應的視頻包。
在另一種可能的實施方式中,所述推流模塊14具體用于:
根據(jù)如下公式二確定所述第一推流滯后時長Tdelay1:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bfast為所述加速推流碼率。
在另一種可能的實施方式中,所述推流模塊14具體用于:
根據(jù)如下公式三確定所述第二推流滯后時長Tdelay2:
其中,所述Tnow為所述當前時刻,所述Tbegin為所述起始推流時刻,所述n為所述第一視頻量,所述bavg為所述平均推流碼率。
本發(fā)明實施例提供的視頻緩沖控制裝置可以執(zhí)行上述方法實施例所示技術方案,其實現(xiàn)原理以及有益效果類似,此處不再進行贅述。
本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應說明的是:以上各實施例僅用以說明本發(fā)明實施例的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明實施例進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明實施例方案的范圍。