本發(fā)明涉及涉及數(shù)據(jù)轉(zhuǎn)發(fā)技術(shù)領(lǐng)域,具體涉及一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置及方法。
背景技術(shù):
隨著國內(nèi)直播應(yīng)用的越來越火,各類音視頻應(yīng)用越來越多,而在音視頻應(yīng)用中,常見的問題就是延遲同步控制。在服務(wù)器轉(zhuǎn)發(fā)音視頻流過程中,常常有延遲的需求,如要求音頻流在視頻流的多久之后轉(zhuǎn)發(fā),這個要求在服務(wù)器端實現(xiàn)一種延遲轉(zhuǎn)發(fā)裝置。該裝置能夠緩存流數(shù)據(jù),并且在指定時間后開始轉(zhuǎn)發(fā)。音視頻流數(shù)據(jù)有一個特點,每個數(shù)據(jù)幀是有一個固定的時間間隔,如典型的音頻流數(shù)據(jù)幀間隔2.5ms,5ms,10ms,20ms,40ms,60ms。如果音頻轉(zhuǎn)發(fā)速率和原有速率不匹配,很有可能造成接收端抖動,從而影響音質(zhì)。因此需要一個相匹配的轉(zhuǎn)發(fā)速率,處理相對復(fù)雜。
現(xiàn)有技術(shù)中,音頻流轉(zhuǎn)發(fā)簡單地通過定時器和緩存池控制,如通過定時器掃描緩存區(qū),根據(jù)時間發(fā)送。
由于音頻轉(zhuǎn)發(fā)速率需要和音頻源的音頻流數(shù)據(jù)幀的時間間隔相匹配,不然會造成接收端數(shù)據(jù)抖動,影響最終效果,現(xiàn)有技術(shù)中通過定時器掃描緩存區(qū)的方案,實現(xiàn)效果不佳,并且在多路直播需要處理時,性能不佳,效率低下。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置及方法,結(jié)合緩存池和定時器實現(xiàn)對直播平臺數(shù)據(jù)流進行延遲轉(zhuǎn)發(fā)控制。
為實現(xiàn)以上目的,本發(fā)明采用如下技術(shù)方案:
一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置,包括:
數(shù)據(jù)接收模塊、數(shù)據(jù)封裝模塊、緩存模塊、速率檢測模塊、定時器,延遲時間設(shè)定模塊和轉(zhuǎn)發(fā)模塊,其中,
所述數(shù)據(jù)接收模塊用于接收直播平臺發(fā)送的音頻流數(shù)據(jù)幀;所述數(shù)據(jù)封裝模塊用于封裝所述數(shù)據(jù)接收模塊發(fā)送的音頻流數(shù)據(jù)幀,并將封裝后的音頻流數(shù)據(jù)幀順序存儲到所述緩存模塊中;
所述速率檢測模塊用于檢測所述數(shù)據(jù)接收模塊接收到的音頻流數(shù)據(jù)幀時間間隔,并將所述音頻流數(shù)據(jù)幀時間間隔發(fā)送給所述延遲時間設(shè)定模塊,以使所述延遲時間設(shè)定模塊計算出所述緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;
所述轉(zhuǎn)發(fā)模塊電連接所述緩存模塊、延遲時間設(shè)定模塊和定時器,所述轉(zhuǎn)發(fā)模塊用于在所述緩存模塊中存儲的數(shù)據(jù)達到所述最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀,還用于在所述緩存模塊未達到所述最大音頻流數(shù)據(jù)幀容量但定時器達到預(yù)設(shè)延遲時間時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
優(yōu)選地,所述數(shù)據(jù)封裝模塊通過串行總線與所述數(shù)據(jù)接收模塊電連接。
優(yōu)選地,所述緩存模塊為多個,分別用于存儲不同直播平臺的數(shù)據(jù)。
優(yōu)選地,所述緩存模塊通過并行總線與所述數(shù)據(jù)封裝模塊電連接。
優(yōu)選地,所述轉(zhuǎn)發(fā)模塊為多個,分別用于轉(zhuǎn)發(fā)不同緩存模塊中存儲的直播平臺的數(shù)據(jù)。
優(yōu)選地,多個所述轉(zhuǎn)發(fā)模塊與多個所述緩存模塊一一對應(yīng)設(shè)置。
一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,應(yīng)用于上述的實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置中,包括:
數(shù)據(jù)接收模塊接收直播平臺發(fā)送的音頻流數(shù)據(jù)幀,并發(fā)送給所述數(shù)據(jù)封裝模塊;
所述數(shù)據(jù)封裝模塊順序接收所述音頻流數(shù)據(jù)幀,并添加時間信息和直播平臺標志到所述音頻流數(shù)據(jù)幀中進行封裝;
緩存模塊順序存儲所述數(shù)據(jù)封裝模塊發(fā)送的封裝后的音頻流數(shù)據(jù)幀;
轉(zhuǎn)發(fā)模塊判斷所述緩存模塊中的數(shù)據(jù)存儲狀態(tài)是否滿足發(fā)送條件,并在滿足發(fā)送條件時順序轉(zhuǎn)發(fā)所述緩存模塊中存儲的音頻流數(shù)據(jù)幀。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
判斷所述緩存模塊中是否存儲有直播平臺通過所述數(shù)據(jù)接收模塊發(fā)送的音頻流數(shù)據(jù)幀,若是,則啟動定時器進行計時。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
速率檢測模塊檢測所述數(shù)據(jù)接收模塊接收到的音頻流數(shù)據(jù)幀時間間隔,并將所述音頻流數(shù)據(jù)幀時間間隔發(fā)送給所述延遲時間設(shè)定模塊;
所述延遲時間設(shè)定模塊計算出所述緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;
所述轉(zhuǎn)發(fā)模塊在所述緩存模塊中存儲的數(shù)據(jù)達到所述最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
若所述緩存模塊中存儲的數(shù)據(jù)在預(yù)設(shè)時間內(nèi)未達到所述最大音頻流數(shù)據(jù)幀容量但定時器達到預(yù)設(shè)延遲時間時,所述轉(zhuǎn)發(fā)模塊順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
本發(fā)明采用以上技術(shù)方案,至少具備以下有益效果:
由上述技術(shù)方案可知,本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置及方法,速率檢測模塊能夠檢測數(shù)據(jù)接收模塊接收到的音頻流數(shù)據(jù)幀時間間隔,并將音頻流數(shù)據(jù)幀時間間隔發(fā)送給延遲時間設(shè)定模塊,以使延遲時間設(shè)定模塊計算出緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;轉(zhuǎn)發(fā)模塊電連接緩存模塊、延遲時間設(shè)定模塊和定時器,轉(zhuǎn)發(fā)模塊在所述緩存模塊中存儲的數(shù)據(jù)達到最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀,或者在緩存模塊未達到最大音頻流數(shù)據(jù)幀容量但定時器達到預(yù)設(shè)延遲時間時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。相比現(xiàn)有技術(shù),本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置及方法,能夠結(jié)合緩存池和定時器實現(xiàn)對直播平臺數(shù)據(jù)流進行延遲轉(zhuǎn)發(fā)控制,減少接收端數(shù)據(jù)抖動。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一實施例提供的一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置的示意框圖;
圖2為本發(fā)明一實施例提供的一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法的流程示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將對本發(fā)明的技術(shù)方案進行詳細的描述。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所得到的所有其它實施方式,都屬于本發(fā)明所保護的范圍。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
參見圖1,本發(fā)明一實施例提供的一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置,包括:
數(shù)據(jù)接收模塊1、數(shù)據(jù)封裝模塊2、緩存模塊3、速率檢測模塊4、定時器5,延遲時間設(shè)定模塊6和轉(zhuǎn)發(fā)模塊7,其中,
所述數(shù)據(jù)接收模塊1用于接收直播平臺發(fā)送的音頻流數(shù)據(jù)幀;所述數(shù)據(jù)封裝模塊2用于封裝所述數(shù)據(jù)接收模塊1發(fā)送的音頻流數(shù)據(jù)幀,并將封裝后的音頻流數(shù)據(jù)幀順序存儲到所述緩存模塊3中;
所述速率檢測模塊4用于檢測所述數(shù)據(jù)接收模塊1接收到的音頻流數(shù)據(jù)幀時間間隔,并將所述音頻流數(shù)據(jù)幀時間間隔發(fā)送給所述延遲時間設(shè)定模塊6,以使所述延遲時間設(shè)定模塊6計算出所述緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;
所述轉(zhuǎn)發(fā)模塊7電連接所述緩存模塊3、延遲時間設(shè)定模塊6和定時器5,所述轉(zhuǎn)發(fā)模塊7用于在所述緩存模塊3中存儲的數(shù)據(jù)達到所述最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀,還用于在所述緩存模塊3未達到所述最大音頻流數(shù)據(jù)幀容量但定時器5達到預(yù)設(shè)延遲時間時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
需要說明的是,本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置,所述最大音頻流數(shù)據(jù)幀容量和用戶設(shè)定的延遲時間相關(guān),如延遲100秒,假設(shè)每個音頻流數(shù)據(jù)幀間隔是20ms,則一秒有50個音頻流數(shù)據(jù)幀,長度是5000。
未達到最大音頻流數(shù)據(jù)幀容量時,數(shù)據(jù)封裝模塊直接將封裝后的數(shù)據(jù)幀插入緩存模塊尾部,否則從緩存模塊的頭部擠出一個數(shù)據(jù)幀發(fā)送。異常情況處理:如果發(fā)送端未發(fā)送滿就停止發(fā)送,通過定時器檢測是否達到用戶設(shè)定的預(yù)設(shè)延遲時間,若是,轉(zhuǎn)發(fā)模塊直接進行數(shù)據(jù)轉(zhuǎn)發(fā)。
由上述技術(shù)方案可知,本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置,速率檢測模塊能夠檢測數(shù)據(jù)接收模塊接收到的音頻流數(shù)據(jù)幀時間間隔,并將音頻流數(shù)據(jù)幀時間間隔發(fā)送給延遲時間設(shè)定模塊,以使延遲時間設(shè)定模塊計算出緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;轉(zhuǎn)發(fā)模塊電連接緩存模塊、延遲時間設(shè)定模塊和定時器,轉(zhuǎn)發(fā)模塊在所述緩存模塊中存儲的數(shù)據(jù)達到最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀,或者在緩存模塊未達到最大音頻流數(shù)據(jù)幀容量但定時器達到預(yù)設(shè)延遲時間時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。相比現(xiàn)有技術(shù),本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置,能夠結(jié)合緩存池和定時器實現(xiàn)對直播平臺數(shù)據(jù)流進行延遲轉(zhuǎn)發(fā)控制,減少接收端數(shù)據(jù)抖動。
優(yōu)選地,所述數(shù)據(jù)封裝模塊2通過串行總線與所述數(shù)據(jù)接收模塊1電連接。
優(yōu)選地,所述緩存模塊3為多個,分別用于存儲不同直播平臺的數(shù)據(jù)。
優(yōu)選地,所述緩存模塊3通過并行總線與所述數(shù)據(jù)封裝模塊2電連接。
優(yōu)選地,所述轉(zhuǎn)發(fā)模塊7為多個,分別用于轉(zhuǎn)發(fā)不同緩存模塊3中存儲的直播平臺的數(shù)據(jù)。
優(yōu)選地,多個所述轉(zhuǎn)發(fā)模塊7與多個所述緩存模塊3一一對應(yīng)設(shè)置。
參見圖2,本發(fā)明還提出了一種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,應(yīng)用于上述的實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)裝置中,包括:
步驟s1、數(shù)據(jù)接收模塊接收直播平臺發(fā)送的音頻流數(shù)據(jù)幀,并發(fā)送給所述數(shù)據(jù)封裝模塊;
步驟s2、所述數(shù)據(jù)封裝模塊順序接收所述音頻流數(shù)據(jù)幀,并添加時間信息和直播平臺標志到所述音頻流數(shù)據(jù)幀中進行封裝;
步驟s3、緩存模塊順序存儲所述數(shù)據(jù)封裝模塊發(fā)送的封裝后的音頻流數(shù)據(jù)幀;
步驟s4、轉(zhuǎn)發(fā)模塊判斷所述緩存模塊中的數(shù)據(jù)存儲狀態(tài)是否滿足發(fā)送條件,并在滿足發(fā)送條件時順序轉(zhuǎn)發(fā)所述緩存模塊中存儲的音頻流數(shù)據(jù)幀。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
判斷所述緩存模塊中是否存儲有直播平臺通過所述數(shù)據(jù)接收模塊發(fā)送的音頻流數(shù)據(jù)幀,若是,則啟動定時器進行計時。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
速率檢測模塊檢測所述數(shù)據(jù)接收模塊接收到的音頻流數(shù)據(jù)幀時間間隔,并將所述音頻流數(shù)據(jù)幀時間間隔發(fā)送給所述延遲時間設(shè)定模塊;
所述延遲時間設(shè)定模塊計算出所述緩存模塊能夠存儲的最大音頻流數(shù)據(jù)幀容量;
所述轉(zhuǎn)發(fā)模塊在所述緩存模塊中存儲的數(shù)據(jù)達到所述最大音頻流數(shù)據(jù)幀容量時順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
優(yōu)選地,所述實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,還包括:
若所述緩存模塊中存儲的數(shù)據(jù)在預(yù)設(shè)時間內(nèi)未達到所述最大音頻流數(shù)據(jù)幀容量但定時器達到預(yù)設(shè)延遲時間時,所述轉(zhuǎn)發(fā)模塊順序轉(zhuǎn)發(fā)所述音頻流數(shù)據(jù)幀。
可以理解的是,本發(fā)明提供的這種實現(xiàn)服務(wù)端數(shù)據(jù)緩沖式延遲轉(zhuǎn)發(fā)方法,所述最大音頻流數(shù)據(jù)幀容量和用戶設(shè)定的延遲時間相關(guān),如延遲100秒,假設(shè)每個音頻流數(shù)據(jù)幀間隔是20ms,則一秒有50個音頻流數(shù)據(jù)幀,長度是5000。
未達到最大音頻流數(shù)據(jù)幀容量時,數(shù)據(jù)封裝模塊直接將封裝后的數(shù)據(jù)幀插入緩存模塊尾部,否則從緩存模塊的頭部擠出一個數(shù)據(jù)幀發(fā)送。異常情況處理:如果發(fā)送端未發(fā)送滿就停止發(fā)送,通過定時器檢測是否達到用戶設(shè)定的預(yù)設(shè)延遲時間,若是,轉(zhuǎn)發(fā)模塊直接進行數(shù)據(jù)轉(zhuǎn)發(fā)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準。術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性。術(shù)語“多個”指兩個或兩個以上,除非另有明確的限定。