麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

基于PID控制的視頻直播傳輸控制方法及系統(tǒng)與流程

文檔序號(hào):11236732閱讀:1218來源:國知局
基于PID控制的視頻直播傳輸控制方法及系統(tǒng)與流程

本發(fā)明涉及視頻傳輸技術(shù)領(lǐng)域,具體而言,涉及一種基于pid控制的視頻直播傳輸控制方法和一種基于pid控制的視頻直播傳輸控制系統(tǒng)。



背景技術(shù):

隨著寬帶的普及和網(wǎng)絡(luò)技術(shù)的發(fā)展,互聯(lián)網(wǎng)上的多媒體業(yè)務(wù)漸漸成為主流。上一代的視頻應(yīng)用主要是基于視頻點(diǎn)播服務(wù)的,而隨著網(wǎng)絡(luò)狀況的逐步改善以及視頻技術(shù)的不斷發(fā)展,人們對(duì)視頻直播的需求不斷增長,基于視頻直播服務(wù)構(gòu)建的應(yīng)用也開始快速涌現(xiàn),比如電視節(jié)目直播、視頻會(huì)議、視頻通話等。其中,最新的直播應(yīng)用能夠讓用戶通過手機(jī)設(shè)備創(chuàng)建直播內(nèi)容。

為了保證直播的實(shí)時(shí)性,也就是保證較低的直播延遲,上一代的直播技術(shù)主要是基于udp協(xié)議(userdatagramprotocol,用戶數(shù)據(jù)報(bào)協(xié)議)。udp協(xié)議并不確保數(shù)據(jù)包的成功接收,視頻直播的延遲主要是數(shù)據(jù)包從發(fā)送端到達(dá)接收端的時(shí)間,因此延遲一般都很低,但接收端需要額外的方法處理網(wǎng)絡(luò)丟包帶來的錯(cuò)誤。

而如果改為使用tcp協(xié)議(transmissioncontrolprotocol,傳輸控制協(xié)議),則能夠確保所有數(shù)據(jù)包的成功接收,但是在網(wǎng)絡(luò)狀況不佳的情況下,tcp協(xié)議的重傳機(jī)制會(huì)進(jìn)行大量的重傳操作,使得數(shù)據(jù)的發(fā)送時(shí)間較長,導(dǎo)致視頻流暢度低并且延遲較高。

隨著網(wǎng)絡(luò)狀況的不斷改善,使用tcp協(xié)議在視頻直播方面的可用性大大提高。其中,rtmp協(xié)議(realtimemessagingprotocol,實(shí)時(shí)消息傳輸協(xié)議)是adobe公司開發(fā)的一種基于tcp協(xié)議的實(shí)時(shí)數(shù)據(jù)通信網(wǎng)絡(luò)協(xié)議,主要用來在flash/air平臺(tái)和支持rtmp協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信,被廣泛應(yīng)用于點(diǎn)播和直播服務(wù),具有較強(qiáng)的穩(wěn)定性、可靠性。

然而,雖然網(wǎng)絡(luò)環(huán)境得到了不斷改善,但是網(wǎng)絡(luò)狀況的波動(dòng)依然時(shí)常發(fā)生,網(wǎng)絡(luò)狀況的波動(dòng)會(huì)直接影響到tcp協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)耐掏铝俊F渲校曨l碼率是數(shù)據(jù)傳輸時(shí)單位時(shí)間傳送的數(shù)據(jù)位數(shù),如果吞吐量小于當(dāng)前傳輸視頻的碼率,就會(huì)造成接收端視頻播放的不流暢的現(xiàn)象。

因此,如何實(shí)現(xiàn)根據(jù)當(dāng)前的網(wǎng)絡(luò)狀況進(jìn)行動(dòng)態(tài)的碼率調(diào)整,成為亟待解決的技術(shù)問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明正是基于上述技術(shù)問題,提出了一種新的技術(shù)方案,可以實(shí)現(xiàn)根據(jù)當(dāng)前的網(wǎng)絡(luò)狀況進(jìn)行動(dòng)態(tài)的碼率調(diào)整。

有鑒于此,本發(fā)明的一方面提出了一種基于pid控制的視頻直播傳輸控制方法,包括:按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,其中,所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度為緩沖的視頻幀的數(shù)量;計(jì)算所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值;將所述差值帶入pid控制公式,以計(jì)算得到當(dāng)前時(shí)刻所需的碼率調(diào)整值;根據(jù)所述碼率調(diào)整值,調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,系統(tǒng)在進(jìn)行視頻直播時(shí),可以根據(jù)視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,利用pid(proportion-integration-differentiation,比例-積分-微分)控制理論實(shí)時(shí)調(diào)整視頻的發(fā)送端提供的視頻流的碼率,即對(duì)實(shí)時(shí)碼率進(jìn)行修正,從而可以將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

其中,pid是一種閉環(huán)的反饋控制機(jī)制,在pid控制系統(tǒng)中,可根據(jù)系統(tǒng)當(dāng)前狀態(tài)與期望狀態(tài)的誤差來計(jì)算一個(gè)控制量,并利用該控制量對(duì)輸入進(jìn)行調(diào)整,從而使系統(tǒng)狀態(tài)趨向于期望狀態(tài)。也就是說,可以根據(jù)當(dāng)前的視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,也就是誤差,來計(jì)算當(dāng)前時(shí)刻所需的碼率調(diào)整值,使實(shí)時(shí)碼率趨向于期望值。

在上述技術(shù)方案中,優(yōu)選地,在所述按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,還包括:根據(jù)接收到的第一設(shè) 置命令,設(shè)置所述視頻發(fā)送緩沖區(qū)的所述長度目標(biāo)值。

在該技術(shù)方案中,視頻發(fā)送緩沖區(qū)的長度目標(biāo)值可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)目標(biāo)值檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的長度目標(biāo)值。

在上述任一技術(shù)方案中,優(yōu)選地,所述pid控制公式為:

其中,u(t)表示t時(shí)刻所需的碼率調(diào)整值,kp、ki、kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù),e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,表示所述系統(tǒng)自上一次碼率調(diào)整后至t時(shí)刻時(shí)的誤差量累積值,表示t時(shí)刻時(shí)的誤差量與上一次檢測(cè)所述實(shí)時(shí)碼率時(shí)得到的誤差量的微分。

