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

減少時延的直播流推送方法及裝置、直播系統與流程

文檔序號:12499396閱讀:253來源:國知局

本發明涉及實時視頻傳輸技術領域,特別是涉及一種減少時延的直播流推送方法及裝置、直播系統。



背景技術:

互聯網直播日益盛行,視頻直播需要占用大量上傳帶寬,然而我國電信運營商能夠提供的網絡上傳帶寬卻一直沒有量的變化,網絡經常會有抖動,主流的直播協議是rtmp協議,這個協議的基礎是tcp協議,根據tcp協議當網絡發生波動時,發送端沒有發送成功的數據包會等到網絡恢復平穩后繼續發送,在主播端就會造成數據包堆積,這樣客戶端觀看到的直播流就會變成主播之前一小段時間的流,增加了直播的延時。導致互動性降低,

直播平臺互動的方式主要是主播進行直播,觀眾通過觀看視頻直播,在文字聊天室打字和主播互動,文字信息傳輸量小基本是實時傳輸,這樣的模式決定了主播端到客戶端的直播延時在3秒以內是可以優化互動的,大于3秒就會有明顯的延時感,主播之前好長時間做的事情,觀眾很久之后才能看到,極大地降低互動性。

我秀直播平臺目前采用rtmp協議進行直播,經常會有觀眾端出現觀看延時的現象,極大地影響了觀眾與主播之間的互動。



技術實現要素:

本發明的目的是針對現有技術中存在的技術缺陷,而提供一種減少時延的直播流推送方法、裝置及直播系統。

為實現本發明的目的所采用的技術方案是:

一種減少時延的直播流推送方法,包括,

將原數據進行編碼成預定數據格式,

將編碼后的數據打包成數據包并發送至發送隊列,

判斷數據包發送隊列中數據包數量是否正常,

如不正常則主動丟棄部分或全部數據包使其不進入發送隊列。

所述的直播流的預定數據格式為H.264編解碼格式,所述的數據包的傳輸協議為Rtmp協議。

在網絡直播的主播端進行。

當所述的數據包發送隊列的數量不大于第一閾值,不主動丟棄數據包,

當所述的數據包發送隊列的數量大于第一閾值且不大于第二閾值,主動丟棄新傳送來的全部B幀數據包,

當所述的數據包發送隊列的數量大于第二閾值且不大于第三閾值,主動丟棄新傳送來的全部B幀數據包,丟棄部分或全部P幀數據包,

當所述的數據包發送隊列的數量大于第三閾值,主動丟棄新傳送來的全部B幀數據包,丟棄全部P幀數據包,丟棄部分或全部I幀數據包。

所述的第一閾值為64,第二閾值為128,第三閾值為256。

一種減少時延的直播流推送裝置,包括,

編碼模塊,用以將原數據進行編碼成預定數據格式,

傳輸模塊,用以將編碼后的數據打包成數據包并發送至發送隊列,

發送狀態監控模塊,用以監控數據包發送隊列的數據包數量并判斷是否正常,

丟包模塊,用以當發送隊列中數量不正常時主動丟棄部分或全部數據包使其不進入發送隊列。

所述的編碼模塊H.264編解碼格式,所述的傳輸模塊的傳輸協議為Rtmp協議。

在網絡直播的主播端運行。

所述的丟包模塊的控制方法為,

當所述的數據包發送隊列的數量不大于第一閾值,不主動丟棄數據包,

當所述的數據包發送隊列的數量大于第一閾值且不大于第二閾值,主動丟棄新傳送來的全部B幀數據包,

當所述的數據包發送隊列的數量大于第二閾值且不大于第三閾值,主動丟棄新傳送來的全部B幀數據包,丟棄部分或全部P幀數據包,

當所述的數據包發送隊列的數量大于第三閾值,主動丟棄新傳送來的全部B幀數據包,丟棄全部P幀數據包,丟棄部分I幀數據包。

一種具有所述的減少時延的直播流推送裝置的直播系統。

與現有技術相比,本發明的有益效果是:

本發明針對網絡抖動時現有rtmp直播協議會引入延時,增加了主播端丟幀機制,將打包的數據在不影響觀眾端播放的情況下,將圖像數據合理的丟棄一部分,這樣就不會觸發tcp的重傳機制,其可以有效的降低這種延時,增加主播和觀眾實時互動性。

附圖說明

圖1所示為本發明的減少時延的直播流推送方法的流程示意圖。

具體實施方式

以下結合附圖和具體實施例對本發明作進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。

直播技術流程:主播端直播時分為3個大的模塊,音視頻數據采集,編碼,推送。觀眾端相應的也分為3個模塊,音視頻數據接收,解碼,播放。

造成直播延時的原因,原始圖像數據通常很大,通過h.264視頻壓縮算法進行壓縮,通過rtmp協議封裝成數據包,進行網絡傳輸,圖像數據雖然進行了壓縮,但是數據量仍然相當大,當網絡出現抖動或者其他異常時,根據rtmp協議,數據要緩存在發送端等待網絡恢復時一并發送,這樣就會到導致觀眾端的播放器在某個時間沒有數據,過一會數據恢復了陸續播出的時候造成了延時。

為了降低網絡抖動引起的時延,本發明減少時延的直播流推送方法,其特征在于,包括,

步驟101,將原數據進行編碼成預定數據格式,

