欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器的制造方法

文檔序號:7769567閱讀:282來源:國知局
一種視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器的制造方法
【專利摘要】本發(fā)明公開一種視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器。所述視頻編碼及網(wǎng)絡(luò)傳輸方法包括步驟:A、對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流;將能流暢播放基準(zhǔn)碼流的最低帶寬定義為基準(zhǔn)帶寬;B、判斷實(shí)時帶寬,如果實(shí)時帶寬低于基準(zhǔn)帶寬,采用主動丟幀的方式從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像,生成對外傳輸?shù)陌l(fā)送碼流;如果在抽幀以后,實(shí)時帶寬有增加,則采用主動加幀的方式從已抽離的幀數(shù)據(jù)中加入至少一幀的圖像數(shù)據(jù);如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,對外傳輸基準(zhǔn)碼流。本發(fā)明每幀的畫面品質(zhì)并沒有降低且能保障視頻的流暢播放,因此能改善不同帶寬情況下的視頻質(zhì)量;且不會增加額外的通信成本。
【專利說明】一種視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體信號處理領(lǐng)域,更具體的說,涉及一種視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)視頻傳輸系統(tǒng)需要考慮的主要問題是帶寬使用問題,視頻數(shù)據(jù)帶寬占用大和網(wǎng)絡(luò)帶寬有限一直是限制互聯(lián)網(wǎng)視頻傳輸系統(tǒng)的關(guān)鍵瓶頸?;ヂ?lián)網(wǎng)的服務(wù)質(zhì)量(QoS:Quality of Service)基本可以滿足普通小數(shù)據(jù)業(yè)務(wù)處理,但是卻無法有效保障視頻大數(shù)據(jù)的端到端傳輸過程,對有一定實(shí)時性要求的視頻傳輸來說,必須要解決互聯(lián)網(wǎng)視頻數(shù)據(jù)傳輸過程中IP網(wǎng)絡(luò)的延時、抖動和丟包等問題。
[0003]在互聯(lián)網(wǎng)網(wǎng)絡(luò)環(huán)境中,視頻傳輸質(zhì)量需要依賴的環(huán)境因素包括帶寬、延時抖動、丟包。帶寬指網(wǎng)絡(luò)的兩個節(jié)點(diǎn)之間數(shù)據(jù)流的平均速率,一般來說,帶寬越高,就能允許更多的視頻數(shù)據(jù)傳輸,從而會提供更好的視頻效果。由于互聯(lián)網(wǎng)同時承載多種服務(wù),主要是數(shù)據(jù)業(yè)務(wù),而視頻業(yè)務(wù)相對而言屬于大數(shù)據(jù),明顯在數(shù)據(jù)流量和實(shí)時性上與互聯(lián)網(wǎng)當(dāng)前業(yè)務(wù)有較大差別,導(dǎo)致視頻業(yè)務(wù)在互聯(lián)網(wǎng)上的帶寬非常不平穩(wěn)。
[0004]延時指數(shù)據(jù)包在網(wǎng)絡(luò)的兩個節(jié)點(diǎn)之間傳送的平均往返時間?;ヂ?lián)網(wǎng)數(shù)據(jù)延時主要取決于由于網(wǎng)絡(luò)的復(fù)雜性、網(wǎng)絡(luò)流量的動態(tài)變化和網(wǎng)絡(luò)路由的動態(tài)選擇。網(wǎng)絡(luò)延時隨時都在不停的變化,這種變化稱為抖動。網(wǎng)絡(luò)延時和網(wǎng)絡(luò)抖動越小,網(wǎng)絡(luò)的質(zhì)量就越好?;ヂ?lián)網(wǎng)視頻傳輸業(yè)務(wù)對實(shí)時性要求較高,對時延很敏感,如果時延過大或者抖動過大,視頻接收端的視頻體驗(yàn)就會大打折扣。
[0005]丟包指在網(wǎng)絡(luò)傳輸過程中丟失報(bào)文的百分比,實(shí)際IP網(wǎng)絡(luò)環(huán)境中由于網(wǎng)絡(luò)設(shè)備擁塞而導(dǎo)致報(bào)文丟失,當(dāng)有網(wǎng)絡(luò)丟包時,將會影響視頻質(zhì)量,比如:圖像產(chǎn)生花屏或馬賽克、聲音出現(xiàn)斷續(xù)等,嚴(yán)重時會導(dǎo)致視頻中斷。如果我們在發(fā)送端持續(xù)不斷發(fā)送的視頻數(shù)據(jù)在互聯(lián)網(wǎng)上嚴(yán)重丟包,視頻接收端是無法得到良好的視頻體驗(yàn)的。
[0006]為了解決上述問題,當(dāng)前技術(shù)一般采用以下方式解決:
[0007]視頻帶寬預(yù)留:采用預(yù)先預(yù)留的固定帶寬來傳輸視頻數(shù)據(jù),比如使用VPN通道,或者其他廣域虛擬專網(wǎng)。若預(yù)留帶寬充裕,視頻傳輸質(zhì)量可以穩(wěn)定和清晰。目前市場很多視頻會議采用帶寬預(yù)留模式,缺點(diǎn)是成本較高,部署不夠靈活。相對而言互聯(lián)網(wǎng)上做視頻傳輸成本更低,更加靈活。
[0008]超低碼流傳輸:采用盡量小壓縮視頻的碼流進(jìn)行端到端傳輸。假設(shè)一個基準(zhǔn)帶寬,視頻壓縮盡量壓縮到基準(zhǔn)帶寬的碼流大小。檢測基準(zhǔn)帶寬,保證壓縮碼流小于基準(zhǔn)帶寬,由于碼流被壓縮到基準(zhǔn)帶寬區(qū)域后,延時和丟包會減少,以此來滿足視頻QoS。缺點(diǎn)是碼流只能適配最差網(wǎng)絡(luò)帶寬,視頻質(zhì)量整體不高,用戶體驗(yàn)不好。

【發(fā)明內(nèi)容】