在該技術(shù)方案中,為了降低短時(shí)間內(nèi)快速變化的網(wǎng)絡(luò)狀況對(duì)視頻數(shù)據(jù)傳輸帶來的影響,提高播放流暢度,系統(tǒng)設(shè)置有視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)。在發(fā)送端和接收端之間,是用tcp協(xié)議進(jìn)行連接的,而tcp協(xié)議在發(fā)送端維護(hù)一個(gè)tcp發(fā)送緩沖區(qū),在接收端維護(hù)一個(gè)tcp接收緩沖區(qū)。因此,可以將整個(gè)視頻直播傳輸?shù)南到y(tǒng)抽象成4個(gè)緩沖區(qū):視頻發(fā)送緩沖區(qū)、tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)、播放緩沖區(qū)。在視頻流暢播放的時(shí)候,單位時(shí)間內(nèi)進(jìn)入視頻發(fā)送緩沖區(qū)的視頻幀數(shù)量和從播放緩沖區(qū)出去的視頻幀數(shù)量是相等的,所以4個(gè)緩沖區(qū)總的視頻幀數(shù)量是一個(gè)固定的值。由于tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)的大小很小,所以可以看成視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值,而視頻發(fā)送緩沖區(qū)存在大量幀的時(shí)候,將導(dǎo)致播放緩沖區(qū)沒有視頻幀或存在較少的視頻幀,具有很大可能性導(dǎo)致視頻播放中斷,故可以通過控制視頻發(fā)送緩沖區(qū)的視頻幀的數(shù)量來控制播放緩沖區(qū)中視頻幀的數(shù)量,因此,本發(fā)明定義的系統(tǒng)狀態(tài)變量是視頻發(fā)送緩沖區(qū)中的視頻幀的數(shù)量。

由此可知,e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,即狀態(tài)變量的變化量,輸出的u(t)代表碼率調(diào)整的大小,將會(huì)被疊加到當(dāng)前設(shè)置的實(shí)時(shí)碼率上,作為下一個(gè)時(shí)刻應(yīng)該設(shè)置的碼率大小,假設(shè)當(dāng)前的碼率為br,那么下一個(gè)時(shí)刻的碼率就是br+u(t)。

通過該技術(shù)方案,不斷地監(jiān)測(cè)狀態(tài)變量的變化,將其與目標(biāo)值進(jìn)行比較,通過誤差量來對(duì)實(shí)際帶寬變化情況進(jìn)行記錄和預(yù)測(cè),計(jì)算控制輸出。然后根據(jù)控制輸出有針對(duì)性地調(diào)整視頻質(zhì)量,使?fàn)顟B(tài)變量盡可能接近目標(biāo)值,從而實(shí)現(xiàn)符合帶寬變化的穩(wěn)定視頻傳輸。

在上述任一技術(shù)方案中,優(yōu)選地,在所述按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,還包括:根據(jù)接收到的第二設(shè)置命令,設(shè)置所述預(yù)定檢測(cè)周期。

在該技術(shù)方案中,是對(duì)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度進(jìn)行周期性檢測(cè),也就是說,每經(jīng)過預(yù)定檢測(cè)周期進(jìn)行一次檢測(cè),這里所述的預(yù)定檢測(cè)周期可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)周期檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的預(yù)定檢測(cè)周期。比如,當(dāng)網(wǎng)速高于標(biāo)準(zhǔn)值時(shí),采用5s的檢測(cè)周期,這樣,在網(wǎng)速快的情況下可以盡可能減少周期性檢測(cè)帶來的功耗及內(nèi)存占用,而當(dāng)網(wǎng)速低于或等于標(biāo)準(zhǔn)值時(shí),采用3s的檢測(cè)周期,以避免因網(wǎng)速過慢而無法及時(shí)調(diào)整碼率,避免直播不流暢。

在上述任一技術(shù)方案中,優(yōu)選地,所述根據(jù)所述碼率調(diào)整值,調(diào)整所述實(shí)時(shí)碼率,具體包括:檢測(cè)所述碼率調(diào)整值是否達(dá)到預(yù)定調(diào)整閾值;當(dāng)確定所述碼率調(diào)整值達(dá)到所述預(yù)定調(diào)整閾值時(shí),按照預(yù)定方向和預(yù)定力度調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,計(jì)算得到碼率調(diào)整值可以直接將其疊加至實(shí)時(shí)碼率進(jìn)行碼率調(diào)整,也可以在碼率調(diào)整值積累達(dá)到預(yù)定調(diào)整閾值再進(jìn)行疊加,避免因多次進(jìn)行較小的碼率調(diào)整值調(diào)整而帶來的能耗和內(nèi)存占用。其中,早對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整時(shí),可以按照預(yù)定方向和預(yù)定力度調(diào)整,預(yù)定方向包括增大或減小,預(yù)定力度相當(dāng)于對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整的速度,比如,計(jì)算得到達(dá)到預(yù)定調(diào)整閾值的碼率調(diào)整值后,按照每秒疊加碼率調(diào)整值的10%的速度,分10s完成碼率調(diào)整,從而可以避免因調(diào)整過快而造成的視頻直播不流暢的缺陷。

其中,為了避免頻繁的小幅度的調(diào)整,還可以對(duì)輸入到pid公式中的e(t)進(jìn)行量化,量化的公式可以表示為:

其中step是量化的步長,為一個(gè)固定的正整數(shù),通過量化可以消除正常小幅度網(wǎng)絡(luò)波動(dòng)帶來的不必要的碼率調(diào)整。

本發(fā)明的另一方面提出了一種基于pid控制的視頻直播傳輸控制系統(tǒng),包括:檢測(cè)單元,按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,其中,所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度為緩沖的視頻幀的數(shù)量;差值計(jì)算單元,計(jì)算所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值;pid計(jì)算單元,將所述差值帶入pid控制公式,以計(jì)算得到當(dāng)前時(shí)刻所需的碼率調(diào)整值;碼率調(diào)整單元,根據(jù)所述碼率調(diào)整值,調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,系統(tǒng)在進(jìn)行視頻直播時(shí),可以根據(jù)視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,利用pid(proportion-integration-differentiation,比例-積分-微分)控制理論實(shí)時(shí)調(diào)整視頻的發(fā)送端提供的視頻流的碼率,即對(duì)實(shí)時(shí)碼率進(jìn)行修正,從而可以將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

