本發(fā)明涉及流媒體傳輸領(lǐng)域,涉及一種流媒體傳輸方法。
背景技術(shù):
實(shí)時(shí)流媒體是下一代網(wǎng)絡(luò)的主要傳輸對(duì)象,將極大地影響人們?nèi)粘I?。使用傳輸?shí)時(shí)流媒體具有對(duì)網(wǎng)絡(luò)狀況反應(yīng)迅速、友好、易于為防火墻所接受、便于實(shí)現(xiàn)與維護(hù)等優(yōu)點(diǎn),但同時(shí)也存在著傳輸中無(wú)法自適應(yīng)網(wǎng)絡(luò)可用帶寬的波動(dòng)、重傳易增加媒體包的延時(shí)抖動(dòng)等問(wèn)題,這些都大幅降低了實(shí)時(shí)流媒體的服務(wù)質(zhì)量與傳輸質(zhì)量,因此,需要突破以上問(wèn)題,尋找一種良好的流媒體傳輸方法。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種解決或部分解決上述問(wèn)題的流媒體傳輸方法。為達(dá)到上述技術(shù)方案的效果,本發(fā)明的技術(shù)方案為:一種流媒體傳輸方法,包含以下步驟:
1)在網(wǎng)絡(luò)開(kāi)始播放視頻,當(dāng)播放請(qǐng)求開(kāi)始時(shí),將視頻通過(guò)以每秒50幀的固有采樣頻率進(jìn)行采樣轉(zhuǎn)換成視頻幀,將視頻幀以每秒20幀的幀率送入編碼器進(jìn)行編碼壓縮,編碼器的編碼時(shí)延等于幀率的倒數(shù);
2)將編碼壓縮后的視頻幀送入應(yīng)用發(fā)送緩沖區(qū),應(yīng)用發(fā)送緩沖區(qū)用于臨時(shí)存儲(chǔ)編碼壓縮后的視頻幀,在應(yīng)用發(fā)送緩沖區(qū)中使用流量調(diào)度模型決定如何處理應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀;
流量調(diào)度模型設(shè)置應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別,當(dāng)發(fā)現(xiàn)應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀為空時(shí),根據(jù)編碼器的編碼時(shí)延以及應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別,提取符合編碼器的編碼時(shí)延的編碼壓縮后的視頻幀送入應(yīng)用發(fā)送緩沖區(qū)中,將應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀根據(jù)應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別調(diào)入TCP發(fā)送緩沖區(qū),并且保證TCP發(fā)送緩沖區(qū)中只存在一個(gè)編碼壓縮后的視頻幀,對(duì)應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀根據(jù)緩沖時(shí)間自適應(yīng)算法進(jìn)行相應(yīng)處理,緩沖時(shí)間自適應(yīng)算法將應(yīng)用發(fā)送緩沖區(qū)中的緩存看作是動(dòng)態(tài)變化的,并且設(shè)置預(yù)留緩存去暫時(shí)存放應(yīng)用發(fā)送緩沖區(qū)溢出的編碼壓縮后的視頻幀,在不存在溢出現(xiàn)象時(shí),對(duì)預(yù)留緩存進(jìn)行回收,并記錄預(yù)留緩存的回收率、應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別;
應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別被分為延時(shí)等級(jí)一、延時(shí)等級(jí)二、延時(shí)等級(jí)三;延時(shí)等級(jí)一表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間為0,即如果應(yīng)用發(fā)送緩沖區(qū)中存在兩個(gè)及以上的編碼壓縮后的視頻幀時(shí),只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的編碼壓縮后的視頻幀,相反應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀直接經(jīng)過(guò)應(yīng)用發(fā)送緩沖區(qū)進(jìn)入TCP發(fā)送緩沖區(qū);延時(shí)等級(jí)二表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間等于編碼器的編碼時(shí)延,即應(yīng)用發(fā)送緩沖區(qū)中最多存在兩個(gè)編碼壓縮后的視頻幀,只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的兩個(gè)編碼壓縮后的視頻幀;延時(shí)等級(jí)三表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間等于編碼器的編碼時(shí)延的2倍,即應(yīng)用發(fā)送緩沖區(qū)中最多存在三個(gè)編碼壓縮后的視頻幀,只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的三個(gè)編碼壓縮后的視頻幀;
3)到達(dá)TCP發(fā)送緩沖區(qū)的編碼壓縮后的視頻幀將首先被協(xié)議棧根據(jù)其的大小分為多個(gè)報(bào)文段,對(duì)報(bào)文段進(jìn)行排序,并且用序號(hào)進(jìn)行標(biāo)識(shí),將TCP發(fā)送緩沖區(qū)中的報(bào)文段發(fā)送給TCP接收緩沖區(qū),其中,依照滑動(dòng)窗口和擁塞控制機(jī)制來(lái)控制多個(gè)報(bào)文段的發(fā)送,在發(fā)送的過(guò)程中使用發(fā)送控制器,發(fā)送控制器中存在著一個(gè)報(bào)文大小的緩存,當(dāng)發(fā)送時(shí),將正在發(fā)送的報(bào)文連同序號(hào)、發(fā)送的時(shí)間存入發(fā)送控制器的緩存中,并監(jiān)視報(bào)文段的發(fā)送,當(dāng)序號(hào)不連續(xù)時(shí),發(fā)現(xiàn)報(bào)文段丟失,確定丟失的報(bào)文段,從發(fā)送控制器的緩存取出報(bào)文段;
4)在所述TCP接收緩沖區(qū)中,將多個(gè)報(bào)文段重構(gòu)恢復(fù)成編碼壓縮后的所述視頻幀,將其通過(guò)解碼器進(jìn)行解碼并恢復(fù)成視頻幀,立即送入接收方播放緩沖區(qū);
5)設(shè)置視頻的播放速率以及視頻幀在接收方播放緩沖區(qū)中的等待時(shí)間,視頻幀在接收方播放緩沖區(qū)中的等待時(shí)間等于視頻的播放速率倒數(shù)的兩倍,視頻幀在接收方播放緩沖區(qū)經(jīng)過(guò)接收方播放緩沖區(qū)中的等待時(shí)間后,才能進(jìn)行視頻的播放。
本發(fā)明的有益成果是:本發(fā)明在應(yīng)用層建立了一個(gè)發(fā)送緩沖區(qū),通過(guò)對(duì)視頻幀在該緩沖區(qū)和TCP發(fā)送緩沖區(qū)之間進(jìn)行調(diào)度,大幅度減少了視頻幀的等待延時(shí),進(jìn)而顯著降低了總的端到端的延時(shí),并使得傳輸速率能夠匹配網(wǎng)絡(luò)的可用帶寬,確保視頻的服務(wù)質(zhì)量。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。應(yīng)當(dāng)說(shuō)明的是,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明,能實(shí)現(xiàn)同樣功能的產(chǎn)品屬于等同替換和改進(jìn),均包含在本發(fā)明的保護(hù)范圍之內(nèi)。具體方法如下:
實(shí)施例1:本發(fā)明設(shè)置了多個(gè)緩沖區(qū),緩沖區(qū)的特性如下:
TCP發(fā)送緩沖區(qū)由協(xié)議棧管理和維護(hù),應(yīng)用程序并不能處理該緩沖區(qū)中的數(shù)據(jù),緩沖區(qū)中的所有視頻幀都必須依據(jù)的流量與擁塞控制機(jī)制進(jìn)行發(fā)送,因此當(dāng)一個(gè)視頻幀仍處于發(fā)送狀態(tài),而后續(xù)視頻幀又已進(jìn)入發(fā)送緩沖區(qū)時(shí),需要對(duì)其中進(jìn)行處理,發(fā)送速率較小,而應(yīng)用層的視頻幀數(shù)據(jù)仍以固定幀率持續(xù)送入發(fā)送緩沖區(qū)時(shí),將最終導(dǎo)致發(fā)送緩沖區(qū)溢出,從而使得隨后產(chǎn)生的視頻幀將被直接丟棄,造成視頻播放質(zhì)量的顯著降低或丟失重要場(chǎng)景信息。
應(yīng)用程序無(wú)法直接管理或者繞過(guò)發(fā)送緩沖區(qū),克服其固有的缺點(diǎn),本發(fā)明設(shè)計(jì)了一個(gè)位于應(yīng)用層的發(fā)送緩沖區(qū),為應(yīng)用在編碼后的視頻幀進(jìn)入TCP發(fā)送緩沖區(qū)以前,先將其送入該應(yīng)用緩沖區(qū)。
設(shè)計(jì)的應(yīng)用發(fā)送緩沖區(qū)用于臨時(shí)存儲(chǔ)編碼后的視頻幀,并根據(jù)調(diào)度模型對(duì)所存儲(chǔ)的視頻幀進(jìn)行調(diào)度。應(yīng)用發(fā)送緩沖區(qū)具有延時(shí)級(jí)別,應(yīng)用發(fā)送緩沖區(qū)的延時(shí)級(jí)別被分為延時(shí)等級(jí)一、延時(shí)等級(jí)二、延時(shí)等級(jí)三;延時(shí)等級(jí)一表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間為0,即如果應(yīng)用發(fā)送緩沖區(qū)中存在兩個(gè)及以上的編碼壓縮后的視頻幀時(shí),只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的編碼壓縮后的視頻幀,相反應(yīng)用發(fā)送緩沖區(qū)中的編碼壓縮后的視頻幀直接經(jīng)過(guò)應(yīng)用發(fā)送緩沖區(qū)進(jìn)入TCP發(fā)送緩沖區(qū);延時(shí)等級(jí)二表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間等于編碼器的編碼時(shí)延,即應(yīng)用發(fā)送緩沖區(qū)中最多存在兩個(gè)編碼壓縮后的視頻幀,只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的兩個(gè)編碼壓縮后的視頻幀;延時(shí)等級(jí)三表示在應(yīng)用發(fā)送緩沖區(qū)的等待時(shí)間等于編碼器的編碼時(shí)延的2倍,即應(yīng)用發(fā)送緩沖區(qū)中最多存在三個(gè)編碼壓縮后的視頻幀,只保留最先送入應(yīng)用發(fā)送緩沖區(qū)的三個(gè)編碼壓縮后的視頻幀;
接收緩沖區(qū)的特性在于它不會(huì)將提前到達(dá)、亂序到達(dá)的報(bào)文段提前提交給應(yīng)用層,而是必須等待一個(gè)窗口中的所有報(bào)文段都到達(dá)以后才向應(yīng)用層提交數(shù)據(jù)。這保證了報(bào)文段的丟失或者是亂序到達(dá)對(duì)于應(yīng)用程序而言是透明的,應(yīng)用程序無(wú)需再進(jìn)行丟包檢測(cè)與排序工作。
實(shí)施例二:對(duì)緩沖區(qū)的進(jìn)一步優(yōu)化:
播放緩沖區(qū)位于應(yīng)用層,其設(shè)計(jì)目的是為了消除視頻幀的不規(guī)則到達(dá)所造成的抖動(dòng),所有被發(fā)送緩沖區(qū)提交給應(yīng)用層的視頻幀會(huì)首先進(jìn)入播放緩沖區(qū),并最多等待一個(gè)播放延時(shí)。播放緩沖區(qū)的另一個(gè)重要用途在于消除重傳所造成的延時(shí)抖動(dòng),即如果傳輸過(guò)程中造成了報(bào)文段丟失,如果丟失報(bào)文段的重傳所引起的較大延時(shí)能夠被播放緩沖區(qū)消除,則這種丟失與重傳對(duì)于接受方應(yīng)用程序是透明的。本發(fā)明對(duì)播放緩沖區(qū)采取靜態(tài)法和動(dòng)態(tài)法相結(jié)合的方式,即在會(huì)話初始階段采用靜態(tài)法設(shè)置播放緩沖延時(shí)為固定的兩個(gè)幀大小,即緩沖區(qū)延時(shí)為兩倍的編碼延時(shí),并據(jù)此來(lái)設(shè)定視頻幀發(fā)送延時(shí)需要滿足的必要條件而當(dāng)發(fā)現(xiàn)網(wǎng)絡(luò)擁塞較為嚴(yán)重,使用自適應(yīng)傳輸策略仍然不能有效消除延遲抖動(dòng)時(shí),則依據(jù)模型,采用動(dòng)態(tài)法對(duì)播放緩沖進(jìn)行適當(dāng)調(diào)整。
對(duì)應(yīng)用發(fā)送緩沖緩沖區(qū)進(jìn)一步優(yōu)化,記錄視頻幀的總數(shù)和被應(yīng)用層發(fā)送緩沖區(qū)丟棄的視頻幀的總數(shù),據(jù)此計(jì)算丟棄率。當(dāng)網(wǎng)絡(luò)擁塞嚴(yán)重,造成網(wǎng)絡(luò)丟包現(xiàn)象增多時(shí),會(huì)立即縮小擁塞窗口大小,從而造成視頻幀的發(fā)送延時(shí)增加,緩沖區(qū)的丟棄率也會(huì)相應(yīng)增加。反之,當(dāng)網(wǎng)絡(luò)狀況較好時(shí),丟棄率的值也會(huì)相應(yīng)減小,能夠判斷網(wǎng)絡(luò)狀況的變化。另一方面,當(dāng)視頻幀的編碼間隔時(shí)間減小,即幀率增加時(shí),發(fā)送方的發(fā)送速率會(huì)相應(yīng)增加,從而造成網(wǎng)絡(luò)可用帶寬減少,增加網(wǎng)絡(luò)的擁塞程度。反之,幀率減少時(shí),發(fā)送速率降低,會(huì)緩解擁塞程度,因此,可通過(guò)調(diào)節(jié)幀率來(lái)使得發(fā)送速率能適應(yīng)網(wǎng)絡(luò)的可用帶寬,改善網(wǎng)絡(luò)的擁塞程度。通過(guò)緩沖區(qū)的丟棄率,可以反映出網(wǎng)絡(luò)的擁塞狀況,而通過(guò)調(diào)整幀率來(lái)調(diào)整發(fā)送速率,使得速率能夠適應(yīng)網(wǎng)絡(luò)可用帶寬,可以充分利用現(xiàn)有的網(wǎng)絡(luò)帶寬傳輸更多的視頻信息,從而提高視覺(jué)質(zhì)量。
以上所述僅為本發(fā)明之較佳實(shí)施例,并非用以限定本發(fā)明的權(quán)利要求保護(hù)范圍。同時(shí)以上說(shuō)明,對(duì)于相關(guān)技術(shù)領(lǐng)域的技術(shù)人員應(yīng)可以理解及實(shí)施,因此其他基于本發(fā)明所揭示內(nèi)容所完成的等同改變,均應(yīng)包含在本權(quán)利要求書(shū)的涵蓋范圍內(nèi)。
本發(fā)明的有益成果是:本發(fā)明在應(yīng)用層建立了一個(gè)發(fā)送緩沖區(qū),通過(guò)對(duì)視頻幀在該緩沖區(qū)和TCP發(fā)送緩沖區(qū)之間進(jìn)行調(diào)度,大幅度減少了視頻幀的等待延時(shí),進(jìn)而顯著降低了總的端到端的延時(shí),并使得傳輸速率能夠匹配網(wǎng)絡(luò)的可用帶寬,確保視頻的服務(wù)質(zhì)量。