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