其中,pid是一種閉環(huán)的反饋控制機(jī)制,在pid控制系統(tǒng)中,可根據(jù)系統(tǒng)當(dāng)前狀態(tài)與期望狀態(tài)的誤差來計(jì)算一個(gè)控制量,并利用該控制量對(duì)輸入進(jìn)行調(diào)整,從而使系統(tǒng)狀態(tài)趨向于期望狀態(tài)。也就是說,可以根據(jù)當(dāng)前的視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,也就是誤差,來計(jì)算當(dāng)前時(shí)刻所需的碼率調(diào)整值,使實(shí)時(shí)碼率趨向于期望值。

在上述技術(shù)方案中,優(yōu)選地,還包括:第一設(shè)置單元,在所述按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,根據(jù)接收到的第一設(shè)置命令,設(shè)置所述視頻發(fā)送緩沖區(qū)的所述長度目標(biāo)值。

在該技術(shù)方案中,視頻發(fā)送緩沖區(qū)的長度目標(biāo)值可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)目標(biāo)值檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的長度目標(biāo)值。

在上述任一技術(shù)方案中,優(yōu)選地,所述pid控制公式為:

其中,u(t)表示t時(shí)刻所需的碼率調(diào)整值,kp、ki、kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù),e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,表示所述系統(tǒng)自上一次碼率調(diào)整后至t時(shí)刻時(shí)的誤差量累積值,表示t時(shí)刻時(shí)的誤差量與上一次檢測(cè)所述實(shí)時(shí)碼率時(shí)得到的誤差量的微分。

在該技術(shù)方案中,為了降低短時(shí)間內(nèi)快速變化的網(wǎng)絡(luò)狀況對(duì)視頻數(shù)據(jù)傳輸帶來的影響,提高播放流暢度,系統(tǒng)設(shè)置有視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)。在發(fā)送端和接收端之間,是用tcp協(xié)議進(jìn)行連接的,而tcp協(xié)議在發(fā)送端維護(hù)一個(gè)tcp發(fā)送緩沖區(qū),在接收端維護(hù)一個(gè)tcp接收緩沖區(qū)。因此,可以將整個(gè)視頻直播傳輸?shù)南到y(tǒng)抽象成4個(gè)緩沖區(qū):視頻發(fā)送緩沖區(qū)、tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)、播放緩沖區(qū)。在視頻流暢播放的時(shí)候,單位時(shí)間內(nèi)進(jìn)入視頻發(fā)送緩沖區(qū)的視頻幀數(shù)量和從播放緩沖區(qū)出去的視頻幀數(shù)量是相等的,所以4個(gè)緩沖區(qū)總的視頻幀數(shù)量是一個(gè)固定的值。由于tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)的大小很小,所以可以看成視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值,而視頻發(fā)送緩沖區(qū)存在大量幀的時(shí)候,將導(dǎo)致播放緩沖區(qū)沒有視頻幀或存在較少的視頻幀,具有很大可能性導(dǎo)致視頻播放中斷,故可以通過控制視頻發(fā)送緩沖區(qū)的視頻幀的數(shù)量來控制播放緩沖區(qū)中視頻幀的數(shù)量,因此,本發(fā)明定義的系統(tǒng)狀態(tài)變量是視頻發(fā)送緩沖區(qū)中的視頻幀的數(shù)量。

由此可知,e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,即狀態(tài)變量的變化量,輸出的u(t)代表碼率調(diào)整的大小,將會(huì)被疊加到當(dāng)前設(shè)置的實(shí)時(shí)碼率上,作為下一個(gè)時(shí)刻應(yīng)該設(shè)置的碼率大小,假設(shè)當(dāng)前的碼率為br,那么下一個(gè)時(shí)刻的碼率就是br+u(t)。

通過該技術(shù)方案,不斷地監(jiān)測(cè)狀態(tài)變量的變化,將其與目標(biāo)值進(jìn)行比較,通過誤差量來對(duì)實(shí)際帶寬變化情況進(jìn)行記錄和預(yù)測(cè),計(jì)算控制輸出。然后根據(jù)控制輸出有針對(duì)性地調(diào)整視頻質(zhì)量,使?fàn)顟B(tài)變量盡可能接近目標(biāo)值,從而實(shí)現(xiàn)符合帶寬變化的穩(wěn)定視頻傳輸。

在上述任一技術(shù)方案中,優(yōu)選地,還包括:第二設(shè)置單元,在所述按 照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,根據(jù)接收到的第二設(shè)置命令,設(shè)置所述預(yù)定檢測(cè)周期。

在該技術(shù)方案中,是對(duì)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度進(jìn)行周期性檢測(cè),也就是說,每經(jīng)過預(yù)定檢測(cè)周期進(jìn)行一次檢測(cè),這里所述的預(yù)定檢測(cè)周期可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)周期檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的預(yù)定檢測(cè)周期。比如,當(dāng)網(wǎng)速高于標(biāo)準(zhǔn)值時(shí),采用5s的檢測(cè)周期,這樣,在網(wǎng)速快的情況下可以盡可能減少周期性檢測(cè)帶來的功耗及內(nèi)存占用,而當(dāng)網(wǎng)速低于或等于標(biāo)準(zhǔn)值時(shí),采用3s的檢測(cè)周期,以避免因網(wǎng)速過慢而無法及時(shí)調(diào)整碼率,避免直播不流暢。