[0009]本發(fā)明所要解決的技術(shù)問題是提供一種低成本、能改善不同帶寬情況下視頻質(zhì)量的視頻編碼及網(wǎng)絡(luò)傳輸方法和一種視頻轉(zhuǎn)發(fā)服務(wù)器。
[0010]本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:
[0011]一種視頻編碼及網(wǎng)絡(luò)傳輸方法,包括步驟:
[0012]A、對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流;將能流暢播放基準(zhǔn)碼流的最低帶寬定義為基準(zhǔn)帶寬;
[0013]B、判斷實(shí)時帶寬,如果實(shí)時帶寬低于基準(zhǔn)帶寬,采用主動丟幀的方式從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像,生成對外傳輸?shù)陌l(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,對外傳輸基準(zhǔn)碼流。
[0014]顯示制式定義了每秒顯示的幀數(shù),如PLA制式定義每秒顯示25幀;NTSC制式定義每秒顯不30巾貞;
[0015]進(jìn)一步的,所述步驟B包括:將發(fā)送單幀需要的時間分成N個時間區(qū)段,針對每個時間區(qū)段,對應(yīng)設(shè)置N種不同丟幀的場景,每個場景對應(yīng)一種發(fā)送碼流;如果實(shí)時帶寬發(fā)送單幀需要的時間大于基準(zhǔn)帶寬發(fā)送單幀需要的時間,則根據(jù)實(shí)時帶寬發(fā)送單幀所處的時間區(qū)段自動匹配對應(yīng)的場景;反之,對外傳輸基準(zhǔn)碼流,所述N為整數(shù)且N > 2。由于現(xiàn)實(shí)中的網(wǎng)絡(luò)經(jīng)常處于波動狀態(tài),因此可以預(yù)先定義場景,每個場景對應(yīng)一種發(fā)送碼流,然后將不同的帶寬區(qū)間跟場景一一對應(yīng),當(dāng)實(shí)時帶寬達(dá)到某一帶寬區(qū)間后自動選擇相應(yīng)的場景。本技術(shù)方案在一定的帶寬范圍內(nèi)保持發(fā)送碼流不變,不需要頻繁計(jì)算不同的帶寬需要從基準(zhǔn)碼流中抽離多少幀圖像,減輕了硬件的運(yùn)算負(fù)擔(dān),有利于降低硬件成本,同時可以有更多的硬件資源來確保視頻的實(shí)時傳輸,保障顯示質(zhì)量。
[0016]進(jìn)一步的,所述步驟B中包括:設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第一閾值,如果待發(fā)送隊(duì)列存儲的幀數(shù)超過第一閾值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。此為一種根據(jù)服務(wù)器發(fā)送端的實(shí)時寬帶判斷策略,對于像采用如TCP通信協(xié)議的網(wǎng)絡(luò),可以從服務(wù)器端的待發(fā)送隊(duì)列讀取存儲的幀數(shù),如果存儲的幀數(shù)過多,服務(wù)器的發(fā)送端會自動將多余的幀清除,這樣就會導(dǎo)致接收端的圖像不完整;因此本技術(shù)方案可以有效避免發(fā)送端擁堵導(dǎo)致被動丟幀的情況,確保視頻顯示流暢。
[0017]進(jìn)一步的,所述步驟B中包括:
[0018]設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第二閾值;
[0019]如果待發(fā)送隊(duì)列里面的幀數(shù)始終小于或等于預(yù)設(shè)的第二閾值,或者待發(fā)送隊(duì)列里面的幀數(shù)在預(yù)設(shè)的時間內(nèi)先增加,后減小,最后待發(fā)送隊(duì)列里面的幀數(shù)小于或等于第二閾值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0020]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。
[0021]實(shí)時帶寬增加時,待發(fā)送隊(duì)列存儲的幀數(shù)會逐步減少,最終會小于或等于預(yù)設(shè)的第二閾值(一般為O或1),即便網(wǎng)絡(luò)出現(xiàn)波動,等波動平緩以后仍然會小于或等于預(yù)設(shè)的第二閾值,此時可以采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像,即每隔一定的時間在發(fā)送碼流中增加一幀,然后再判斷待發(fā)送隊(duì)列存儲的幀數(shù),如果仍然滿足上述條件,繼續(xù)加幀直到不滿足條件為止;此時如果發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景,則自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。當(dāng)帶寬增加時,本技術(shù)方案通過單次累加的方式來探測出其實(shí)際帶寬,然后匹配最佳的場景,最大限度的利用當(dāng)前的帶寬資源,在帶寬增加時給客戶提供更聞品質(zhì)的視頻圖像。
[0022]進(jìn)一步的,所述步驟B中包括:
[0023]設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第三閾值;第三閾值大于或等于所述第二閾值;
[0024]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果發(fā)送隊(duì)列里面的幀數(shù)超過第三閾值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0025]本技術(shù)方案提供了一種單次累加探測帶寬的回退機(jī)制,在保持當(dāng)前場景的基礎(chǔ)上單次累加探測帶寬,隨著發(fā)送碼流中幀數(shù)的增加,服務(wù)器發(fā)送端待發(fā)送隊(duì)列存儲幀數(shù)也開始增加,當(dāng)數(shù)量達(dá)到一定數(shù)值(第三閾值)時,為了避免發(fā)送隊(duì)列存儲的幀數(shù)過多導(dǎo)致被動丟幀的情況,采用逆向減幀逐步減少發(fā)送碼流中的幀圖像,等發(fā)送隊(duì)列存儲的幀數(shù)小于或等于預(yù)設(shè)的第二閾值時再通過單次累加探測帶寬。因此,本方案可以在確保視頻實(shí)時流暢傳輸?shù)那疤嵯绿綔y出實(shí)際帶寬,然后匹配出最佳的丟幀模式。
[0026]進(jìn)一步的,所述步驟B中包括:設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第一閾值、第二閾值和第三閾值,所述第三閾值大于或等于第二閾值,小于第一閾值;
[0027]如果待發(fā)送隊(duì)列存儲的幀數(shù)超過第一閾值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;
[0028]如果待發(fā)送隊(duì)列里面的幀數(shù)始終小于或等于預(yù)設(shè)的第二閾值,或者待發(fā)送隊(duì)列里面的幀數(shù)在預(yù)設(shè)的時間內(nèi)先增加,后減小,最后待發(fā)送隊(duì)列里面的幀數(shù)小于或等于第二閾值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0029]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;
[0030]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果發(fā)送隊(duì)列里面的幀數(shù)超過第三閾值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像;
[0031]對于像采用如TCP協(xié)議通信的網(wǎng)絡(luò),可以從服務(wù)器端的待發(fā)送隊(duì)列讀取存儲的幀數(shù),如果存儲的幀數(shù)過多,服務(wù)器的發(fā)送端會自動將多余的幀清除,這樣就會導(dǎo)致接收端的圖像不完整;因此本實(shí)施方式可以有效避免發(fā)送端擁堵導(dǎo)致被動丟幀的情況,確保視頻顯示流暢。
[0032]實(shí)時帶寬增加時,待發(fā)送隊(duì)列存儲的幀數(shù)會逐步減少,最終會小于或等于預(yù)設(shè)的第二閾值(一般為O或1),即便網(wǎng)絡(luò)出現(xiàn)波動,等波動平緩以后仍然會小于或等于預(yù)設(shè)的第二閾值,此時可以采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像,即每隔一定的時間在發(fā)送碼流中增加一幀,然后再判斷待發(fā)送隊(duì)列存儲的幀數(shù),如果仍然滿足上述條件,繼續(xù)加幀直到不滿足條件為止;此時如果發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景,則自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。當(dāng)帶寬增加時,通過單次累加的方式來探測出其實(shí)際帶寬可以適配服務(wù)器的緩沖策略,可以更加精準(zhǔn)的匹配實(shí)時的發(fā)送效果,不需要復(fù)雜的實(shí)時帶寬計(jì)算。因此,該實(shí)施方式最大限度的利用當(dāng)前的帶寬資源,在帶寬增加時給客戶提供更高品質(zhì)的視頻圖像。[0033]在保持當(dāng)前場景的基礎(chǔ)上單次累加探測帶寬,隨著發(fā)送碼流中幀數(shù)的增加,服務(wù)器發(fā)送端待發(fā)送隊(duì)列存儲幀數(shù)也開始增加,當(dāng)數(shù)量達(dá)到一定數(shù)值(第三閾值)時,為了避免發(fā)送隊(duì)列存儲的幀數(shù)過多導(dǎo)致被動丟幀的情況,采用逆向減幀逐步減少發(fā)送碼流中的幀圖像,等發(fā)送隊(duì)列存儲的幀數(shù)小于或等于預(yù)設(shè)的第二閾值時再通過單次累加探測帶寬。因此,本方案可以在確保視頻實(shí)時流暢傳輸?shù)那疤嵯绿綔y出實(shí)際帶寬,然后匹配出最佳的丟幀模式。
[0034]進(jìn)一步的,所述步驟B中包括:服務(wù)器的發(fā)送端接收客戶側(cè)的接收端的反饋信息,如果反饋信息滿足預(yù)設(shè)的觸發(fā)條件,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。此為一種根據(jù)客戶側(cè)反饋信息來判斷實(shí)時寬帶的方式,適用于如UDP通信協(xié)議一類的網(wǎng)絡(luò),可以從客戶端的反饋信息來判斷實(shí)時帶寬。
[0035]進(jìn)一步的,所述反饋信息包括接收單幀數(shù)據(jù)的延時時間和丟包率,所述觸發(fā)條件包括預(yù)設(shè)的第一時間值和第一丟包率;如果接收單幀數(shù)據(jù)的延時時間超過第一時間值或丟包率超過第一丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。接收單幀數(shù)據(jù)的延時時間如果過長,說明該幀有可能未被客戶側(cè)的接收端接收到,導(dǎo)致接收端的圖像不完整;同理,客戶側(cè)的接收端會判斷一段時間內(nèi)的丟包率,如果丟包率過高,即便接收單幀數(shù)據(jù)的延時不長,仍然會被動丟失大量的幀圖像,同樣會影響圖像的顯示效果,因此本技術(shù)方案可以有效避免發(fā)送端擁堵導(dǎo)致被動丟幀的情況,確保接收端能接收到流程的視頻圖像。
[0036]進(jìn)一步的,所述反饋信息包括接收單幀數(shù)據(jù)的延時時間,所述觸發(fā)條件還包括預(yù)設(shè)的第二時間值和第二丟包率;如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于第二丟包率,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,且丟包率小于或等于第二丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0037]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。
[0038]實(shí)時帶寬增加時,接收單幀數(shù)據(jù)的延時時間會逐步縮短,最終會小于或等于預(yù)設(shè)的第二時間值,即便網(wǎng)絡(luò)出現(xiàn)波動,等波動平緩以后仍然會小于或等于預(yù)設(shè)的第二時間值,此時可以采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像,即每隔一定的時間在發(fā)送碼流中增加一幀,然后再判斷接收單幀數(shù)據(jù)的延時時間及相應(yīng)的丟包率如果仍然滿足上述條件,繼續(xù)加幀直到不滿足條件為止;此時,如果發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景,則自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。當(dāng)帶寬增加時,本技術(shù)方案通過單次累加的方式來探測出其實(shí)際帶寬,然后匹配最佳的場景,最大限度的利用當(dāng)前的帶寬資源,在帶寬增加時給客戶提供更聞品質(zhì)的視頻圖像。
[0039]進(jìn)一步的,所述步驟B中包括:
[0040]所述觸發(fā)條件還包括預(yù)設(shè)的第三時間值和第三丟包率;第三時間值大于或等于所述第二時間值,第三丟包率大于或等于所述第二丟包率;
[0041]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,或者丟包率大于第三丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0042]本技術(shù)方案提供了一種單次累加探測帶寬的回退機(jī)制,在保持當(dāng)前場景的基礎(chǔ)上單次累加探測帶寬,隨著發(fā)送碼流中幀數(shù)的增加,接收單幀數(shù)據(jù)的延時時間也開始增加,當(dāng)時間上升到一定數(shù)值(第三時間值)時,為了避免時間過長導(dǎo)致被動丟幀的情況,采用逆向減幀逐步減少發(fā)送碼流中的幀圖像,等發(fā)送隊(duì)列存儲的幀數(shù)小于或等于預(yù)設(shè)的第二時間值時再通過單次累加探測帶寬。因此,本方案可以在確保視頻實(shí)時流暢傳輸?shù)那疤嵯绿綔y出實(shí)際帶寬,然后匹配出最佳的丟幀模式。
[0043]進(jìn)一步的,所述步驟B中包括:所述觸發(fā)條件包括第一時間值、第二時間值、第三時間值和基準(zhǔn)丟包率,所述第三時間值大于或等于第二時間值,小于第一時間值;
[0044]如果接收單幀數(shù)據(jù)的延時超過第一時間值或丟包率超過基準(zhǔn)丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;
[0045]如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于基準(zhǔn)丟包率,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,且丟包率小于或等于基準(zhǔn)丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0046]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;
[0047]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,或者丟包率大于基準(zhǔn)丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0048]進(jìn)一步的,所述步驟B中包括:所述觸發(fā)條件包括第一時間值、第二時間值和第三時間值,所述第三時間值大于或等于第二時間值,小于第一時間值;
[0049]如果接收單幀數(shù)據(jù)的延時超過第一時間值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;
[0050]如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0051]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;
[0052]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0053]此為一種僅依靠接收單幀數(shù)據(jù)的延時作為觸發(fā)條件的技術(shù)方案。有利于簡化控制,降低開發(fā)周期和成本。
[0054]進(jìn)一步的,所述步驟B中包括:所述觸發(fā)條件包括第一丟包率、第二丟包率和第三丟包率,所述第三丟包率大于或等于第二丟包率,小于第一丟包率;
[0055]如果接收數(shù)據(jù)的丟包率超過第一丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;
[0056]如果接收數(shù)據(jù)的丟包率始終小于或等于預(yù)設(shè)的第二丟包率,或者接收數(shù)據(jù)的丟包率在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收數(shù)據(jù)的丟包率小于或等于第二丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0057]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;
[0058]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收數(shù)據(jù)的丟包率超過第三丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0059]此為一種僅依靠丟包率作為觸發(fā)條件的技術(shù)方案。有利于簡化控制,降低開發(fā)周期和成本。
[0060]進(jìn)一步的,所述步驟B中包括:抽離的幀圖像數(shù)據(jù)所在位置插入調(diào)換幀數(shù)據(jù),調(diào)換幀數(shù)據(jù)包括在標(biāo)準(zhǔn)視頻協(xié)議或私有協(xié)議下可以準(zhǔn)確解碼調(diào)換幀需要的的包括緩存操作在內(nèi)的操作指令。標(biāo)準(zhǔn)解碼器會根據(jù)每個接收到幀數(shù)據(jù)的包頭信息,維護(hù)一個解碼幀緩存(如H.264中的DPB buffer),保留正確的參考幀和顯示順序。如果中間缺少了幀圖像的數(shù)據(jù),有的解碼器的解碼幀緩存順序會錯,使時間順序后的解碼幀產(chǎn)生錯誤。為了適應(yīng)所有標(biāo)準(zhǔn)解碼器,我們在抽離的幀圖像所在位置填入調(diào)換幀,這樣幀序列仍然是連續(xù)的,無論抽離多少幀圖像,都能產(chǎn)生像基準(zhǔn)碼流一樣標(biāo)準(zhǔn)的碼流。調(diào)換幀只需要包含準(zhǔn)確的解碼幀操作指令,保證所有標(biāo)準(zhǔn)解碼器可解,數(shù)據(jù)量很小,如在H.264標(biāo)準(zhǔn)中,整個調(diào)換幀的數(shù)據(jù)量只有幾個到30幾字節(jié)。
[0061]進(jìn)一步的,所述標(biāo)準(zhǔn)視頻協(xié)議包括H.264或H.265視頻標(biāo)準(zhǔn),在H.264或H.265視頻標(biāo)準(zhǔn)中,所述調(diào)換巾貞包括NAL數(shù)據(jù)包,所述操作指令集成在所述NAL數(shù)據(jù)包中。NAL(Network Abstraction Layer:網(wǎng)絡(luò)抽象層)是H.264/AVC影像編碼標(biāo)準(zhǔn)的一部份,以NAL-unit (NAL模組)為單位的方式來做為視訊編碼層(Video Coding Layer, VCL)的運(yùn)算單位。因此將操作指令集成到NAL數(shù)據(jù)包中有利于標(biāo)準(zhǔn)解碼器進(jìn)行解碼操作。
[0062]一種視頻轉(zhuǎn)發(fā)服務(wù)器,所述視頻轉(zhuǎn)發(fā)服務(wù)器包括對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流的編碼模塊;
[0063]判斷實(shí)時寬帶的檢測模塊;
[0064]根據(jù)檢測模塊的帶寬信息,將基準(zhǔn)碼流轉(zhuǎn)換成發(fā)送碼流的自適應(yīng)模塊;
[0065]如果實(shí)時帶寬低于基準(zhǔn)帶寬,自適應(yīng)模塊從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像形成發(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,自適應(yīng)模塊輸出基準(zhǔn)碼流;
[0066]所述基準(zhǔn)帶寬是指能流暢播放基準(zhǔn)碼流的最低帶寬。
[0067]本發(fā)明以一個基準(zhǔn)帶寬對視頻圖像進(jìn)行預(yù)先編碼,生成基準(zhǔn)碼流,當(dāng)實(shí)時帶寬低于基準(zhǔn)碼流碼流時,主動從基準(zhǔn)碼流抽離部分幀圖像,以確保在當(dāng)前帶寬條件下能流暢播放。這樣在實(shí)時帶寬達(dá)到或超過基準(zhǔn)帶寬時,接收端可以流暢收看基準(zhǔn)碼流的視頻;而當(dāng)實(shí)時帶寬低于基準(zhǔn)帶寬時,接收端仍然可以流暢收看發(fā)送碼流的視頻。雖然發(fā)送碼流經(jīng)過抽幀處理,但人眼對畫質(zhì)的變動和圖像的卡頓現(xiàn)象比較敏感,在一定范圍內(nèi)對每秒幀數(shù)的變動不敏感,本發(fā)明每幀的畫面品質(zhì)并沒有降低且能保障視頻的流暢播放,因此能改善不同帶寬情況下的視頻質(zhì)量;另外,不發(fā)明無須架設(shè)任何專線,完全可以基于普通的互聯(lián)網(wǎng)來實(shí)施,不會增加額外的通信成本。
【專利附圖】

【附圖說明】
[0068]圖1是本發(fā)明視頻編碼及網(wǎng)絡(luò)傳輸方法流程示意圖;
[0069]圖2是本發(fā)明視頻轉(zhuǎn)發(fā)服務(wù)器的原理框圖;
[0070]圖3是本發(fā)明實(shí)施例基于場景的視頻編碼及網(wǎng)絡(luò)傳輸方法流程示意圖;
[0071]圖4是本發(fā)明實(shí)施例基于TCP協(xié)議場景的視頻編碼及網(wǎng)絡(luò)傳輸方法流程示意圖。
【具體實(shí)施方式】
[0072]如圖1所示,本發(fā)明公開了一種視頻編碼及網(wǎng)絡(luò)傳輸方法,包括步驟:
[0073]A、對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流;將能流暢播放基準(zhǔn)碼流的最低帶寬定義為基準(zhǔn)帶寬;
[0074]B、判斷實(shí)時帶寬,如果實(shí)時帶寬低于基準(zhǔn)帶寬,采用主動丟幀的方式從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像,生成對外傳輸?shù)陌l(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,對外傳輸基準(zhǔn)碼流。
[0075]如圖2所示,本發(fā)明還公開了一種視頻轉(zhuǎn)發(fā)服務(wù)器。視頻轉(zhuǎn)發(fā)服務(wù)器包括對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流的編碼模塊;
[0076]判斷實(shí)時寬帶的檢測模塊;
[0077]根據(jù)檢測模塊的帶寬信息,將基準(zhǔn)碼流轉(zhuǎn)換成發(fā)送碼流的自適應(yīng)模塊;
[0078]如果實(shí)時帶寬低于基準(zhǔn)帶寬,自適應(yīng)模塊從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像形成發(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,自適應(yīng)模塊輸出基準(zhǔn)碼流;
[0079]基準(zhǔn)帶寬是指能流暢播放基準(zhǔn)碼流的最低帶寬。
[0080]顯示制式定義了每秒顯示的幀數(shù),如PLA制式定義每秒顯示25幀;NTSC制式定義每秒顯不30巾貞;
[0081]本發(fā)明以一個基準(zhǔn)帶寬對視頻圖像進(jìn)行預(yù)先編碼,生成基準(zhǔn)碼流,當(dāng)實(shí)時帶寬低于基準(zhǔn)碼流碼流時,主動從基準(zhǔn)碼流抽離部分幀圖像,以確保在當(dāng)前帶寬條件下能流暢播放。這樣在實(shí)時帶寬達(dá)到或超過基準(zhǔn)帶寬時,接收端可以流暢收看基準(zhǔn)碼流的視頻;而當(dāng)實(shí)時帶寬低于基準(zhǔn)帶寬時,接收端仍然可以流暢收看發(fā)送碼流的視頻。雖然發(fā)送碼流經(jīng)過抽幀處理,但人眼對畫質(zhì)的變動和圖像的卡頓現(xiàn)象比較敏感,在一定范圍內(nèi)對每秒幀數(shù)的變動不敏感,本發(fā)明每幀的畫面品質(zhì)并沒有降低且能保障視頻的流暢播放,因此能改善不同帶寬情況下的視頻質(zhì)量;另外,不發(fā)明無須架設(shè)任何專線,完全可以基于普通的互聯(lián)網(wǎng)來實(shí)施,不會增加額外的通信成本。
[0082]結(jié)合附圖和較佳的實(shí)施例對本發(fā)明作進(jìn)一步說明。
[0083]實(shí)施例一
[0084]如圖3所示,本實(shí)施方式公開了一種視頻編碼及網(wǎng)絡(luò)傳輸方法。該視頻編碼及網(wǎng)絡(luò)傳輸方法包括步驟:
[0085]對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流;將能流暢播放基準(zhǔn)碼流的最低帶寬定義為基準(zhǔn)帶寬;
[0086]將發(fā)送單幀需要的時間分成4個時間區(qū)段,針對每個時間區(qū)段,對應(yīng)設(shè)置4種不同丟幀的場景,每個場景對應(yīng)一種發(fā)送碼流;如果實(shí)時帶寬發(fā)送單幀需要的時間大于基準(zhǔn)帶寬發(fā)送單幀需要的時間,則根據(jù)實(shí)時帶寬發(fā)送單幀所處的時間區(qū)段自動匹配對應(yīng)的場景;反之,對外傳輸基準(zhǔn)碼流。
[0087]如果發(fā)送端在該單位時間t之內(nèi)發(fā)送s出超過一半不到全部s入,則需要將s入的數(shù)據(jù)折半為s入/2,丟棄一半的中貞。
[0088]如果發(fā)送端在該單位時間t之內(nèi)發(fā)送s出超過1/4不到l/2s入,則需要將s入的數(shù)據(jù)折半為s入/4,丟棄3/4的幀。
[0089]如果發(fā)送端在該單位時間t之內(nèi)發(fā)送s出超過1/8不到l/4s入,則需要將s入的數(shù)據(jù)折半為s入/8,丟棄7/8的幀。
[0090]如果發(fā)送端在該單位時間t之內(nèi)發(fā)送s出超過1/16不到l/8s入,則需要將s入的數(shù)據(jù)折半為s入/16,丟棄15/16的中貞。
[0091]由于PAL制式視頻每秒25幀,所以s入丟棄15/16的幀后,會產(chǎn)生I秒以上的幀間隔,嚴(yán)重影響用戶的視覺體驗(yàn),所以丟幀上限為15/16。再往上丟更多的幀意義不大,此時帶寬無法支撐足夠友好的視頻體驗(yàn),只能采用直接僅傳I幀(關(guān)鍵幀)的模式,接收端畫面長期停滯緩慢更新。300kbps碼率格式Dl的碼流最多可以丟棄近似280kbps,剩余20kbps傳輸。
[0092]丟幀的方式,以一個關(guān)鍵幀I幀作為一個起始序號0,后面每個幀的序號為自動加
I。丟1/2的幀需要保留可以被2的I次冪整除的序號的幀;丟3/4的幀需要保留可以被2的2次冪整除的序號的幀;丟7/8的幀需要保留可以被2的3次冪整除的序號的幀;丟15/16的幀需要保留可以被2的4次冪整除的序號的幀。如果不被2的η次冪整除的序號的中貞中包含了關(guān)鍵巾貞,則保留關(guān)鍵巾貞。保留在基準(zhǔn)碼流中可以被2的η次幕整除的序號的中貞為一種等間距的抽幀策略,每兩個保留幀之間抽離的幀數(shù)相等,保障了畫面的連續(xù)性;視頻編碼一般會設(shè)置關(guān)鍵幀和比較幀,關(guān)鍵幀采用幀內(nèi)編碼,而且比較幀是根據(jù)關(guān)鍵幀來編碼,所以保留關(guān)鍵幀有利于保障視頻圖像的連貫性。
[0093]理想模式如下(按PAL制式幀率做參考):
[0094]丟15/16幀數(shù)的場景下,每640ms發(fā)送完一幀;否則只發(fā)I幀。
[0095]丟7/8巾貞數(shù)的場景下,每320ms發(fā)送完一巾貞;超過320ms時,如果該發(fā)送速率下發(fā)送時間小于640ms,則改為每640ms發(fā)送完一中貞。
[0096]丟3/4巾貞數(shù)的場景下,每160ms發(fā)送完一巾貞;超過160ms時,如果該發(fā)送速率下發(fā)送時間小于320ms,則改為每320ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于640ms,則改為每640ms發(fā)送完一中貞。
[0097]丟1/2巾貞數(shù)的場景下,每80ms發(fā)送完一巾貞;超過80ms時,如果該發(fā)送速率下發(fā)送時間小于160ms,則改為每160ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于320ms,則改為每320ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于640ms,則改為每640ms發(fā)送完一幀。
[0098]不丟巾貞的場景下,每40ms發(fā)送完一巾貞;超過40ms時,如果該發(fā)送速率下發(fā)送時間小于80ms,則改為每80ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于160ms,則改為每160ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于320ms,則改為每320ms發(fā)送完一巾貞,如果該發(fā)送速率下發(fā)送時間小于640ms,則改為每640ms發(fā)送完一中貞。
[0099]由于現(xiàn)實(shí)中的網(wǎng)絡(luò)經(jīng)常處于波動狀態(tài),因此可以預(yù)先定義場景,每個場景對應(yīng)一種發(fā)送碼流,然后將不同的帶寬區(qū)間跟場景一一對應(yīng),當(dāng)實(shí)時帶寬達(dá)到某一帶寬區(qū)間后自動選擇相應(yīng)的場景。本技術(shù)方案在一定的帶寬范圍內(nèi)保持發(fā)送碼流不變,不需要頻繁計(jì)算不同的帶寬需要從基準(zhǔn)碼流中抽離多少幀圖像,減輕了硬件的運(yùn)算負(fù)擔(dān),有利于降低硬件成本,同時可以有更多的硬件資源來確保視頻的實(shí)時傳輸,保障顯示質(zhì)量。當(dāng)然,本發(fā)明的時間區(qū)段不局限于4個,可以根據(jù)具體需要進(jìn)一步細(xì)分成更多個,如6個、8個;也可以適當(dāng)縮減成I個、2個或3個;具體抽幀方式也不局限于2的η次冪整除的序號,還可以選用其他等間距的規(guī)則進(jìn)行抽幀。在硬件資源足夠的情況下,也可以不定義場景;直接根據(jù)帶寬的變動實(shí)時選擇最佳的抽幀方式。
[0100]抽幀方式意味著發(fā)送碼流中的幀圖像序號是不連續(xù)的,而標(biāo)準(zhǔn)解碼器會根據(jù)每個接收到幀數(shù)據(jù)的包頭信息,維護(hù)一個解碼幀緩存(如H.264中的DPB buffer),保留正確的參考幀和顯示順序。如果中間缺少了幀圖像的數(shù)據(jù),有的解碼器的解碼幀緩存順序會錯,使時間順序后的解碼幀產(chǎn)生錯誤。為了適應(yīng)所有標(biāo)準(zhǔn)解碼器,我們在抽離的幀圖像數(shù)據(jù)所在位置填入調(diào)換幀數(shù)據(jù),這樣幀序列仍然是連續(xù)的,無論抽離多少幀圖像,都能產(chǎn)生像基準(zhǔn)碼流一樣標(biāo)準(zhǔn)的碼流。調(diào)換幀數(shù)據(jù)包括在標(biāo)準(zhǔn)視頻協(xié)議或私有協(xié)議下可以準(zhǔn)確解碼調(diào)換幀需要的的包括緩存操作在內(nèi)的操作指令,保證所有標(biāo)準(zhǔn)解碼器可解,因此調(diào)換幀的數(shù)據(jù)量很小,如在H.264標(biāo)準(zhǔn)中,整個調(diào)換幀的數(shù)據(jù)量只有幾個到30幾個字節(jié)。
[0101 ] 標(biāo)準(zhǔn)視頻協(xié)議包括H.264或H.265視頻標(biāo)準(zhǔn),在H.264或H.265視頻標(biāo)準(zhǔn)中,調(diào)換中貞包括NAL數(shù)據(jù)包,所述操作指令集成在所述NAL數(shù)據(jù)包中。NAL (Network AbstractionLayer:網(wǎng)絡(luò)抽象層)是H.264/AVC影像編碼標(biāo)準(zhǔn)的一部份,以NAL_unit (NAL模組)為單位的方式來做為視訊編碼層(Video Coding Layer, VCL)的運(yùn)算單位。因此將操作指令集成到NAL數(shù)據(jù)包中有利于標(biāo)準(zhǔn)解碼器進(jìn)行解碼操作。
[0102]在實(shí)際應(yīng)用中,網(wǎng)絡(luò)經(jīng)常處于動態(tài)波動的狀態(tài),視頻轉(zhuǎn)發(fā)服務(wù)器并不能非常準(zhǔn)確地獲得帶寬數(shù)據(jù)。以發(fā)送端具有緩沖的通信協(xié)議為例,可以設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第一閾值、第二閾值和第三閾值,第三閾值大于或等于第二閾值,小于第一閾值。如果待發(fā)送隊(duì)列存儲的幀數(shù)超過第一閾值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;如果待發(fā)送隊(duì)列里面的幀數(shù)始終小于或等于預(yù)設(shè)的第二閾值,或者待發(fā)送隊(duì)列里面的幀數(shù)在預(yù)設(shè)的時間內(nèi)先增加,后減小,最后待發(fā)送隊(duì)列里面的幀數(shù)小于或等于第二閾值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像。
[0103]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。
[0104]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果發(fā)送隊(duì)列里面的幀數(shù)超過第三閾值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0105]如圖3所示,對于像采用如TCP協(xié)議通信的網(wǎng)絡(luò),實(shí)際網(wǎng)絡(luò)抖動對應(yīng)用層的影響最終會反饋到單位時間發(fā)送成功的數(shù)據(jù)量。對應(yīng)于該類型的協(xié)議,可以通過對單位時間發(fā)送成功數(shù)據(jù)量的參數(shù)采樣來近似模擬互聯(lián)網(wǎng)的帶寬。[0106]基于單位時間發(fā)送成功的數(shù)據(jù)量,大致有兩種可能,一是發(fā)送速率比較平滑的上升或者下降,網(wǎng)絡(luò)處在正常的平滑波動狀態(tài);二是發(fā)送速率相對以前出現(xiàn)了非常大幅度的突變,網(wǎng)絡(luò)處在一個劇烈抖動狀態(tài)。
[0107]待發(fā)送隊(duì)列里面的待發(fā)送幀不能太多,否則意味著在發(fā)送端緩存了太多的視頻,視頻傳送到接收端后實(shí)時性會收到較大影響。所以我們在發(fā)送端需要設(shè)置一定的閥值以保證待發(fā)送隊(duì)列內(nèi)待發(fā)送幀比較少。
[0108]先不考慮劇烈波動狀態(tài),假設(shè)為網(wǎng)絡(luò)平滑波動。由于網(wǎng)絡(luò)的波動基本在300ms以內(nèi),同時300ms也是會影響實(shí)時性效果的一個參考值。所以我們將8個視頻幀的間隔320ms(對應(yīng)于第二閾值)作為一個影響網(wǎng)絡(luò)發(fā)送質(zhì)量的重要閥值,盡量在這個閥值之內(nèi)對視頻的發(fā)送效果進(jìn)行調(diào)整。
[0109]由于基于TCP協(xié)議,我們并不能實(shí)際獲取底層最真實(shí)的發(fā)送速率,只能通過發(fā)送之后的反饋效果來估算。所以,由于倍數(shù)加幀必須根據(jù)最真實(shí)帶寬才能得到判斷依據(jù),而在TCP下很難實(shí)時獲取,所以我們的實(shí)際加幀策略為試探性不斷累加式。這樣試探的好處一是可以適配TCP協(xié)議棧的緩沖策略,二是可以更加精準(zhǔn)的匹配實(shí)時的發(fā)送效果,三是不需要復(fù)雜的實(shí)時帶寬計(jì)算。如果當(dāng)前待發(fā)送隊(duì)列出現(xiàn)O或I幀(對應(yīng)第一閾值),此時可以基本認(rèn)為網(wǎng)絡(luò)實(shí)時發(fā)送無延遲,立即啟動加幀,只要待發(fā)送隊(duì)列的條件滿足,以一幀為單元,每隔40ms加一幀,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀,按順序添加即可。
[0110]由于加幀采用單次累加策略,所以大多數(shù)情況下實(shí)際發(fā)送的速率在兩個場景之間。當(dāng)加幀達(dá)到更少丟幀的場景后,場景自動變更,然后網(wǎng)絡(luò)狀況允許,則可以繼續(xù)加幀。
[0111]減幀策略為直接向更少丟幀的場景變更,如果當(dāng)前待發(fā)送隊(duì)列超過320ms(如果處在丟15/16幀數(shù)的場景下,則為超過640ms),則觸發(fā)場景直接變更到更少丟幀的場景。變更之后,繼續(xù)出現(xiàn)當(dāng)前待發(fā)送隊(duì)列 超過320ms,則繼續(xù)觸發(fā)場景變更。如果在變更時,判斷發(fā)現(xiàn)瞬間發(fā)送速率出現(xiàn)劇烈減少,則與前I秒平均發(fā)送速率比對,根據(jù)倍數(shù)關(guān)系,選擇變更的場

-5^ O
[0112]為了平滑,盡量匹配即時最大網(wǎng)絡(luò)帶寬,當(dāng)前待發(fā)送隊(duì)列只有0-1幀才加幀,當(dāng)待發(fā)送隊(duì)列超過延遲160ms (對應(yīng)于第三閾值)的幀存在,則進(jìn)行加幀操作的逆向減幀操作。這里是加幀操作的逆向操作,非減幀策略。目的是平滑匹配實(shí)時最大帶寬。
[0113]實(shí)施例二
[0114]當(dāng)然本發(fā)明不局限于TCP協(xié)議,還可以適用于UDP等通信協(xié)議。
[0115]UDP下沒有待發(fā)隊(duì)列,每幀數(shù)據(jù)均拆成固定大小的UDP網(wǎng)絡(luò)發(fā)送包,發(fā)送到網(wǎng)絡(luò)上,而不去管接收端是否收到,收到的順序如何等。在UDP的上層,如RTP/RTCP,可以反饋UDP包從發(fā)送端到接收端的延時,即發(fā)送時間,及丟包率。通過這些數(shù)據(jù),可以判斷網(wǎng)絡(luò)帶寬。我們這里可以用發(fā)送端和接收端交互的反饋信息來判斷網(wǎng)絡(luò)擁堵狀況。這些反饋信息包括接收單幀數(shù)據(jù)的延時及相應(yīng)的丟包率。丟幀場景的設(shè)定等內(nèi)容參見實(shí)施例一,在此不再贅述。下面主要講述基于UDP協(xié)議的帶寬判斷和丟幀場景匹配的實(shí)施方式。
[0116]采用UDP協(xié)議的網(wǎng)絡(luò)架構(gòu),其服務(wù)器的發(fā)送端接收客戶側(cè)的接收端的反饋信息,如果反饋信息滿足預(yù)設(shè)的觸發(fā)條件,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。
[0117]觸發(fā)條件包括第一時間值、第二時間值和第三時間值;預(yù)設(shè)的第一丟包率,第二丟包率和第三丟包率;所述第三時間值大于或等于第二時間值,小于第一時間值;
[0118]如果接收單幀數(shù)據(jù)的延時超過第一時間值或丟包率超過第一丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景;
[0119]如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于第二丟包率,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,且丟包率小于或等于第二丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像;
[0120]當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;
[0121]采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,或丟包率大于或等于第三率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
[0122]服務(wù)器端可以從客戶端反饋的接收單幀數(shù)據(jù)的延時來判斷,接收單幀數(shù)據(jù)的延時過長(超過第一時間值),客戶端就有可能存在丟幀,這樣就會導(dǎo)致接收端的圖像不完整;同理,客戶側(cè)的接收端會判斷一段時間內(nèi)的丟包率,如果丟包率過高,即便接收單幀數(shù)據(jù)的延時不長,仍然會被動丟失大量的幀圖像,同樣會影響圖像的顯示效果,因此本實(shí)施方式可以有效避免發(fā)送端擁堵導(dǎo)致被動丟幀的情況,確保視頻顯示流暢。
[0123]實(shí)時帶寬增加時,接收單幀數(shù)據(jù)的延時會逐步減少,最終會小于或等于預(yù)設(shè)的第二時間值,丟包率也隨之下降,最終小于或等于第二丟包率,即便網(wǎng)絡(luò)出現(xiàn)波動,等波動平緩以后仍然會小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于第二丟包率,此時可以采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像,即每隔一定的時間在發(fā)送碼流中增加一幀,然后再判斷接收單幀數(shù)據(jù)的延時,如果仍然滿足上述條件,繼續(xù)加幀直到不滿足條件為止;此時如果發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景,則自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。當(dāng)帶寬增加時,通過單次累加的方式來探測出其實(shí)際帶寬可以適配服務(wù)器的緩沖策略,可以更加精準(zhǔn)的匹配實(shí)時的發(fā)送效果,不需要復(fù)雜的實(shí)時帶寬計(jì)算。因此,該實(shí)施方式最大限度的利用當(dāng)前的帶寬資源,在帶寬增加時給客戶提供更高品質(zhì)的視頻圖像。
[0124]在保持當(dāng)前場景的基礎(chǔ)上單次累加探測帶寬,隨著發(fā)送碼流中幀數(shù)的增加,接收單幀數(shù)據(jù)的延時也開始增加,當(dāng)時間達(dá)到一定數(shù)值(第三時間值),或者丟包率達(dá)到一定數(shù)值(第三丟包率),為了避免大量被動丟幀的情況出現(xiàn),采用逆向減幀逐步減少發(fā)送碼流中的幀圖像,等接收單幀數(shù)據(jù)的延時小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于第二丟包率時再通過單次累加探測帶寬。因此,本方案可以在確保視頻實(shí)時流暢傳輸?shù)那疤嵯绿綔y出實(shí)際帶寬,然后匹配出最佳的丟幀模式。
[0125]本實(shí)施方式還有其他簡化替代方案,比如第一?三時間值保持不變,將第一?三丟包率統(tǒng)一為基準(zhǔn)丟包率;反之,第一?三丟包率保持不變,將第一?三時間值統(tǒng)一為基準(zhǔn)時間值也是可行的。
[0126]同樣的,本實(shí)施例中抽離的幀圖像所在位置也可以插入調(diào)換幀,以保證所有標(biāo)準(zhǔn)
解碼器可解。[0127]對于像采用如UDP協(xié)議通信的網(wǎng)絡(luò)。由于發(fā)送端直接將接收到的幀圖像信息都發(fā)送到外部網(wǎng)絡(luò),因此需要從客戶側(cè)的接收端反饋信息回來才能判斷出實(shí)際帶寬。此時,通過服務(wù)器的發(fā)送端和客戶側(cè)的接收端配合來獲取實(shí)時帶寬,本實(shí)施例僅介紹了基于接收單幀數(shù)據(jù)的延時和丟包率作為觸發(fā)條件來判斷帶寬的方法,實(shí)際上,僅依靠接收單幀數(shù)據(jù)的延時或丟包率作為觸發(fā)條件也是可行的,這樣有利于簡化控制,降低開發(fā)周期和成本?;诒景l(fā)明構(gòu)思的其他判斷方式也在本發(fā)明的保護(hù)范圍之內(nèi),在此不再贅述。本發(fā)明也可以應(yīng)用于其他制式的顯示,如NTSC制式。
[0128]以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種視頻編碼及網(wǎng)絡(luò)傳輸方法,其特征在于,包括步驟: A、對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流;將能流暢播放基準(zhǔn)碼流的最低帶寬定義為基準(zhǔn)帶寬; B、判斷實(shí)時帶寬,如果實(shí)時帶寬低于基準(zhǔn)帶寬,采用主動丟幀的方式從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像,生成對外傳輸?shù)陌l(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,對外傳輸基準(zhǔn)碼流。
2.如權(quán)利要求1所述的視頻編碼及網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B包括:將發(fā)送單幀需要的時間分成N個時間區(qū)段,針對每個時間區(qū)段,對應(yīng)設(shè)置N種不同丟幀的場景,每個場景對應(yīng)一種發(fā)送碼流;如果實(shí)時帶寬發(fā)送單幀需要的時間大于基準(zhǔn)帶寬發(fā)送單幀需要的時間,則根據(jù)實(shí)時帶寬發(fā)送單幀所處的時間區(qū)段自動匹配對應(yīng)的場景;反之,對外傳輸基準(zhǔn)碼流,所述N為整數(shù)且N≥2。
3.如權(quán)利要求2所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第一閾值,如果待發(fā)送隊(duì)列存儲的幀數(shù)超過第一閾值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。
4.如權(quán)利要求2所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括: 設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第二閾值; 如果待發(fā)送隊(duì)列里面的幀數(shù)始終小于或等于預(yù)設(shè)的第二閾值,或者待發(fā)送隊(duì)列里面的幀數(shù)在預(yù)設(shè)的時間內(nèi)先增加,后減小,最后待發(fā)送隊(duì)列里面的幀數(shù)小于或等于第二閾值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。
5.如權(quán)利要求4所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括: 設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第三閾值;第三閾值大于或等于所述第二閾值; 采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果發(fā)送隊(duì)列里面的幀數(shù)超過第三閾值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
6.如權(quán)利要求2所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:設(shè)定待發(fā)送隊(duì)列存儲幀數(shù)的第一閾值、第二閾值和第三閾值,所述第三閾值大于或等于第二閾值,小于第一閾值; 如果待發(fā)送隊(duì)列存儲的幀數(shù)超過第一閾值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景; 如果待發(fā)送隊(duì)列里面的幀數(shù)始終小于或等于預(yù)設(shè)的第二閾值,或者待發(fā)送隊(duì)列里面的幀數(shù)在預(yù)設(shè)的時間內(nèi)先增加,后減小,最后待發(fā)送隊(duì)列里面的幀數(shù)小于或等于第二閾值,采用單次累加的方式在發(fā) 送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景;采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果發(fā)送隊(duì)列里面的幀數(shù)超過第三閾值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
7.如權(quán)利要求2所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:服務(wù)器的發(fā)送端接收客戶側(cè)的接收端的反饋信息,如果反饋信息滿足預(yù)設(shè)的觸發(fā)條件,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。
8.如權(quán)利要求7所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述反饋信息包括接收單幀數(shù)據(jù)的延時時間和丟包率,所述觸發(fā)條件包括預(yù)設(shè)的第一時間值和第一丟包率;如果接收單幀數(shù)據(jù)的延時時間超過第一時間值或丟包率超過第一丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景。
9. 如權(quán)利要求7所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述反饋信息包括接收單幀數(shù)據(jù)的延時時間和丟包率,所述觸發(fā)條件還包括預(yù)設(shè)的第二時間值和第二丟包率;如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于第二丟包率,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,且丟包率小于或等于第二丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景。
10.如權(quán)利要求9所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括: 所述觸發(fā)條件還包括預(yù)設(shè)的第三時間值和第三丟包率;第三時間值大于或等于所述第二時間值;第三丟包率大于或等于所述第二丟包率; 采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,或者丟包率大于第三丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
11.如權(quán)利要求7所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:所述觸發(fā)條件包括第一時間值、第二時間值、第三時間值和基準(zhǔn)丟包率,所述第三時間值大于或等于第二時間值,小于第一時間值; 如果接收單幀數(shù)據(jù)的延時超過第一時間值或丟包率超過基準(zhǔn)丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景; 如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,且丟包率小于或等于基準(zhǔn)丟包率,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,且丟包率小于或等于基準(zhǔn)丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景; 采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,或者丟包率大于基準(zhǔn)丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
12.如權(quán)利要求7所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:所述觸發(fā)條件包括第一時間值、第二時間值和第三時間值,所述第三時間值大于或等于第二時間值,小于第一時間值; 如果接收單幀數(shù)據(jù)的延時超過第一時間值,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景; 如果接收單幀數(shù)據(jù)的延時始終小于或等于預(yù)設(shè)的第二時間值,或者接收單幀數(shù)據(jù)的延時在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收單幀數(shù)據(jù)的延時小于或等于第二時間值,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景; 采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收單幀數(shù)據(jù)的延時超過第三時間值,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
13.如權(quán)利要求7所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:所述觸發(fā)條件包括第一丟包率、第二丟包率和第三丟包率,所述第三丟包率大于或等于第二丟包率,小于第一丟包率; 如果接收數(shù)據(jù)的丟包率超過第一丟包率,直接選用丟幀更多丟幀的場景,反之,維持當(dāng)前場景; 如果接收數(shù)據(jù)的丟包率始終小于或等于預(yù)設(shè)的第二丟包率,或者接收數(shù)據(jù)的丟包率在預(yù)設(shè)的時間段內(nèi)先增加,后減小,最后接收數(shù)據(jù)的丟包率小于或等于第二丟包率,采用單次累加的方式在發(fā)送碼流中增加幀圖像,加幀的序號順序是當(dāng)前場景下的更少丟幀的場景需要添加的幀圖像; 當(dāng)發(fā)送碼流每秒發(fā)送的幀數(shù)達(dá)到更少丟幀的場景時仍然滿足上一步驟的條件,自動切換到丟幀更少的場景;反之,維持當(dāng)前場景; 采用單次累加的方式在發(fā)送碼流中增加幀圖像時,如果接收數(shù)據(jù)的丟包率超過第三丟包率,則采用逆向減幀的方式在發(fā)送碼流中減少幀圖像。
14.如權(quán)利要求1~13任一所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟B中包括:抽離的幀圖像數(shù)據(jù)所在位置插入調(diào)換幀數(shù)據(jù),調(diào)換幀數(shù)據(jù)包括在標(biāo)準(zhǔn)視頻協(xié)議或私有協(xié)議下可以準(zhǔn)確解碼調(diào)換幀需要的的包括緩存操作在內(nèi)的操作指令。
15.如權(quán)利要求14所述的視頻編碼及相應(yīng)的網(wǎng)絡(luò)傳輸方法,其特征在于,所述標(biāo)準(zhǔn)視頻協(xié)議包括H.264或H.265視頻標(biāo)準(zhǔn),在H.264或H.265視頻標(biāo)準(zhǔn)中,所述調(diào)換幀包括NAL數(shù)據(jù)包,所述操作指令集成在所述NAL數(shù)據(jù)包中。
16.一種視頻轉(zhuǎn)發(fā)服務(wù)器,其特征在于,所述視頻轉(zhuǎn)發(fā)服務(wù)器包括: 對每一幀圖像進(jìn)行編碼;按預(yù)設(shè)的顯示制式生成基準(zhǔn)碼流的編碼模塊; 判斷實(shí)時寬帶的檢測模塊; 根據(jù)檢測模塊的帶寬信息,將基準(zhǔn)碼流轉(zhuǎn)換成發(fā)送碼流的自適應(yīng)模塊; 如果實(shí)時帶寬低于基準(zhǔn)帶寬,自適應(yīng)模塊從基準(zhǔn)碼流每秒顯示的幀圖像中抽離至少一幀的幀圖像形成發(fā)送碼流;如果實(shí)時帶寬大于或等于基準(zhǔn)帶寬,自適應(yīng)模塊輸出基準(zhǔn)碼流; 所述基準(zhǔn)帶寬是指能流暢播放基準(zhǔn)碼流的最低帶寬。
【文檔編號】H04N21/647GK103475902SQ201310403947
【公開日】2013年12月25日 申請日期:2013年9月6日 優(yōu)先權(quán)日:2013年9月6日
【發(fā)明者】史方, 王為 申請人:同觀科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
惠安县| 喜德县| 桃园县| 桂林市| 乌审旗| 大洼县| 二连浩特市| 静海县| 重庆市| 宁国市| 胶南市| 宁南县| 砀山县| 六枝特区| 桦南县| 紫云| 鄂州市| 湘潭市| 南丹县| 秭归县| 滦平县| 临潭县| 闽侯县| 玉溪市| 宜都市| 吴堡县| 万盛区| 南靖县| 萨嘎县| 福建省| 新巴尔虎左旗| 务川| 渭源县| 古交市| 磐安县| 惠州市| 南丰县| 汾西县| 革吉县| 新泰市| 汤原县|