淺析物聯(lián)網(wǎng)廣播系統(tǒng)中延遲問題的解決
0 引 言
廣播是常見的傳播方式,也是 20 世紀 20 年代初流行的媒體之一。隨著技術的演進,廣播從最初的模擬廣播到數(shù)字廣播,再到現(xiàn)在的網(wǎng)絡廣播,已經(jīng)經(jīng)歷了三代變革。隨著互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)和物聯(lián)網(wǎng)的發(fā)展,物聯(lián)網(wǎng)廣播將成為第四代廣播系統(tǒng)。在物聯(lián)網(wǎng)廣播系統(tǒng)中,會有大量各類型的數(shù)據(jù)需要交換,這就對傳輸提出了較高的要求,要盡量減少延遲時間。
1 物聯(lián)網(wǎng)廣播中的三種延遲現(xiàn)象
在物聯(lián)網(wǎng)廣播系統(tǒng)中,主要存在三種延遲現(xiàn)象,即模數(shù)轉換延遲、數(shù)據(jù)傳輸延遲和數(shù)模轉換延遲。
(1)模數(shù)轉換延遲主要包括模擬信號的采樣、量化、編碼、壓縮延遲。
(2)數(shù)據(jù)傳輸延遲主要是傳輸數(shù)據(jù)的延遲,數(shù)據(jù)主要分為內(nèi)容(content)和控制信號兩部分。內(nèi)容有多種格式,且數(shù)據(jù)量各不相同,為非結構化數(shù)據(jù),控制信號一般是結構化數(shù)據(jù)。
(3)數(shù)模轉換延遲主要包括解壓、解碼、后處理、播放等延遲。
在這三類延遲中,模數(shù)與數(shù)模轉換與硬件及其性能相關,可優(yōu)化的項目并不多。其中傳輸延遲更容易發(fā)生,一旦發(fā)生傳輸延遲,就會表現(xiàn)出卡頓現(xiàn)象或者跳動現(xiàn)象(畫面顯示出馬賽克就是跳動現(xiàn)象之一)。物聯(lián)網(wǎng)廣播系統(tǒng)延遲產(chǎn)生的多個階段如圖 1 所示,內(nèi)容見表 1 所列。
2 多管齊下,解決物聯(lián)網(wǎng)廣播內(nèi)容傳輸延遲問題針對物聯(lián)網(wǎng)廣播中的內(nèi)容傳輸延遲問題,可采用多種方法進行優(yōu)化或解決。
2.1 UDP 協(xié)議+ 校驗函數(shù),減少網(wǎng)絡資源占用,確保數(shù)據(jù)完整、一致
互聯(lián)網(wǎng)主要使用傳輸層協(xié)議實現(xiàn)高質(zhì)量實時數(shù)據(jù)連接與傳輸。根據(jù) OSI 網(wǎng)絡標準定義,網(wǎng)絡由物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層和應用層組成。網(wǎng)絡結構可簡化為鏈路層、網(wǎng)絡層、傳輸層和應用層用戶接口,結構如圖 2 所示。
TCP 和 UDP 均屬于傳輸層,在進行內(nèi)容傳輸時,可以采用 TCP 方案或 UDP 方案,項目中選用 UDP 協(xié)議 + 校驗函數(shù),可減少網(wǎng)絡資源占用并保證數(shù)據(jù)完整與一致。
采用該解決方案的原因在于 UDP 相比 TCP 具有較好的實時性,工作效率高,適用于對高速傳輸和實時性有較高要求的通信或廣播通信。且 UDP 可以實現(xiàn)一對多傳輸(每一條TCP 連接只能點到點,UDP 支持一對一、一對多、多對一和多對多的交互通信),減少了三次握手和確認,占用資源更少。UDP 的原則是盡最大努力交付,不保證可靠交付,其可靠性較 TCP 稍差。由于 UDP 可能會出現(xiàn)丟包和傳輸錯誤的現(xiàn)象,因此采用校驗函數(shù)消除內(nèi)容傳輸?shù)腻e誤。
UDP 與 TCP 相比,也容易出現(xiàn)丟包現(xiàn)象,但由于當下網(wǎng)絡環(huán)境一般比較穩(wěn)定且網(wǎng)速快(基本可達 100 Mbps),因此這一問題可忽略。若出現(xiàn)丟包,可采用校驗函數(shù)解決。
針對 UDP 包容易丟包和出錯的問題,采用校對函數(shù)保證傳輸內(nèi)容的完整與一致。
設 UDP 包長度為 n B,共有 8n 位,即從0 位至(8n-1)位,采用如下函數(shù)對這 8n 位數(shù)據(jù)求值 :
只有傳播端傳輸?shù)?UDP 和終端接收的 UDP 包數(shù)據(jù)函數(shù)值完全相同,才表示在傳輸過程中沒有產(chǎn)生丟包和錯誤(誤碼)。
如果傳播端和接收端傳輸數(shù)據(jù)函數(shù)值計算結果不一致,則向傳播端發(fā)起請求,重新傳輸并校驗。
2.2 優(yōu)化傳輸包大小 + 緩沖,實現(xiàn)延遲最小化
UDP 包在傳輸層不超過 4 kB,而在 Internet 中傳輸,不應大于 1 400 B?,F(xiàn)實場景中進行了多次模擬實驗,可以得到優(yōu)化后的傳輸包。
橫坐標是包的大小,分別為64 B,128 B,512 B,1 024 B等,縱坐標是在相應包大小情況下內(nèi)容傳輸?shù)难舆t時間,單位為毫秒(ms)。筆者發(fā)現(xiàn),當包較小時,延遲時間較大,當包較小時需要傳輸?shù)膬?nèi)容會被分為多個包,而將傳輸內(nèi)容封裝成多個包會消耗較多時間,進行多次處理,且內(nèi)容傳輸?shù)拇螖?shù)更多,單片機處理速度低,造成延時負擔 ;包較大時,延遲時間也較大,雖然傳輸過程占用時間不多,但發(fā)送和傳輸內(nèi)容時會占用多種資源,導致占用更多時間,延遲較大。因此必須采用適合當前網(wǎng)絡傳輸延遲時間的包的大小。包的大小在不同的網(wǎng)絡環(huán)境中不一樣,可由用戶自行定義,以保證延遲最小。UDP 包大小與延時時長的關系見表 2 所列,其關系如圖 3所示。
盡管 UDP 協(xié)議延時較小,但在不可靠網(wǎng)絡條件下,這仍然是影響傳輸?shù)闹匾蛩?。在這種情況下,通常在終端設置一個緩沖區(qū)減小網(wǎng)絡的延時。接收到的數(shù)據(jù)包先存入緩沖區(qū),當緩沖區(qū)中達到預定數(shù)量的包后,開始解壓、解碼播放。緩沖區(qū)的大小應隨網(wǎng)絡的變化而改變。所選緩沖區(qū)的大小至關重要,若緩沖區(qū)過小,一些最終能到達甚至即將到達的數(shù)據(jù)包可能會被認為丟包而遺棄,增大丟包的可能性 ;若緩沖區(qū)設定過大,將存在更大延時,將有可能超過人耳能夠感覺的閾值。
2.3 針對 VBR音頻文件實時重編碼,減小傳輸延遲問題
音頻文件比特率是指每秒傳送的比特(bit)數(shù),單位為bps,比特率越高,單位時間內(nèi)傳送的數(shù)據(jù)越多,音頻、視頻的質(zhì)量就越好,編碼后的文件就越大 ;如果比特率越低,則情況相反。
比特率分為固定比特率(Constant Bit Rate,CBR)和動態(tài)比特率或可變比特率(Variable Bit Rate,VBR)。動態(tài)比特率可減小文件容量,減輕傳輸壓力。
在傳輸 CBR 音頻文件時,未發(fā)現(xiàn)任何卡、頓、抖動(jitter)現(xiàn)象,但在傳輸 VBR 音頻文件時卻發(fā)現(xiàn)了上述現(xiàn)象。為此,項目采用前端重新編碼(recoding)方法。
MP3文件由四部分組成,即 ID3V2+音頻數(shù)據(jù) +ID3V1+補充信息。其中,最為關鍵的是音頻數(shù)據(jù)部分,音頻數(shù)據(jù)部分以幀(Frame)的形式存在。MP3 文件結構見表 3 所列。
VBR 格式是 XING 公司推出的算法,若選 VBR 格式,那么 MP3 第一個有效幀的數(shù)據(jù)區(qū)中會出現(xiàn) XING 標志,或INFO,VBRI 標志,表示此 MP3 是 VBR 文件。
在 VBR 格式的 MP3 第一幀中存放 MP3 文件的幀的總個數(shù),比較容易獲得播放總時間與 100 B 存放播放總時間。假 設 MP3 歌曲為 10 min,即 600 s,將其分為 n 段,則每兩個相鄰索引(index)的時間差為(600/n)s,通過該相鄰索引即可將所有幀的數(shù)據(jù)讀取并轉為 PCM :
式中 :i 從0 開始計算,表示第一幀,直至 n-1,共 n 幀 ;bi 表示第 i 幀的比特率 ;ti 表示第 i 幀的時長(部分 MP3 這一值恒定不變)。
在前端重新編碼,將其實時重新編碼為 PCM 數(shù)據(jù),再通過 UDP 包發(fā)送,發(fā)現(xiàn)卡、頓、抖動等現(xiàn)象消失了,很好地解決了 VBR 格式 MP3 的播放問題。
此外,筆者還嘗試了另一種解決方案,即將 VBR 格式的MP3 通過 UDP 包發(fā)送到終端,由終端進行解碼播放,發(fā)現(xiàn)延時較長,與終端的硬件性能和計算能力相關,因此建議將重新編碼的工作放在前端進行,效果較好。
3 終端 CDN+人工智能識別,解決遠程傳輸延遲問題
隨著物聯(lián)網(wǎng)廣播的發(fā)展,其傳輸?shù)膬?nèi)容越來越多,數(shù)據(jù)量也越來越大。盡管硬件的處理速度和帶寬傳輸速度已較快,但是根據(jù)比爾· 安迪定理可知,硬件性能的提升總會被內(nèi)容或軟件消耗。同時,在網(wǎng)絡中還有其他眾多內(nèi)容和信號需要傳輸,再加之電磁干擾,尤其在通過 2.4G WiFi 進行無線傳輸時,干擾更為強烈,傳輸速度遠達不到標稱量,造成內(nèi)容傳輸?shù)难舆t。
項目中采用終端 CDN+人工智能識別方案解決這一問題 :將傳輸?shù)膬?nèi)容分為結構化內(nèi)容和非結構化內(nèi)容,其中結構化內(nèi)容即為背景音樂、國歌、體操音樂、眼保鍵操音樂、英語聽力文件等“程序化的內(nèi)容”,這些內(nèi)容往往會重復播放,并已形成文件,一般不通過麥克風輸入 ;非結構化內(nèi)容則是僅播放一次的內(nèi)容,比如校領導或班主任的晨會內(nèi)容、平時的通知內(nèi)容,這些內(nèi)容一般通過麥克風輸入。待終端接收到結構化內(nèi)容后,在解壓、解碼、播放的同時將其保存在相應的文件中。
MWCS2018上 SD 協(xié)會公布了 SD 7.0 標準內(nèi)容,包括 SD EXⅠ(SD Express)的全新標識,最高容量已提升到 128 TB,理論最高傳輸速度將達到 985 MB/s,已超過普通 SATA SSD。項目中采用了 SDXC 標準的 MicroSD 卡(即 TF 卡),其支持最高 2 TB 容量,目前理論上支持 3 種標準(UHS- Ⅲ卡未面世),UHS-Ⅰ的寫入速度最高為 95 MB/s,讀取速度最高為104 MB/s,保證最低傳輸速度為 10 MB/s ;UHS-Ⅱ的寫入速度最高為 280 MB/s,讀取速度最高為 312 MB/s,保證最低傳輸速度為 30 MB/s。在目前的網(wǎng)絡環(huán)境情況下,該速度足夠?qū)懭牒妥x取。
在傳輸內(nèi)容前,先計算播放文件的大小,然后在終端的SD 中尋找與播放文件大小相同的文件,接著對比文件六分之一處 8 個字節(jié)部分、四分之一處 8 個字節(jié)部分、二分之一處8 個字節(jié)部分。若完全相同,則取得傳輸端播放時間,并在播放時間到達時,播放終端 SD 卡中的文件,以減小延遲 ;如果有多個大小相同的文件,則找到第一個“完全相同”的文件,并播放該文件 ;如果找不到相同大小的文件或找不到“完全相同”的文件,則從播放端接收傳輸內(nèi)容,并當終端接收到這些內(nèi)容后,在解壓、解碼、播放的同時將其保存在相應的文件中。
計算方法如下:
(1)取得文件的長度 l,然后將此文件的長度 l 除以 8,若不能整除,則舍去余數(shù),取模 L1=[l/8] ;
(2)從 L1*7 處取 8 個字節(jié),記為 L1-8,將其轉為 10 進制數(shù),并對其取常用對數(shù) lg,記為 lg(L1-8);
(3)從 L1*5 處取 8 個字節(jié),記為 L1-6,將其轉為 10 進制數(shù),并對其取常用對數(shù) lg,記為 lg(L1-6);
(4)從 L1*3 處取 8 個字節(jié),記為 L1-4,將其轉為 10 進制數(shù),并對其取常用對數(shù) lg,記為 lg(L1-4);
(5)從 L1 處取 8 個字節(jié),記為 L1-2,將其轉為 10 進制數(shù),并對其取常用對數(shù) lg,記為 lg(L1-2)。將 lg(L1-8),lg(L1-6),lg(L1-4)和 lg(L1-2)相加:lg(L1- 8)+lg(L1-6)+lg(L1-4)+lg(L1-2),得出數(shù)值進行比較,僅在得出數(shù)值相等時才表明文件“完全相同”。
4 結 語
通過本文所述方法,較好地解決了物聯(lián)網(wǎng)廣播中的內(nèi)容傳輸延遲問題,希望能夠為同行提供參考。