在上述任一技術(shù)方案中,優(yōu)選地,所述碼率調(diào)整單元具體用于:檢測(cè)所述碼率調(diào)整值是否達(dá)到預(yù)定調(diào)整閾值,其中,當(dāng)確定所述碼率調(diào)整值達(dá)到所述預(yù)定調(diào)整閾值時(shí),按照預(yù)定方向和預(yù)定力度調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,計(jì)算得到碼率調(diào)整值可以直接將其疊加至實(shí)時(shí)碼率進(jìn)行碼率調(diào)整,也可以在碼率調(diào)整值積累達(dá)到預(yù)定調(diào)整閾值再進(jìn)行疊加,避免因多次進(jìn)行較小的碼率調(diào)整值調(diào)整而帶來的能耗和內(nèi)存占用。其中,早對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整時(shí),可以按照預(yù)定方向和預(yù)定力度調(diào)整,預(yù)定方向包括增大或減小,預(yù)定力度相當(dāng)于對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整的速度,比如,計(jì)算得到達(dá)到預(yù)定調(diào)整閾值的碼率調(diào)整值后,按照每秒疊加碼率調(diào)整值的10%的速度,分10s完成碼率調(diào)整,從而可以避免因調(diào)整過快而造成的視頻直播不流暢的缺陷。

其中,為了避免頻繁的小幅度的調(diào)整,還可以對(duì)輸入到pid公式中的e(t)進(jìn)行量化,量化的公式可以表示為:

其中step是量化的步長,為一個(gè)固定的正整數(shù),通過量化可以消除正常小幅度網(wǎng)絡(luò)波動(dòng)帶來的不必要的碼率調(diào)整。

通過以上技術(shù)方案,可以對(duì)實(shí)時(shí)碼率進(jìn)行修正,將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

附圖說明

圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制方法的流程示意圖;

圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)的框圖;

圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的緩沖區(qū)示意圖;

圖4示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的緩沖區(qū)狀態(tài)變量示意圖;

圖5示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)的框圖。

具體實(shí)施方式

為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。

在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開的具體實(shí)施例的限制。

圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制方法的流程示意圖。

如圖1所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制方法,包括:

步驟102,按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,其中,所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度為緩沖的視頻幀的數(shù)量;

步驟104,計(jì)算所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值;

步驟106,將所述差值帶入pid控制公式,以計(jì)算得到當(dāng)前時(shí)刻所需的碼率調(diào)整值;

步驟108,根據(jù)所述碼率調(diào)整值,調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,系統(tǒng)在進(jìn)行視頻直播時(shí),可以根據(jù)視頻發(fā)送緩沖區(qū) 的實(shí)時(shí)長度,利用pid(proportion-integration-differentiation,比例-積分-微分)控制理論實(shí)時(shí)調(diào)整視頻的發(fā)送端提供的視頻流的碼率,即對(duì)實(shí)時(shí)碼率進(jìn)行修正,從而可以將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

其中,pid是一種閉環(huán)的反饋控制機(jī)制,在pid控制系統(tǒng)中,可根據(jù)系統(tǒng)當(dāng)前狀態(tài)與期望狀態(tài)的誤差來計(jì)算一個(gè)控制量,并利用該控制量對(duì)輸入進(jìn)行調(diào)整,從而使系統(tǒng)狀態(tài)趨向于期望狀態(tài)。也就是說,可以根據(jù)當(dāng)前的視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,也就是誤差,來計(jì)算當(dāng)前時(shí)刻所需的碼率調(diào)整值,使實(shí)時(shí)碼率趨向于期望值。

在上述技術(shù)方案中,優(yōu)選地,在步驟102之前,還包括:根據(jù)接收到的第一設(shè)置命令,設(shè)置所述視頻發(fā)送緩沖區(qū)的所述長度目標(biāo)值。

在該技術(shù)方案中,視頻發(fā)送緩沖區(qū)的長度目標(biāo)值可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)目標(biāo)值檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的長度目標(biāo)值。

在上述任一技術(shù)方案中,優(yōu)選地,所述pid控制公式為:

其中,u(t)表示t時(shí)刻所需的碼率調(diào)整值,kp、ki、kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù),e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,表示所述系統(tǒng)自上一次碼率調(diào)整后至t時(shí)刻時(shí)的誤差量累積值,表示t時(shí)刻時(shí)的誤差量與上一次檢測(cè)所述實(shí)時(shí)碼率時(shí)得到的誤差量的微分。

在該技術(shù)方案中,為了降低短時(shí)間內(nèi)快速變化的網(wǎng)絡(luò)狀況對(duì)視頻數(shù)據(jù)傳輸帶來的影響,提高播放流暢度,系統(tǒng)設(shè)置有視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)。在發(fā)送端和接收端之間,是用tcp協(xié)議進(jìn)行連接的,而tcp協(xié)議在發(fā)送端維護(hù)一個(gè)tcp發(fā)送緩沖區(qū),在接收端維護(hù)一個(gè)tcp接收緩沖區(qū)。因此,可以將整個(gè)視頻直播傳輸?shù)南到y(tǒng)抽象成4個(gè)緩沖區(qū):視頻發(fā)送緩沖區(qū)、tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)、播放緩沖區(qū)。在視頻流暢播放的時(shí)候,單位時(shí)間內(nèi)進(jìn)入視頻發(fā)送緩沖區(qū)的視頻幀數(shù)量和從播放緩沖區(qū)出去 的視頻幀數(shù)量是相等的,所以4個(gè)緩沖區(qū)總的視頻幀數(shù)量是一個(gè)固定的值。由于tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)的大小很小,所以可以看成視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值,而視頻發(fā)送緩沖區(qū)存在大量幀的時(shí)候,將導(dǎo)致播放緩沖區(qū)沒有視頻幀或存在較少的視頻幀,具有很大可能性導(dǎo)致視頻播放中斷,故可以通過控制視頻發(fā)送緩沖區(qū)的視頻幀的數(shù)量來控制播放緩沖區(qū)中視頻幀的數(shù)量,因此,本發(fā)明定義的系統(tǒng)狀態(tài)變量是視頻發(fā)送緩沖區(qū)中的視頻幀的數(shù)量。

由此可知,e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,即狀態(tài)變量的變化量,輸出的u(t)代表碼率調(diào)整的大小,將會(huì)被疊加到當(dāng)前設(shè)置的實(shí)時(shí)碼率上,作為下一個(gè)時(shí)刻應(yīng)該設(shè)置的碼率大小,假設(shè)當(dāng)前的碼率為br,那么下一個(gè)時(shí)刻的碼率就是br+u(t)。