視頻原數據壓縮方式可采用任意現有技術,如h.264視頻壓縮算法,根據h.264視頻壓縮算法,圖像序列會被壓縮成I幀P幀和B幀,I幀進行圖像幀內壓縮,解碼時I幀自己本身可以獨立恢復成一幀圖像畫面,P幀參考I幀進行壓縮,解碼恢復時也就是需要等I幀解碼成完整圖像才能恢復,B幀參考P幀恢復。整個圖像序列是由多個重復的IPBBPBBPIPBBPBBP序列組成的。在觀眾端只要能解碼完畢第一個I幀就會顯示圖像,相應的解碼P和B幀時顯示連貫的圖像。

步驟102,將編碼后的數據打包成數據包并發送至發送隊列,

I幀、B幀和P幀各自封裝成對應的rtmp數據包類型,每幀對應一個數據包,封裝的主要目的就是增加視頻流的時間戳,丟包時不影響后續時間戳的正確封裝,因此不會出現音畫不同的問題。

步驟103,根據數據包發送隊列的數量判定網絡狀態,

原數據持續地進行編碼成IPBBBPBBBP數據格式,然后被打包成RTMP數據包,網絡抖動時發送數據包的隊列會因為發送的數據包的速度小于實時編碼封裝數據包的速度,出現隊列的逐漸增大的情況,根據實際測驗當發送隊列內的元素數目大于第一閾值,如64時判斷為網絡出現抖動,大于第二閾值,如128判斷為較嚴重,大于第三閾值,如256時判斷為很嚴重,

步驟104,當網絡出現抖動時主動丟棄部分或全部數據包使其不進入數據包發送隊列直至數據包發送隊列正常。

丟包的邏輯處理在數據包生成和數據包進入隊列線程之間,也就是不讓封裝好的rtmp數據包繼續進入發送的隊列,造成發送隊列堵塞越來越嚴重的情況。即每當有新的rtmp數據包進入發送隊列時會進行對發送隊列已有數據包元個數的判斷,并根據隊列中數據包個數進行具體區別對待,

具體地,當所述的數據包發送隊列的數量大于第一閾值且不大于第二閾值,視為網絡出現抖動,主動丟棄新傳送來的全部B幀數據包,此時陸續產生的P幀和I幀依然會進入到發送隊列中;

當所述的數據包發送隊列的數量大于第二閾值且不大于第三閾值,視為網絡抖動較嚴重,主動丟棄新傳送來的全部B幀數據包,丟棄部分或全部P幀數據包,當出現較嚴重的網絡抖動,為保證傳輸的實時性,根據情況進行P幀的選擇性或者全部丟棄,如隔一丟一,隔二丟一等,在網絡許可情況下盡可能保證在兩個I幀之間有一個P幀存在;當部分丟棄模式不足以遏制隊列增長時,可選擇全部丟棄P幀;

當所述的數據包發送隊列的數量大于第三閾值,視為網絡抖動嚴重,主動丟棄新傳送來的全部B幀數據包,丟棄全部P幀數據包,丟棄部分或全部I幀數據包。通過主動丟棄數據包,犧牲一定畫面質量甚至一段視頻信息,保證網絡抖動時的小時延,提升網絡主播的溝通實時性。

本發明針對網絡抖動時現有rtmp直播協議會引入延時,增加了主播端丟幀機制,將打包的數據在不影響觀眾端播放的情況下,將圖像數據合理的丟棄一部分,這樣就不會觸發tcp的重傳機制,其可以有效的降低這種延時,增加主播和觀眾實時互動性。

同時,本發明還公開了減少時延的直播流推送裝置,包括,

編碼模塊,用以將原數據進行編碼成預定數據格式,如H.264編解碼格式;

傳輸模塊,用以將編碼后的數據打包成數據包并發送至發送隊列,所述的傳輸模塊的傳輸協議為Rtmp協議。

發送狀態監控模塊,用以根據數據包發送隊列的數量判定網絡狀態,

丟包模塊,用以當網絡出現抖動時主動丟棄部分數據包直至數據包發送隊列正常,所述的丟包模塊的控制方法為,

當所述的數據包發送隊列的數量不大于第一閾值,視為網絡正常,不主動丟棄數據包,

當所述的數據包發送隊列的數量大于第一閾值且不大于第二閾值,視為網絡出現抖動,主動丟棄隊列中全部B幀數據包,

當所述的數據包發送隊列的數量大于第二閾值且不大于第三閾值,視為網絡抖動較嚴重,主動丟棄隊列中全部B幀數據包,丟棄部分或全部P幀數據包,

當所述的數據包發送隊列的數量大于第二閾值且不大于第三閾值,視為網絡抖動嚴重,主動丟棄隊列中全部B幀數據包,丟棄全部P幀數據包,丟棄部分或全部I幀數據包。

根據隊列中現存的數據包數量對新來的數據包進行丟棄處理,不影響正常的發送隊列,而且根據隊列變化適時調整丟包策略,能有效均衡實時性和畫面,提升整體觀看感受。

本發明還公開了一種具有所述的減少時延的直播流推送裝置的直播系統,采用該直播系統,主播端的數據得以及時發出,減少時延,提高觀眾與主播間的互動。

以上所述僅是本發明的優選實施方式,應當指出的是,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 岳阳市| 巍山| 乐都县| 宽城| 张家口市| 武穴市| 迁西县| 剑川县| 彰化市| 汶川县| 和政县| 富阳市| 永登县| 家居| 浑源县| 肇东市| 攀枝花市| 曲水县| 永川市| 白朗县| 康定县| 于都县| 梁河县| 石狮市| 上饶县| 涟水县| 广昌县| 北辰区| 雷山县| 孟津县| 二连浩特市| 永嘉县| 化州市| 鱼台县| 吉水县| 巍山| 泰安市| 尉犁县| 开封市| 铁岭县| 铜梁县|