王晨,顏金堯,蔡洋
(中國傳媒大學(xué)媒體融合與傳播國家重點實驗室,北京 100024)
對于超高清(4K、8K)專業(yè)媒體流信號域的實時制作播出,傳統(tǒng)SDI 架構(gòu)局限性大,傳輸速率較低,需要的電纜數(shù)量多且維護成本高,一根電纜僅可承載一路SDI;SDI信號傳輸距離有限;可替代性弱。不同于發(fā)展緩慢、成本較高的SDI 技術(shù),以太網(wǎng)帶寬和交換能力發(fā)展迅速,目前已經(jīng)發(fā)展到400Gbps 以上,具有傳輸速度快、結(jié)構(gòu)簡單、傳輸距離遠、成本低、兼容性強、覆蓋范圍大、管理便捷、充分利用IP 網(wǎng)絡(luò)等多個優(yōu)點[1]。
因而廣電制播系統(tǒng)的采集、制作、播出等從傳統(tǒng)的SDI 架構(gòu)逐漸向全IP 化架構(gòu)遷移。為促進IP 技術(shù)在實時視音頻領(lǐng)域的應(yīng)用,目前行業(yè)內(nèi)基本達成共識采用SMPTE 2019 年發(fā)布的ST 2110 標準系列。ST 2110 系列標準定義了視頻、音頻、其他數(shù)據(jù)在IP 網(wǎng)絡(luò)中的單獨封裝、分發(fā)。研究專業(yè)媒體流IP化的意義重大,可打破現(xiàn)有網(wǎng)絡(luò)中媒體制作播出的技術(shù)壁壘,充分利用IP 的特點,將所有信號接入IP 中心矩陣,建立IP資源池,實現(xiàn)大帶寬、多格式、跨域協(xié)同、遠程制作,為未來的全文件共享、云化做準備。
2014 年,ESPN 建立了世界上第一個廣播電視直播IP 中心系統(tǒng)[2],該系統(tǒng)最初采用ST 2022-6 及ASPEN 的IP 信號標準。2020 年,BBC 威爾士新中央廣場總部使用Grass Valley 的技術(shù)支持全球最大的SMPTE 2110 IP 工作流[3]。截止到2020 年底,全球范圍內(nèi)已知規(guī)模最大的IP 系統(tǒng)是由NBC 部署的Telemundo 超大型IP 化數(shù)據(jù)中心。CNN 新總部大樓實現(xiàn)IP 化,成為全世界首個完全基于SMPTE 2110 IP 網(wǎng)絡(luò)的重要廣播基地[4]。
在國內(nèi)2018 年廣東臺建設(shè)了一個4K 頻道IP 總控系統(tǒng)[5]。2018 年愛奇藝創(chuàng)意制作中心建成IP ST 2110 總控系統(tǒng)。2018 年中央廣播電視總臺建設(shè)了2條完整的4K 生產(chǎn)線(其中1 條為全IP 化4K 生產(chǎn)線)。2019 年總臺首次在國慶活動采用全IP 方式實現(xiàn)超大規(guī)模4K 和高清信號的無損高質(zhì)量回傳和信號分發(fā)。2019 年中國第一輛符合ST 2110 標準的單流4K 超高清全媒體轉(zhuǎn)播車在貴州臺交付[6]。2021 年中央廣播電視總臺在春晚期間建設(shè)全IP 化8K 信號制播生產(chǎn)環(huán)境,實現(xiàn)了4K、8K 和高清的并行直播。2021 年第十四屆全運會期間,總臺轉(zhuǎn)播系統(tǒng)的核心業(yè)務(wù)調(diào)度系統(tǒng)實現(xiàn)全IP 架構(gòu),畫分和控制調(diào)度系統(tǒng)也實現(xiàn)全IP 化。
在整體IP制播系統(tǒng)環(huán)境下,諸多國外廠家和研究人員不斷研發(fā)相關(guān)IP 硬件設(shè)備和技術(shù)來促進廣播行業(yè)的全IP 化。在視頻信號IP 化、解析播放視頻IP 信號等方面的設(shè)備類型多樣。 SONY NXLKIP50YNXLK-IP51Y 網(wǎng)關(guān)、GV 網(wǎng)關(guān)、ROSS Raptor 網(wǎng)關(guān)等國外設(shè)備以及僅有的國產(chǎn)網(wǎng)關(guān)格非IPGate 均可實現(xiàn)將SDI信號根據(jù)ST 2110標準封裝為IP流來通過網(wǎng)絡(luò)傳輸。Imagine SNP、LAWO 畫面分割器、SONY切換臺等均可接收解析IP信號,并通過顯示器進行視頻畫面觀看。視頻監(jiān)測分析方面,目前僅有Tektronix(泰克)公司的PRISM 示波器提供IP 工作流媒體技術(shù)指標分析功能,可以詳細診斷ST 2110 流量問題。此外,N. Ranasinghe 提出了一個可擴展的FPGA 架構(gòu),用于ST 2110 端到端的專業(yè)視頻解決方案,是第一個公開發(fā)布的此類硬件架構(gòu)[7]。
現(xiàn)階段電視臺和各大廠家主要通過硬件網(wǎng)關(guān)來實現(xiàn)SDI視頻的IP化和IP視頻信號監(jiān)看,盡管硬件功能較為齊全,但這些國外的硬件設(shè)備價格昂貴,連線復(fù)雜,采用硬件板卡燒制固定程序,通用性和靈活性不夠。
本文面向ST 2110-20 標準,實現(xiàn)了基于RTP 流的未壓縮基帶視頻在IP 網(wǎng)絡(luò)中的解析播放、監(jiān)測分析的軟件系統(tǒng);設(shè)計了一套可以運行在高性能通用計算機上的實時IP 解析監(jiān)測的軟件系統(tǒng)裝置,大大提高了性價比,打破了硬件和價格壁壘,更利于靈活研究IP 視頻信號。在IP 視頻解析方面,本文提出設(shè)計了緩存算法阻塞隊列長度設(shè)計和多線程并發(fā)來實現(xiàn)視頻解析播放。在IP 視頻監(jiān)測分析方面,本系統(tǒng)監(jiān)測分析丟包率、幀頻分布、幀間隔分布、首包處理時延、端到端時延5 個技術(shù)指標和主觀觀看畫面效果。通過技術(shù)指標和主觀效果的對比分析,本系統(tǒng)的系統(tǒng)設(shè)計及實現(xiàn)效果,在一定程度上可對比國外專用設(shè)備PRISM 示波器的視頻信號分析功能,在制播IP 化設(shè)備國產(chǎn)化和通用化方面,同時對融入電視制作域內(nèi)的整體監(jiān)控系統(tǒng),多流監(jiān)測方面有重要意義。實驗結(jié)果分析證實本文創(chuàng)新提出的IP 視頻阻塞隊列長度設(shè)計算法是有效的。
一套完整的基于ST 2110標準的IP化視頻流采集解析監(jiān)測系統(tǒng)設(shè)計框架如圖1所示。視頻信號源產(chǎn)生專業(yè)媒體視頻,封裝成ST 2110 標準的IP 流并通過網(wǎng)絡(luò)進行傳輸。本系統(tǒng)利用網(wǎng)卡接收IP視頻流信號,根據(jù)自主設(shè)計的阻塞隊列長度算法,使用阻塞隊列實現(xiàn)實時數(shù)據(jù)緩存及處理機制可控制化,采用多線程并發(fā)的方式,低門檻與低成本實現(xiàn)了IP基帶視頻流的實時解析與系統(tǒng)監(jiān)測,解決IP視頻系統(tǒng)的數(shù)據(jù)處理透明可控制化、視頻流解析技術(shù)通用化的問題。
圖1 系統(tǒng)設(shè)計框架
在實驗系統(tǒng)設(shè)計中,數(shù)據(jù)包的存儲采用了阻塞隊列實時緩存而非直接寫入本地文件,節(jié)約了大量的寫入和讀取磁盤的時間。阻塞隊列采用先進先出模式,當隊列已滿時會等待隊列中的數(shù)據(jù)消耗,當隊列為空時則等待數(shù)據(jù)填充,可以解決某個時間段內(nèi)產(chǎn)生數(shù)據(jù)的線程與消耗數(shù)據(jù)的線程之間速度不匹配的問題。
存儲數(shù)據(jù)包的阻塞隊列1長度的大小和視頻監(jiān)測系統(tǒng)的丟包率、端到端時延的大小密切相關(guān)。隊列越長,幀均丟包率越小,時延越大;隊列越短,幀均丟包率越大,時延越小。
針對隊列長度,本文自主設(shè)計一種算法,根據(jù)不同視頻流格式在網(wǎng)絡(luò)條件下的輸入輸出速率變化,設(shè)計相應(yīng)的隊列長度,來得到低丟包率和低時延。該算法適應(yīng)于高清、超高清等不同清晰度的視頻格式,但在超高清格式中只有逐行掃描格式。
阻塞隊列的輸入速率λ是指每秒采集經(jīng)網(wǎng)絡(luò)傳輸后到達隊列的視頻數(shù)據(jù)包的速率,可由計算機根據(jù)一段時間內(nèi)接收的數(shù)據(jù)包個數(shù)n_input除以相應(yīng)時間t_input得到;輸出速率μ是指視頻播放時每秒解析數(shù)據(jù)包的速率,同樣可由一段時間內(nèi)解析的數(shù)據(jù)包n_onput除以相應(yīng)時間t_onput得到。在實際網(wǎng)絡(luò)情況中,網(wǎng)絡(luò)狀態(tài)變化復(fù)雜,需根據(jù)隊列長度算法調(diào)整隊列長度,來保證較低的丟包率和時延。
當輸入速率大于輸出速率時,隊列長度L1 等于視頻流輸入速率λ與輸出速率μ的差乘實時視頻時長duration:
當輸入速率小于等于輸出速率時,隊列長度L2等于抖動jitter。抖動是指數(shù)據(jù)包延遲的變化程度,變化具備隨機性,隊列的輸入和輸出都有抖動。因此本算法采用一種最佳抖動時延處理,通過實際測量無限長隊列長度情況下,在系統(tǒng)穩(wěn)定時的最大抖動隊列長度jitter,并選擇該jitter作為阻塞隊列長度。本文實驗中采取此方法確定隊列長度。
算法偽代碼如下:
算法1:阻塞隊列長度算法輸入:輸入速率和輸出速率1.If μ<λ:2. L = |n_input ÷ t_input - n_output÷t_output|*duration 3.else if μ>=λ:4. L = jitter 5.end;輸出:阻塞隊列長度L
如圖1 系統(tǒng)設(shè)計框架所示,該部分可在VS 2019開發(fā)環(huán)境下編寫C++程序完成。
經(jīng)多次實驗發(fā)現(xiàn),采集、解析、播放幾項操作均需耗費較多時間,如果按順序依次執(zhí)行,則最終呈現(xiàn)的視頻播放效果差,畫面切換緩慢。因此需采用多線程并發(fā)的形式來提升程序的運行速率,并通過阻塞隊列共享數(shù)據(jù),進行線程間通信。程序中視頻數(shù)據(jù)包的采集緩存、緩存取出、解析、播放與監(jiān)測可以分成5 個并行任務(wù),因而采用5個線程形式實現(xiàn),提高程序運行效率。線程1 和線程2、3 共享阻塞隊列1 中數(shù)據(jù)包。線程3和線程4共享阻塞隊列2中完整幀像素數(shù)據(jù)。
線程1 可利用Winpcap 嗅探網(wǎng)卡捕獲視頻IP 數(shù)據(jù)包。Winpcap是Windows系統(tǒng)下捕獲和過濾底層網(wǎng)絡(luò)數(shù)據(jù)包、發(fā)送原始數(shù)據(jù)包到網(wǎng)絡(luò)上、收集網(wǎng)絡(luò)流量與網(wǎng)絡(luò)狀態(tài)的統(tǒng)計信息的一個開發(fā)庫[8]。捕獲數(shù)據(jù)包的主要步驟為:首先創(chuàng)建一個網(wǎng)絡(luò)設(shè)備鏈表以獲取本機的適配器,找到并打開網(wǎng)卡來捕獲完整數(shù)據(jù)包;設(shè)置混雜模式、內(nèi)核緩存區(qū)和用戶緩存區(qū),以解決抓包時的丟包漏包;調(diào)用回調(diào)函數(shù)不斷地捕獲數(shù)據(jù)包,并在回調(diào)函數(shù)中不斷將數(shù)據(jù)包存入阻塞隊列1中。
線程2 取出視頻IP 數(shù)據(jù)包。首先根據(jù)IP 數(shù)據(jù)包類型初始化。初始化后,線程2 按存入順序不斷地從阻塞隊列1中取出以太網(wǎng)數(shù)據(jù)包,進行結(jié)構(gòu)體賦值。
線程3進行數(shù)據(jù)處理,提取數(shù)據(jù)包中的視頻信息,拼接出視頻幀的像素信息。首先根據(jù)視頻內(nèi)容設(shè)置視頻的幀率、寬高、色度采樣等參數(shù),新建一幀圖像緩存區(qū)(例如采樣格式為4:2:2 的高清緩存區(qū)大小為1920*1080*2)。然后根據(jù)ST 2110-20 協(xié)議讀取數(shù)據(jù)包SRD 字段中的F、SRD Row Number、C、Offset 的值[9],讀取方式為數(shù)組偏移,偏移量由字段所在的字節(jié)位置距數(shù)據(jù)包包頭的距離決定。數(shù)據(jù)包從外到內(nèi)的封裝依次為以太網(wǎng)/IP/UDP/RTP/ST 2110-20 有效載荷頭/視頻像素數(shù)據(jù)。若數(shù)據(jù)包的首字節(jié)用pkt[0]表示,第一個SRD F位于ST 2110-20有效載荷頭的第5個字節(jié)中的第一位,即數(shù)據(jù)包的第58 個字節(jié)(58=14+20+8+12+4),即pkt[58]中的第一位。當以上SRD 字段全為0時,為圖像起始行;若不是,繼續(xù)讀取數(shù)據(jù)包,直至全為0。當圖像起始行的數(shù)據(jù)包確定后,根據(jù)序列號依次讀取同一幀圖像的所有數(shù)據(jù)包中的像素信息,直到數(shù)據(jù)包標志位M 為1,通過相鄰字節(jié)拼接恢復(fù)出相應(yīng)比特(例10bit)的原始取樣像素值元組,再結(jié)合SDL 顯示圖像的特性對像素值數(shù)據(jù)進行處理,以方便圖像顯示。最后根據(jù)采樣結(jié)構(gòu)將上述得到的圖像對應(yīng)像素信息Y、Cb、Cr 按照SRD 頭部樣本行中的Row Number、Offset、Length 位置信息進行相應(yīng)賦值,直到一幀圖像緩存區(qū)完全被填滿,即得到一幀完整圖像,并將一幀完整圖像數(shù)據(jù)存入阻塞隊列2中。重復(fù)這個過程,不斷將圖像緩存區(qū)的新圖像存入阻塞隊列2。
線程4 播放視頻SDL(Simple DirectMedia Layer),SDL 是一套開放源代碼的跨平臺多媒體開發(fā)庫,它提供了豐富的控制圖像、聲音、輸入輸出的函數(shù)[10]。SDL 顯示視頻的流程主要可以分成兩大部分:初始化和循環(huán)顯示畫面。首先按照順序創(chuàng)建SDL 窗口、渲染器、紋理進行初始化,之后重復(fù)從阻塞隊列2中獲取一幀圖像數(shù)據(jù)來紋理更新、渲染器渲染、視頻顯示。
線程5為輸出監(jiān)測信息,含阻塞隊列實時長度、隊列輸入輸出包間隔、丟包數(shù)、總包數(shù)、幀頻、幀解析、播放及總間隔。
實驗過程中的物理拓撲如圖2 所示,視頻源由小米盒子和格式轉(zhuǎn)換器BlackMagic 組成,SDI-IP 網(wǎng)關(guān)為ROSS Raptor、通過華三交換機和光纖實現(xiàn)數(shù)據(jù)包網(wǎng)絡(luò)上的轉(zhuǎn)發(fā)。小米盒子傳輸出含時間碼內(nèi)容的視頻作為視頻源,通過HDMI 線纜發(fā)送到BlackMagic。BlackMagic 可輸出1920*1080 50p,4:2:2,10bit 的高清視頻及3840*2160 50p, 4:2:2,10bit的4K 超高清視頻。視頻數(shù)據(jù)經(jīng)SDI 同軸線纜傳輸?shù)絉OSS Raptor 網(wǎng)關(guān),網(wǎng)關(guān)根據(jù)ST 2110-20 標準封裝成在IP 網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包,數(shù)據(jù)包大小均為1262 字節(jié),一幀高清4320 個數(shù)據(jù)包。數(shù)據(jù)包繼而經(jīng)由光纖和交換機在網(wǎng)絡(luò)中靈活傳播。高性能PC捕獲數(shù)據(jù)包進行解析監(jiān)測。
圖2 實驗物理拓撲
在超高清視頻系統(tǒng)建設(shè)過程中,最開始主流方案是將一幀4K 完整圖像分割成4 個子圖像通過4 路3G-SDI 信號來傳輸,主要有2SI(2 Sample Interleave)和SQD(Square Division)兩種傳輸模式[4],現(xiàn)電視臺多用1路4K。為便于理解和減少實驗復(fù)雜度,本文僅選取超高清4路中的1路無壓縮高清視頻IP流來進行實驗。不同清晰度視頻IP 化實現(xiàn)的原理同本實驗相同,但當需要4路高清視頻合成時,必須按照傳輸方式將4路3G-SDI鏈路的信號綁定在一起,且嚴格區(qū)分兩端序號對應(yīng)關(guān)系。
數(shù)據(jù)包包間隔指兩個連續(xù)數(shù)據(jù)包進入或離開阻塞隊列的間隔。網(wǎng)絡(luò)傳輸中,因為網(wǎng)絡(luò)鏈路、擁塞情況、抖動、系統(tǒng)處理方式等因素,數(shù)據(jù)包到達和離開隊列的間隔不一。圖3展示了系統(tǒng)穩(wěn)定運行后100萬個數(shù)據(jù)包隊列輸入和輸出的包間隔變化,可以看出隊列的輸入輸出均有抖動,輸入的抖動明顯大于輸出的抖動,說明數(shù)據(jù)流從網(wǎng)絡(luò)到達系統(tǒng)阻塞隊列的緩存后,抖動可以明顯下降,證明了阻塞隊列的必要性,通過阻塞隊列的緩存可以使系統(tǒng)平穩(wěn)地解析播放視頻。隊列輸入和輸出的包間隔平均值分別為4620ns和4611ns,與數(shù)據(jù)包生產(chǎn)時間間隔相當(4629ns),說明系統(tǒng)采集和處理數(shù)據(jù)包的性能足夠。
圖3 阻塞隊列輸入輸出包間隔抖動
實驗中采用的視頻源和網(wǎng)關(guān)平均20ms發(fā)送一幀視頻信號,一定程度代表了輸入速率。為簡單測試本系統(tǒng)性能,實驗時先緩存50幀視頻內(nèi)容,然后再進行視頻解析播放,經(jīng)測試系統(tǒng)可以平均14.5ms解析一幀視頻,相對應(yīng)代表輸出速率,遠小于20ms,說明系統(tǒng)性能足夠好。但輸入速率是前提,即使系統(tǒng)性能再高,輸出速率也會受到輸入速率的限制,由此得出本系統(tǒng)的輸出速率大于等于輸入速率。因此,阻塞隊列長度采用公式2。
阻塞隊列實時長度指在系統(tǒng)運行時阻塞隊列1中的數(shù)據(jù)包個數(shù)。圖4展示了在阻塞隊列無限長的情況下,系統(tǒng)開始運行20s內(nèi),阻塞隊列實時長度的變化。系統(tǒng)運行初始不穩(wěn)定,隊列長度大,最大值小于10000,平均值為1164.13。8s后,系統(tǒng)已經(jīng)穩(wěn)定運行,圖5描述了8s-20s內(nèi)系統(tǒng)平穩(wěn)運行時的阻塞隊列長度頻數(shù),圖5中可以看出隊列長度最大值小于2000,頻數(shù)主要集中在0~800,800~2000時逐漸下降。因此,結(jié)合圖4和圖5,我們選擇了1100、1500、2000、10000、無限長5個隊列長度,來分別測試系統(tǒng)性能指標,選出合適的隊列長度,并證明2.2節(jié)中阻塞隊列長度算法的準確性。
圖4 阻塞隊列實時長度變化
圖5 阻塞隊列長度頻數(shù)圖
為更全面地衡量超高清IP化視頻采集解析及監(jiān)測的性能,從系統(tǒng)效率、數(shù)據(jù)完整性、傳輸穩(wěn)定性、實時性幾個方面提出了以下5個指標:丟包率、幀頻分布、幀間隔分布、首包處理時延、端到端時延。通過5種阻塞隊列長度的5個指標分析對比,確定當輸出速率大于等于輸入速率時阻塞隊列長度的大小。
(1)丟包率
從系統(tǒng)開始運行后,由于網(wǎng)卡抓包或系統(tǒng)解析錯誤導(dǎo)致丟失的數(shù)據(jù)包數(shù),與數(shù)據(jù)包總數(shù)的百分比值,稱為丟包率。
圖6描述了系統(tǒng)運行1分鐘時,5種隊列長度的丟包率。當隊列長度大于等于2000時,丟包率為0。2000為系統(tǒng)穩(wěn)定運行時隊列長度的最大值,該值為1分鐘內(nèi)系統(tǒng)不丟包的5種隊列長度的最小值。經(jīng)測試發(fā)現(xiàn),當系統(tǒng)運行時間更長時,隊列長度2000、10000、無限長也會發(fā)生丟包,零丟包率持續(xù)時間隨著隊列長度增長而增加,但均在丟包較少時不影響觀看效果。
圖6 丟包率對比
當隊列輸入的抖動過大,數(shù)據(jù)不斷堆積,當隊列被堆積數(shù)據(jù)填滿時,數(shù)據(jù)寫入線程休眠,線程休眠期間不再接收新數(shù)據(jù)。當阻塞隊列中的數(shù)據(jù)被消耗一些后,寫入線程重新工作,此時接收的數(shù)據(jù)與先前填入的數(shù)據(jù)便有了斷層,休眠期間本應(yīng)接收的數(shù)據(jù)丟失了,因而產(chǎn)生了丟包。當阻塞隊列長度越長時,阻塞隊列可容納的數(shù)據(jù)包越多,允許的突發(fā)抖動也更大,從而丟包率小。
(2)幀頻分布
在系統(tǒng)開始運行后,每秒視頻播放幀數(shù)的分布情況稱為幀頻分布。
圖7中描述了系統(tǒng)開始運行后20s內(nèi)幀頻的變化。除隊列長度1100和1500外,各阻塞隊列長度在視頻開始第1s,系統(tǒng)不穩(wěn)定,幀頻均不等于50,第2s及之后幀頻穩(wěn)定在50,系統(tǒng)達到穩(wěn)定。隊列長度1100和1500幀頻均一直未達到穩(wěn)定,在49上下變化,產(chǎn)生此的原因與系統(tǒng)丟包導(dǎo)致的丟幀密切相關(guān)。
圖7 幀頻對比
(3)幀間隔分布
在系統(tǒng)平穩(wěn)運行狀態(tài)下,即幀頻穩(wěn)定在50時,當前幀解析完畢與上一幀解析完畢之間的時間間隔為幀解析間隔。
當前幀播放完畢與上一幀播放完畢之間的時間間隔為幀播放間隔。
當前幀解析播放完畢和上一幀解析播放完畢間的時間間隔為幀全間隔分布。
幀全間隔分布和隊列長度關(guān)系較小,只與數(shù)據(jù)解析播放線程本身的效率有關(guān)。因此,在研究幀的解析、播放和全時間間隔之間的關(guān)系時,僅采取了隊列長度10000時的幀間隔數(shù)據(jù)。
圖8描述了系統(tǒng)穩(wěn)定運行后60幀的幀全間隔、解析間隔、播放間隔的數(shù)值變化,平均值依次為19.48ms、19.4ms、4ms。其中需要注意的是,在3.2中指出系統(tǒng)平均14.5ms解析一幀視頻,但是在本實驗中幀解析間隔平均19.4ms,這是因為視頻源本身為50p,每幀20ms生成的速率限制了更快的幀解析時間。全間隔包括解析和播放兩步,全間隔的平均值小于解析和播放間隔之和,這說明加入阻塞隊列2實現(xiàn)解析和播放線程分離,在不同的CPU上同時運行后,系統(tǒng)運行的時間只取決于運行時間長的線程,即解析線程,縮短了解析和播放順序運行的時間,提高了程序運行效率。在圖8中全間隔和解析間隔變化趨勢相同,全間隔比解析間隔變化慢1幀,兩者均值僅差0.08ms,從數(shù)據(jù)上也驗證了系統(tǒng)運行時間主要依賴于耗時最多解析線程的變化。
圖8 幀間隔對比
(4)首包處理時延
在系統(tǒng)網(wǎng)絡(luò)拓撲穩(wěn)定的前提下,系統(tǒng)開始運行后抓取到第一個數(shù)據(jù)包與第一個數(shù)據(jù)包所屬視頻幀解析完畢之間的時間間隔,首包處理時延可以在一定程度上反映系統(tǒng)初始化效率以及數(shù)據(jù)解析效率。
首包處理時延=首幀解析完畢時間-首包捕獲時間。
圖9表示5種隊列長度各20次實驗的首包處理平均時延,從圖9中可以看出首包處理時延整體趨勢隨著隊列增長而增大,從隊列長度2000開始,首包處理時延增加明顯。由圖4可知,在系統(tǒng)初始化時,隊列里的長度最長,系統(tǒng)初始化時隊列長度最大到10000。當阻塞隊列長度為2000時,系統(tǒng)初始化時隊列長度最大到1999。因此設(shè)置隊列長度越長,在系統(tǒng)初始化時阻塞隊列里的數(shù)據(jù)包就會越多,系統(tǒng)未及時處理,進而導(dǎo)致首包處理時延增大,而在系統(tǒng)穩(wěn)定后,各阻塞隊列長度中的實時隊列長度則一直在0到某個范圍穩(wěn)定變化。
圖9 首包處理時延變化
(5)端到端時延
在系統(tǒng)平穩(wěn)運行狀態(tài)下,端到端時延為視頻數(shù)據(jù)源端與視頻播放端二者之間的實時時間差,通過該指標的分布情況可以看出整個系統(tǒng)層面的整體運行效率。
端到端時延=發(fā)送時延+傳輸時延+處理時延。
圖10為各隊列長度在系統(tǒng)開始運行1分鐘內(nèi)20次的端到端時延對比,平均值依次為0.72s、0.61s、0.13s、0.15s、0.14s。隊列長度1100和1500的平均端到端時延過大的原因和丟包率大密切相關(guān)。隊列長度大于等于2000時,端到端時延相差不大。在系統(tǒng)穩(wěn)定后,實時隊列長度(最大值2000)小于設(shè)置的阻塞隊列長度時,系統(tǒng)的處理性能足夠,可以實時處理完阻塞隊列中的數(shù)據(jù)包,故而端到端時延相差不大。
圖10 端到端時延對比
(6)綜合指標分析
通過以上分析,各阻塞隊列長度可得出表1 的信息,其中數(shù)字1-5 代表該指標在幾個隊列長度中的系統(tǒng)性能分數(shù),數(shù)字越大,系統(tǒng)性能越好。
表1 各隊列長度指標性能比較
在5 種隊列長度中,1100 和1500 因為產(chǎn)生丟包,除首包處理時延外,其他指標均表現(xiàn)較差,可首先排除這兩個長度。剩余的三個隊列長度在幀頻分布上性能一樣;在丟包率上,1分鐘內(nèi),三者一樣好,但持續(xù)時間更長的情況下,無限長最好;在首包處理時延和端到端時延上,2000表現(xiàn)最好,且綜合得分最高。
因此,在考慮系統(tǒng)初始化快并且實時性高時,阻塞隊列長度最佳為2000,即jitter為2000。僅考慮系統(tǒng)在長時間內(nèi)(大于1 分鐘時)的丟包率性能,阻塞隊列長度最佳為無限長。而從實際出發(fā),隊列無限長即為電腦內(nèi)存,存在著不定性,阻塞隊列長度越大,占用的內(nèi)存資源也越大,且如果阻塞隊列消耗速率在一段時間內(nèi)持續(xù)小于放入速率,端到端時延將越來越大。因此,在本實驗環(huán)境下,阻塞隊列的輸入小于等于輸出速率時的阻塞隊列長度確定為2000 最好,即L=2000。
(7)視頻解析監(jiān)測結(jié)果
在阻塞隊列長度為L=2000 的情況下,實驗結(jié)果視頻播放畫面截圖如圖11 所示,畫面顯示完整,播放流暢無卡頓、畫面與視頻源相比得到良好的還原。
圖11 實驗播放效果圖
制播全IP化符合廣電和媒體行業(yè)未來發(fā)展方向。本文在通用計算機環(huán)境下設(shè)計和實現(xiàn)了ST 2110-20標準IP視頻信號的采集、解析、播放和監(jiān)測分析,大幅度提高了系統(tǒng)的工作效率。實現(xiàn)中共采用5 個線程:Winpcap 采集視頻流數(shù)據(jù)包,并存儲在阻塞隊列1;從阻塞隊列1 獲取數(shù)據(jù)包;解析數(shù)據(jù)包獲取完整圖像像素信息,存儲在阻塞隊列2中;從阻塞隊列2獲取整幀圖像像素信息,利用SDL 實現(xiàn)視頻播放;輸出監(jiān)測信息。
本文設(shè)計了多線程并發(fā)和阻塞隊列長度緩存算法,根據(jù)阻塞隊列長度算法獲得阻塞隊列長度可以為整個IP系統(tǒng)得到低丟包率、低延時。在阻塞隊列的輸入速率小于等于輸出速率時,通過5 種隊列長度在丟包率、幀頻分布、幀間隔分布、首包處理時延、端到端時延5 個監(jiān)測技術(shù)指標下的性能對比,確定了本實驗的阻塞隊列長度為2000,該隊列長度在5 個監(jiān)測技術(shù)指標中整體性能良好。由此我們也可得出在無限長阻塞隊列前提下,系統(tǒng)穩(wěn)定運行后的最大抖動隊列長度即為可設(shè)置的最佳隊列長度,2.2 節(jié)的阻塞隊列長度算法得證。