通過該技術(shù)方案,不斷地監(jiān)測(cè)狀態(tài)變量的變化,將其與目標(biāo)值進(jìn)行比較,通過誤差量來對(duì)實(shí)際帶寬變化情況進(jìn)行記錄和預(yù)測(cè),計(jì)算控制輸出。然后根據(jù)控制輸出有針對(duì)性地調(diào)整視頻質(zhì)量,使?fàn)顟B(tài)變量盡可能接近目標(biāo)值,從而實(shí)現(xiàn)符合帶寬變化的穩(wěn)定視頻傳輸。

在上述任一技術(shù)方案中,優(yōu)選地,在步驟102之前,還包括:根據(jù)接收到的第二設(shè)置命令,設(shè)置所述預(yù)定檢測(cè)周期。

在該技術(shù)方案中,是對(duì)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度進(jìn)行周期性檢測(cè),也就是說,每經(jīng)過預(yù)定檢測(cè)周期進(jìn)行一次檢測(cè),這里所述的預(yù)定檢測(cè)周期可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)周期檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的預(yù)定檢測(cè)周期。比如,當(dāng)網(wǎng)速高于標(biāo)準(zhǔn)值時(shí),采用5s的檢測(cè)周期,這樣,在網(wǎng)速快的情況下可以盡可能減少周期性檢測(cè)帶來的功耗及內(nèi)存占用,而當(dāng)網(wǎng)速低于或等于標(biāo)準(zhǔn)值時(shí),采用3s的檢測(cè)周期,以避免因網(wǎng)速過慢而無法及時(shí)調(diào)整碼率,避免直播不流暢。

在上述任一技術(shù)方案中,優(yōu)選地,步驟108具體包括:檢測(cè)所述碼率調(diào)整值是否達(dá)到預(yù)定調(diào)整閾值;當(dāng)確定所述碼率調(diào)整值達(dá)到所述預(yù)定調(diào)整閾值時(shí),按照預(yù)定方向和預(yù)定力度調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,計(jì)算得到碼率調(diào)整值可以直接將其疊加至實(shí)時(shí)碼率 進(jìn)行碼率調(diào)整,也可以在碼率調(diào)整值積累達(dá)到預(yù)定調(diào)整閾值再進(jìn)行疊加,避免因多次進(jìn)行較小的碼率調(diào)整值調(diào)整而帶來的能耗和內(nèi)存占用。其中,早對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整時(shí),可以按照預(yù)定方向和預(yù)定力度調(diào)整,預(yù)定方向包括增大或減小,預(yù)定力度相當(dāng)于對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整的速度,比如,計(jì)算得到達(dá)到預(yù)定調(diào)整閾值的碼率調(diào)整值后,按照每秒疊加碼率調(diào)整值的10%的速度,分10s完成碼率調(diào)整,從而可以避免因調(diào)整過快而造成的視頻直播不流暢的缺陷。

其中,為了避免頻繁的小幅度的調(diào)整,還可以對(duì)輸入到pid公式中的e(t)進(jìn)行量化,量化的公式可以表示為:

其中step是量化的步長,為一個(gè)固定的正整數(shù),通過量化可以消除正常小幅度網(wǎng)絡(luò)波動(dòng)帶來的不必要的碼率調(diào)整。

圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)的框圖。

如圖2所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)200,包括:檢測(cè)單元202、差值計(jì)算單元204、pid計(jì)算單元206和碼率調(diào)整單元208。

檢測(cè)單元202用于按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,其中,所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度為緩沖的視頻幀的數(shù)量;差值計(jì)算單元204用于計(jì)算所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值;pid計(jì)算單元206用于將所述差值帶入pid控制公式,以計(jì)算得到當(dāng)前時(shí)刻所需的碼率調(diào)整值;碼率調(diào)整單元208用于根據(jù)所述碼率調(diào)整值,調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,系統(tǒng)在進(jìn)行視頻直播時(shí),可以根據(jù)視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,利用pid(proportion-integration-differentiation,比例-積分-微分)控制理論實(shí)時(shí)調(diào)整視頻的發(fā)送端提供的視頻流的碼率,即對(duì)實(shí)時(shí)碼率進(jìn)行修正,從而可以將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

其中,pid是一種閉環(huán)的反饋控制機(jī)制,在pid控制系統(tǒng)中,可根據(jù)系統(tǒng)當(dāng)前狀態(tài)與期望狀態(tài)的誤差來計(jì)算一個(gè)控制量,并利用該控制量對(duì)輸入進(jìn)行調(diào)整,從而使系統(tǒng)狀態(tài)趨向于期望狀態(tài)。也就是說,可以根據(jù)當(dāng)前的視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,也就是誤差,來計(jì)算當(dāng)前時(shí)刻所需的碼率調(diào)整值,使實(shí)時(shí)碼率趨向于期望值。

在上述技術(shù)方案中,優(yōu)選地,還包括:第一設(shè)置單元210,在所述按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,根據(jù)接收到的第一設(shè)置命令,設(shè)置所述視頻發(fā)送緩沖區(qū)的所述長度目標(biāo)值。

在該技術(shù)方案中,視頻發(fā)送緩沖區(qū)的長度目標(biāo)值可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)目標(biāo)值檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的長度目標(biāo)值。

在上述任一技術(shù)方案中,優(yōu)選地,所述pid控制公式為:

其中,u(t)表示t時(shí)刻所需的碼率調(diào)整值,kp、ki、kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù),e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,表示所述系統(tǒng)自上一次碼率調(diào)整后至t時(shí)刻時(shí)的誤差量累積值,表示t時(shí)刻時(shí)的誤差量與上一次檢測(cè)所述實(shí)時(shí)碼率時(shí)得到的誤差量的微分。

在該技術(shù)方案中,為了降低短時(shí)間內(nèi)快速變化的網(wǎng)絡(luò)狀況對(duì)視頻數(shù)據(jù)傳輸帶來的影響,提高播放流暢度,系統(tǒng)設(shè)置有視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)。在發(fā)送端和接收端之間,是用tcp協(xié)議進(jìn)行連接的,而tcp協(xié)議在發(fā)送端維護(hù)一個(gè)tcp發(fā)送緩沖區(qū),在接收端維護(hù)一個(gè)tcp接收緩沖區(qū)。因此,可以將整個(gè)視頻直播傳輸?shù)南到y(tǒng)抽象成4個(gè)緩沖區(qū):視頻發(fā)送緩沖區(qū)、tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)、播放緩沖區(qū)。在視頻流暢播放的時(shí)候,單位時(shí)間內(nèi)進(jìn)入視頻發(fā)送緩沖區(qū)的視頻幀數(shù)量和從播放緩沖區(qū)出去的視頻幀數(shù)量是相等的,所以4個(gè)緩沖區(qū)總的視頻幀數(shù)量是一個(gè)固定的值。由于tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)的大小很小,所以可以看成視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值,而視頻發(fā)送緩沖區(qū)存在大量幀的時(shí)候,將導(dǎo)致播放緩沖區(qū)沒有視頻幀或存在較少的視頻幀,具 有很大可能性導(dǎo)致視頻播放中斷,故可以通過控制視頻發(fā)送緩沖區(qū)的視頻幀的數(shù)量來控制播放緩沖區(qū)中視頻幀的數(shù)量,因此,本發(fā)明定義的系統(tǒng)狀態(tài)變量是視頻發(fā)送緩沖區(qū)中的視頻幀的數(shù)量。

由此可知,e(t)表示t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值,即狀態(tài)變量的變化量,輸出的u(t)代表碼率調(diào)整的大小,將會(huì)被疊加到當(dāng)前設(shè)置的實(shí)時(shí)碼率上,作為下一個(gè)時(shí)刻應(yīng)該設(shè)置的碼率大小,假設(shè)當(dāng)前的碼率為br,那么下一個(gè)時(shí)刻的碼率就是br+u(t)。

通過該技術(shù)方案,不斷地監(jiān)測(cè)狀態(tài)變量的變化,將其與目標(biāo)值進(jìn)行比較,通過誤差量來對(duì)實(shí)際帶寬變化情況進(jìn)行記錄和預(yù)測(cè),計(jì)算控制輸出。然后根據(jù)控制輸出有針對(duì)性地調(diào)整視頻質(zhì)量,使?fàn)顟B(tài)變量盡可能接近目標(biāo)值,從而實(shí)現(xiàn)符合帶寬變化的穩(wěn)定視頻傳輸。

在上述任一技術(shù)方案中,優(yōu)選地,還包括:第二設(shè)置單元212,在所述按照預(yù)定檢測(cè)周期檢測(cè)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度之前,根據(jù)接收到的第二設(shè)置命令,設(shè)置所述預(yù)定檢測(cè)周期。

在該技術(shù)方案中,是對(duì)系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度進(jìn)行周期性檢測(cè),也就是說,每經(jīng)過預(yù)定檢測(cè)周期進(jìn)行一次檢測(cè),這里所述的預(yù)定檢測(cè)周期可以由用戶手動(dòng)調(diào)整設(shè)置,或者也可以設(shè)置多個(gè)周期檔位供用戶選擇,另外,還可以由系統(tǒng)根據(jù)實(shí)時(shí)碼率,自動(dòng)設(shè)置與網(wǎng)絡(luò)狀況相適宜的預(yù)定檢測(cè)周期。比如,當(dāng)網(wǎng)速高于標(biāo)準(zhǔn)值時(shí),采用5s的檢測(cè)周期,這樣,在網(wǎng)速快的情況下可以盡可能減少周期性檢測(cè)帶來的功耗及內(nèi)存占用,而當(dāng)網(wǎng)速低于或等于標(biāo)準(zhǔn)值時(shí),采用3s的檢測(cè)周期,以避免因網(wǎng)速過慢而無法及時(shí)調(diào)整碼率,避免直播不流暢。

在上述任一技術(shù)方案中,優(yōu)選地,碼率調(diào)整單元208具體用于:檢測(cè)所述碼率調(diào)整值是否達(dá)到預(yù)定調(diào)整閾值,其中,當(dāng)確定所述碼率調(diào)整值達(dá)到所述預(yù)定調(diào)整閾值時(shí),按照預(yù)定方向和預(yù)定力度調(diào)整所述實(shí)時(shí)碼率。

在該技術(shù)方案中,計(jì)算得到碼率調(diào)整值可以直接將其疊加至實(shí)時(shí)碼率進(jìn)行碼率調(diào)整,也可以在碼率調(diào)整值積累達(dá)到預(yù)定調(diào)整閾值再進(jìn)行疊加,避免因多次進(jìn)行較小的碼率調(diào)整值調(diào)整而帶來的能耗和內(nèi)存占用。其中,早對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整時(shí),可以按照預(yù)定方向和預(yù)定力度調(diào)整,預(yù)定方向 包括增大或減小,預(yù)定力度相當(dāng)于對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整的速度,比如,計(jì)算得到達(dá)到預(yù)定調(diào)整閾值的碼率調(diào)整值后,按照每秒疊加碼率調(diào)整值的10%的速度,分10s完成碼率調(diào)整,從而可以避免因調(diào)整過快而造成的視頻直播不流暢的缺陷。

其中,為了避免頻繁的小幅度的調(diào)整,還可以對(duì)輸入到pid公式中的e(t)進(jìn)行量化,量化的公式可以表示為:

其中step是量化的步長,為一個(gè)固定的正整數(shù),通過量化可以消除正常小幅度網(wǎng)絡(luò)波動(dòng)帶來的不必要的碼率調(diào)整。

圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的緩沖區(qū)示意圖。

為了降低短時(shí)間內(nèi)快速變化的網(wǎng)絡(luò)狀況對(duì)視頻數(shù)據(jù)傳輸帶來的影響,提高播放流暢度,系統(tǒng)設(shè)置有視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)。在發(fā)送端和接收端之間,是用tcp協(xié)議進(jìn)行連接的,而tcp協(xié)議在發(fā)送端維護(hù)一個(gè)tcp發(fā)送緩沖區(qū),在接收端維護(hù)一個(gè)tcp接收緩沖區(qū)。因此,如圖3所示,可以將整個(gè)視頻直播傳輸?shù)南到y(tǒng)抽象成4個(gè)緩沖區(qū):視頻發(fā)送緩沖區(qū)、tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)、播放緩沖區(qū)。在視頻流暢播放的時(shí)候,單位時(shí)間內(nèi)進(jìn)入視頻發(fā)送緩沖區(qū)的視頻幀數(shù)量和從播放緩沖區(qū)出去的視頻幀數(shù)量是相等的,所以4個(gè)緩沖區(qū)總的視頻幀數(shù)量是一個(gè)固定的值。由于tcp發(fā)送緩沖區(qū)、tcp接收緩沖區(qū)的大小很小,所以可以看成視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值。

所以,可以通過控制視頻發(fā)送緩沖區(qū)的視頻幀的數(shù)量來控制播放緩沖區(qū)中視頻幀的數(shù)量。根據(jù)tcp協(xié)議的特點(diǎn),當(dāng)視頻發(fā)送緩沖區(qū)存在一定量的視頻幀的時(shí)候,tcp發(fā)送緩沖區(qū)是充滿的,在這種情況下達(dá)到了最大的發(fā)送速度。視頻發(fā)送緩沖區(qū)存在大量幀的時(shí)候,將導(dǎo)致播放緩沖區(qū)沒有視頻幀或存在較少的視頻幀,具有很大可能性導(dǎo)致視頻播放中斷。

因此,本發(fā)明定義的系統(tǒng)狀態(tài)變量是視頻發(fā)送緩沖區(qū)中的視頻幀的數(shù)量。通過該技術(shù)方案,不斷地監(jiān)測(cè)狀態(tài)變量的變化,將其與目標(biāo)值進(jìn)行比較,通過誤差量來對(duì)實(shí)際帶寬變化情況進(jìn)行記錄和預(yù)測(cè),計(jì)算控制輸出。然后根據(jù)控制輸出有針對(duì)性地調(diào)整視頻質(zhì)量,使?fàn)顟B(tài)變量盡可能接近目標(biāo) 值,從而實(shí)現(xiàn)符合帶寬變化的穩(wěn)定視頻傳輸。

在本發(fā)明中,對(duì)系統(tǒng)的狀態(tài)變量進(jìn)行控制主要有兩個(gè)目標(biāo),一個(gè)是盡可能充分利用網(wǎng)絡(luò)帶寬,一個(gè)是保證接收端能夠流暢播放。

一方面,將緩沖區(qū)的長度記為緩沖的視頻幀的數(shù)量,將播放緩沖區(qū)的最大長度記為s0,初始情況下,當(dāng)播放緩沖區(qū)達(dá)到了最大長度s0時(shí),接收端才開始播放視頻。在播放過程中,如果播放緩沖區(qū)的長度減少為0,那么接收端需要等到播放緩沖區(qū)達(dá)到最大長度的時(shí)候才重新開始播放視頻。因此,當(dāng)播放緩沖區(qū)的長度減少為0時(shí),會(huì)導(dǎo)致播放的中斷。

故在對(duì)系統(tǒng)進(jìn)行控制的過程中,首先需要保證播放緩沖區(qū)的長度大于0。在連續(xù)播放的情況下,視頻發(fā)送緩沖區(qū)、播放緩沖區(qū)中視頻幀之和是一個(gè)定值,約等于s0,因此,可以通過控制視頻發(fā)送緩沖區(qū)的長度小于s0來保證播放緩沖區(qū)的長度大于0,即可保證接收端能夠流暢播放。

另一方面,為了盡可能充分利用帶寬提高視頻質(zhì)量,需要保證tcp發(fā)送緩沖區(qū)盡可能充滿。這一點(diǎn)可以通過控制視頻發(fā)送緩沖區(qū)的長度大于0來實(shí)現(xiàn),在這種情況下tcp發(fā)送緩沖區(qū)始終處于充滿狀態(tài)。因此,直接控制的目標(biāo)就是控制視頻發(fā)送緩沖區(qū)的長度為s1,其中s1大于0且小于s0。

為此,本發(fā)明首先定義系統(tǒng)的狀態(tài)變量是視頻發(fā)送緩沖區(qū)的長度s,這個(gè)變量可以反映當(dāng)前的視頻碼率和網(wǎng)絡(luò)吞吐量直接的關(guān)系,s(t)表示時(shí)刻t視頻發(fā)送緩沖區(qū)的長度。當(dāng)碼率大于網(wǎng)絡(luò)吞吐量,s(t)呈增長的趨勢(shì);當(dāng)碼率小于網(wǎng)絡(luò)吞吐量,s(t)呈減小為0的趨勢(shì);當(dāng)碼率接近于網(wǎng)絡(luò)吞吐量時(shí),s(t)保持相對(duì)穩(wěn)定。比如,可以設(shè)置s的目標(biāo)值是0.2s0,記為sr,其中,s0是播放緩沖區(qū)的最大長度,記錄s與目標(biāo)值地偏差為e,在時(shí)刻t,狀態(tài)變量與目標(biāo)值的誤差記為e(t);若當(dāng)前s(t)大于sr,則e(t)為負(fù)值,反之,e(t)為正值。

如圖4所示,當(dāng)前視頻發(fā)送緩沖區(qū)中幀數(shù)量是s(t),目標(biāo)值是st,因此e(t)=sr-s(t)。將e(t)代入pid公式可以得到對(duì)碼率調(diào)整的反饋信息,故根據(jù)pid控制模型,系統(tǒng)的控制器的輸出為:

其中,u(t)表示t時(shí)刻所需的碼率調(diào)整值,kp、ki、kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù),表示系統(tǒng)自上一次碼率調(diào)整后至t時(shí)刻時(shí)的誤差量累積值,表示t時(shí)刻時(shí)的誤差量與上一次檢測(cè)實(shí)時(shí)碼率時(shí)得到的誤差量的微分。

這一個(gè)輸出的u(t)代表碼率調(diào)整的大小,將會(huì)被作為下一個(gè)時(shí)刻應(yīng)該設(shè)置的碼率大小,疊加到當(dāng)前設(shè)置的視頻碼率上,如果當(dāng)前的碼率為br,那么下一個(gè)時(shí)刻的碼率就是br+u(t)。

在具體應(yīng)用中,本發(fā)明按照一定的周期t進(jìn)行上述的系統(tǒng)狀態(tài)檢查和碼率調(diào)整,系統(tǒng)使用的狀態(tài)變量s(t)可以取為在上一個(gè)周期t內(nèi)的視頻發(fā)送緩沖區(qū)中平均幀數(shù)量,從而增加了視頻直播的穩(wěn)定性。為了避免頻繁的小幅度的調(diào)整,本發(fā)明還可以對(duì)輸入到pid公式中的e(t)進(jìn)行量化,量化的公式可以表示為:

其中step是量化的步長,為一個(gè)固定的正整數(shù),通過量化可以消除正常小幅度網(wǎng)絡(luò)波動(dòng)帶來的不必要的碼率調(diào)整。

圖5示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)的框圖。

如圖5所示,根據(jù)本發(fā)明的另一個(gè)實(shí)施例的基于pid控制的視頻直播傳輸控制系統(tǒng)500,包括:緩沖區(qū)信息獲取模塊502、pid碼率計(jì)算模塊504和視頻碼率調(diào)整模塊506,緩沖區(qū)信息獲取模塊502結(jié)合實(shí)際網(wǎng)絡(luò)環(huán)境,獲取系統(tǒng)的實(shí)時(shí)碼率和視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,并通過pid碼率計(jì)算模塊504計(jì)算碼率調(diào)整值,最后,視頻碼率調(diào)整模塊506根據(jù)碼率調(diào)整值對(duì)實(shí)時(shí)碼率進(jìn)行調(diào)整。

其中,基于pid控制的視頻直播傳輸控制系統(tǒng)500不僅能夠用于rtmp協(xié)議,還可以擴(kuò)展到其他基于tcp的應(yīng)用層流媒體傳輸協(xié)議,如http協(xié)議(hypertexttransferprotocol,超文本傳輸協(xié)議)、rtsp協(xié)議(realtimestreamingprotocol,實(shí)時(shí)流傳輸協(xié)議)等,具有通用性。

具體地,可以通過檢測(cè)到的誤差變量進(jìn)行碼率調(diào)整。在每個(gè)檢測(cè)時(shí)間點(diǎn),獲取狀態(tài)變量的值,也就是視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度,然后與長度 目標(biāo)值進(jìn)行比較,得出誤差變量。

對(duì)誤差變量計(jì)算如下三部分的值:

比例部分,這一部分就是誤差量本身,作為對(duì)當(dāng)前網(wǎng)絡(luò)帶寬和傳輸狀況匹配度的反饋,以驅(qū)動(dòng)系統(tǒng)狀態(tài)變量不斷趨近目標(biāo),即t時(shí)刻時(shí)所述視頻發(fā)送緩沖區(qū)的實(shí)時(shí)長度與長度目標(biāo)值的差值e(t)與比例系數(shù)乘積。

積分部分,這一部分是系統(tǒng)自上次質(zhì)量調(diào)整之后誤差量的累積,長時(shí)間的監(jiān)測(cè)數(shù)據(jù)可以反映近段時(shí)間內(nèi)帶寬變化的平均情況,目的是以減小頻繁調(diào)整質(zhì)量從而造成波動(dòng)的可能性。

其中,積分部分=誤差量1+誤差量2+…+誤差量n,1、2、…、n為自上一次質(zhì)量調(diào)整以來的誤差量檢測(cè)索引。

微分部分,這一部分是當(dāng)前時(shí)刻誤差量與上一檢測(cè)時(shí)間點(diǎn)誤差量的微分,主要用途是預(yù)測(cè)帶寬的變化趨勢(shì),以使?fàn)顟B(tài)變量盡快趨近目標(biāo)。

其中,微分部分(本次誤差變量-上次誤差變量)/檢測(cè)間隔時(shí)間。

以上各部分經(jīng)過加權(quán)求和后形成控制輸出。

其中,控制輸出=比例系數(shù)×比例部分+積分系數(shù)×積分部分+微分系數(shù)×微分部分。

其中,三個(gè)系數(shù)根據(jù)控制領(lǐng)域的經(jīng)典方法,進(jìn)行確定,如齊格勒-尼科爾斯方法,也可人工進(jìn)行調(diào)整。根據(jù)得到的控制輸出和當(dāng)前傳輸?shù)拇a率,可以決定是否進(jìn)行視頻質(zhì)量調(diào)節(jié),以及調(diào)節(jié)的方向和力度。

因此,通過該技術(shù)方案,可以有效地調(diào)整直播視頻的碼率,保持播放的流程性,同時(shí)充分利用帶寬提高視頻質(zhì)量,其關(guān)鍵之處在于利用積分部分來減小頻繁調(diào)整的可能性,并利用微分部分來預(yù)測(cè)帶寬變化。

以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,通過本發(fā)明的技術(shù)方案,可以對(duì)實(shí)時(shí)碼率進(jìn)行修正,將視頻發(fā)送緩沖區(qū)的數(shù)據(jù)量維持在理想的狀態(tài),實(shí)現(xiàn)了視頻質(zhì)量根據(jù)網(wǎng)絡(luò)狀況的自適應(yīng),在提升視頻直播的流暢程度,盡可能地充分利用網(wǎng)絡(luò)帶寬以達(dá)到較高視頻質(zhì)量。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 科技| 三河市| 京山县| 陆良县| 朝阳市| 华宁县| 宜都市| 积石山| 台湾省| 新安县| 平泉县| 民权县| 平安县| 克山县| 泽库县| 肃北| 全椒县| 二手房| 凤山县| 呼图壁县| 鹤峰县| 台安县| 汝南县| 屯留县| 桐庐县| 麻栗坡县| 安图县| 鹤岗市| 呼伦贝尔市| 建水县| 中西区| 金溪县| 嘉兴市| 古蔺县| 长葛市| 儋州市| 和田市| 鄂温| 渭南市| 勐海县| 攀枝花市|