慕元鵬
(北京縱橫機(jī)電科技有限公司,北京 100081)
近年來(lái),為了進(jìn)一步加強(qiáng)鐵路運(yùn)營(yíng)安全管理,方便責(zé)任事故取證,機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)已經(jīng)成為新造機(jī)車(chē)安全裝備的標(biāo)準(zhǔn)配置。在和諧系列機(jī)車(chē)上,該系統(tǒng)包含在機(jī)車(chē)車(chē)載安全防護(hù)系統(tǒng)(6A系統(tǒng))中[1];而其余保有機(jī)車(chē)也在近幾年內(nèi)陸續(xù)進(jìn)行了車(chē)載視頻監(jiān)控系統(tǒng)的加裝。當(dāng)前國(guó)內(nèi)運(yùn)營(yíng)機(jī)車(chē)數(shù)量超過(guò)2萬(wàn)臺(tái)[2],每天產(chǎn)生海量的視頻數(shù)據(jù),使得視頻分析崗位人力的需求急劇增加。機(jī)車(chē)視頻數(shù)據(jù)的高效管理和應(yīng)用成為機(jī)車(chē)安全管理關(guān)注的重點(diǎn)。目前,我國(guó)機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)應(yīng)用中存在以下3個(gè)方面的困難:首先,機(jī)車(chē)視頻監(jiān)控系統(tǒng)的供應(yīng)商數(shù)量眾多,各廠家在視頻編碼、封裝上均有不同,甚至在文件格式上也不一致,導(dǎo)致聯(lián)動(dòng)調(diào)取播放時(shí),通用視頻播放器無(wú)法對(duì)所有視頻數(shù)據(jù)解碼,這給視頻數(shù)據(jù)的管理和應(yīng)用造成了不便;其次,不同規(guī)格的視頻監(jiān)控系統(tǒng)的視頻數(shù)據(jù)質(zhì)量不一致,尤其是視頻完整性方面,無(wú)法及時(shí)知曉視頻是否缺失;最后,視頻數(shù)據(jù)中的時(shí)間戳異常,會(huì)造成聯(lián)動(dòng)分析不同步的問(wèn)題,可能導(dǎo)致檢索和舉證困難。
本文通過(guò)對(duì)機(jī)車(chē)車(chē)載視頻監(jiān)控?cái)?shù)據(jù)自動(dòng)歸集技術(shù)進(jìn)行研究,設(shè)計(jì)了一種多維度的視頻數(shù)據(jù)自動(dòng)歸集技術(shù)方案;通過(guò)對(duì)多種不同格式視頻數(shù)據(jù)進(jìn)行批量編碼、封裝轉(zhuǎn)換,同時(shí)進(jìn)行視頻完整性檢查,實(shí)現(xiàn)系統(tǒng)參考時(shí)鐘和顯示時(shí)鐘標(biāo)簽的同步修正;最后利用大容量無(wú)線數(shù)據(jù)傳輸鏈路將轉(zhuǎn)碼后的視頻數(shù)據(jù)傳輸至地面服務(wù)器。該技術(shù)目前已被成功運(yùn)用到國(guó)內(nèi)多個(gè)路局的機(jī)務(wù)信息系統(tǒng)中。
機(jī)車(chē)車(chē)載視頻數(shù)據(jù)的自動(dòng)歸集涵蓋了視頻數(shù)據(jù)無(wú)線車(chē)地傳輸和視頻數(shù)據(jù)的格式歸一化,其中超大數(shù)據(jù)量的視頻文件需要通過(guò)無(wú)線網(wǎng)絡(luò)傳輸至地面服務(wù)器,主要存在傳輸速率的限制瓶頸問(wèn)題。4G移動(dòng)數(shù)據(jù)鏈路只能實(shí)現(xiàn)約8 Mb/s的傳輸速率,基于802.11n格式的WLAN可以提供最高約為300 Mb/s的傳輸速率,而當(dāng)前最新的5G技術(shù)可以支持10 Gb/s的傳輸速率。因此,在車(chē)地傳輸?shù)姆桨干希?G鏈路是突破傳輸速率瓶頸的有效選擇。視頻數(shù)據(jù)的歸一化目標(biāo)是將不同廠家和不同編碼、封裝格式的視頻數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一目標(biāo)格式的視頻數(shù)據(jù),為后續(xù)應(yīng)用提供清晰易用的結(jié)構(gòu)化數(shù)據(jù)。本文采用視頻編解碼領(lǐng)域內(nèi)最為通用的多媒體視頻處理工具庫(kù)—FFmpeg作為編解碼庫(kù)的基礎(chǔ)進(jìn)行通用轉(zhuǎn)碼功能的開(kāi)發(fā),以確保編碼格式的標(biāo)準(zhǔn)化。為加強(qiáng)技術(shù)的實(shí)用性,采用分布式并行批量轉(zhuǎn)碼的方式來(lái)提升轉(zhuǎn)碼效率,并增加對(duì)視頻數(shù)據(jù)的時(shí)鐘修正和完整性檢測(cè)。
不同廠家的車(chē)載視頻監(jiān)控設(shè)備采用的數(shù)據(jù)管理方案存在較大差異,同一個(gè)路局所配屬的機(jī)車(chē)往往有多家視頻系統(tǒng)供應(yīng)商。因此,目前主流的視頻數(shù)據(jù)歸集方法為工作人員上車(chē)使用USB設(shè)備進(jìn)行數(shù)據(jù)下載,之后再拷貝至地面服務(wù)器上。這種方式工作效率較低,在機(jī)車(chē)整備或者機(jī)車(chē)返回機(jī)務(wù)段的高峰期,無(wú)法將全部的視頻數(shù)據(jù)導(dǎo)入到服務(wù)器中。如何將數(shù)據(jù)經(jīng)通用接口快速實(shí)現(xiàn)車(chē)地傳輸是解決問(wèn)題的關(guān)鍵。
考慮到機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)均具備網(wǎng)絡(luò)接口,可以通過(guò)該接口,構(gòu)建統(tǒng)一的FTP服務(wù),在機(jī)車(chē)運(yùn)行時(shí)就進(jìn)行數(shù)據(jù)的中轉(zhuǎn);然后由視頻數(shù)據(jù)中轉(zhuǎn)設(shè)備建立與地面服務(wù)器的高速無(wú)線網(wǎng)絡(luò)鏈路,當(dāng)機(jī)車(chē)進(jìn)入機(jī)務(wù)段的無(wú)線接入點(diǎn)(access point, AP)覆蓋范圍時(shí),中轉(zhuǎn)設(shè)備中的視頻數(shù)據(jù)一次性通過(guò)高速無(wú)線網(wǎng)絡(luò)傳輸至地面服務(wù)器,實(shí)現(xiàn)不同型號(hào)車(chē)載視頻監(jiān)控?cái)?shù)據(jù)的自動(dòng)化歸集。
目前,國(guó)內(nèi)鐵路機(jī)車(chē)實(shí)際運(yùn)用的視頻監(jiān)控?cái)?shù)據(jù)編碼格式分類情況如表1所示。
表1 國(guó)內(nèi)機(jī)車(chē)視頻監(jiān)控?cái)?shù)據(jù)編碼格式分類Tab. 1 Classification of domestic locomotive video data encoding format
視頻轉(zhuǎn)碼的目標(biāo)格式需要有足夠好的兼容性和通用性,一方面要能夠使用通用播放器進(jìn)行播放,并支持瀏覽器直接進(jìn)行解碼播放,以滿足B/S架構(gòu)下的系統(tǒng)靈活聯(lián)動(dòng);另一方面,需要具備統(tǒng)一且標(biāo)準(zhǔn)的文件格式和高效的目標(biāo)轉(zhuǎn)碼效率。綜合以上考慮,本文選擇H.264格式作為視頻目標(biāo)編碼格式,AAC格式作為音頻目標(biāo)編碼格式,MP4作為最終文件存儲(chǔ)格式。
根據(jù)表1可以看到,視頻數(shù)據(jù)在視頻、音頻、封裝和文件格式上存在多種組合。其中封裝格式和文件格式不涉及視頻數(shù)據(jù)的重新編解碼,只是在原始數(shù)據(jù)上增加結(jié)構(gòu)化標(biāo)識(shí)和容器外殼。實(shí)際上,機(jī)車(chē)車(chē)載視頻數(shù)據(jù)均采用了節(jié)目流(PS)或傳送流(TS)格式的封裝,并直接存儲(chǔ)為非標(biāo)準(zhǔn)的MP4格式文件。因此,對(duì)于不同的視頻文件,首先需要使用FFmpeg對(duì)視頻文件進(jìn)行解封裝,之后再單獨(dú)對(duì)視頻和音頻部分的碼流進(jìn)行處理。
2.3.1 視頻轉(zhuǎn)碼
各個(gè)視頻監(jiān)控系統(tǒng)廠商對(duì)視頻碼流部分的編碼均采用了統(tǒng)一的標(biāo)準(zhǔn)格式,即使用H.264格式進(jìn)行編碼,主要的差異體現(xiàn)在分辨率和幀率。分辨率不同的問(wèn)題可以通過(guò)在展示播放時(shí)按比例拉伸來(lái)保證視頻播放畫(huà)面的大小一致,因此,可以不在轉(zhuǎn)碼過(guò)程中進(jìn)行調(diào)整。幀率不同問(wèn)題會(huì)影響到多畫(huà)面快進(jìn)、快退和聯(lián)動(dòng)播放的同步,就需要在轉(zhuǎn)碼時(shí)通過(guò)對(duì)低幀率視頻進(jìn)行插值補(bǔ)償或者對(duì)高幀率視頻進(jìn)行抽幀來(lái)解決。兼顧到機(jī)車(chē)運(yùn)動(dòng)時(shí)圖像的流暢性和車(chē)載存儲(chǔ)器存儲(chǔ)空間的限值,將視頻的幀率統(tǒng)一轉(zhuǎn)換為15 f/s。對(duì)視頻碼流進(jìn)行轉(zhuǎn)碼的流程如圖1所示。
2.3.2 音頻轉(zhuǎn)碼
圖1 視頻轉(zhuǎn)碼流程Fig. 1 Flow chart of video transcoding
在機(jī)車(chē)車(chē)載視頻數(shù)據(jù)中,音頻碼流的轉(zhuǎn)碼所需要應(yīng)對(duì)的情形更加復(fù)雜,涉及了多種音頻編碼格式,主要包括AAC,PCM,MP2及MP3等。尤其是在一些早期的車(chē)載視頻監(jiān)控產(chǎn)品中,部分廠家使用了PCM_MULAW的音頻編碼格式,由于FFmpeg對(duì)此種音頻編碼格式難以正確識(shí)別采樣精度,導(dǎo)致在選擇音頻解碼器時(shí)出現(xiàn)采樣位數(shù)不匹配問(wèn)題。一般情況下,當(dāng)前主流設(shè)備都采用16 bit的采樣精度,但實(shí)際運(yùn)用過(guò)程中,發(fā)現(xiàn)了部分視頻采用了較為少見(jiàn)的8 bit采樣精度。在進(jìn)行轉(zhuǎn)碼時(shí),若直接使用FFmpeg的自帶接口,則會(huì)自動(dòng)進(jìn)行音頻解碼器選擇,默認(rèn)采用16 bit采樣精度的PCM解碼器解碼,會(huì)出現(xiàn)采樣率下降的問(wèn)題,導(dǎo)致音質(zhì)下降和更多雜音,視頻的長(zhǎng)度也會(huì)因此發(fā)生改變。因此,在進(jìn)行音頻編碼轉(zhuǎn)換時(shí),如果檢測(cè)到采樣率異常,需要及時(shí)指定音頻解碼器來(lái)正確地解碼不同編碼格式的音頻碼流。音頻碼流的轉(zhuǎn)碼流程如圖2所示。
圖2 音頻碼流的轉(zhuǎn)碼流程Fig. 2 Flow chart of transcoding audio stream
完成視頻碼流和音頻碼流的編碼轉(zhuǎn)換后,視頻碼流轉(zhuǎn)為統(tǒng)一的15 f/s幀率的H.264格式視頻編碼;音頻碼流轉(zhuǎn)換為統(tǒng)一的采樣率為8 000 Hz、采樣精度為16 bit的AAC音頻編碼,且均使用MP4標(biāo)準(zhǔn)容器進(jìn)行封裝。
機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)監(jiān)視多個(gè)車(chē)內(nèi)外區(qū)域,通常采用具有8個(gè)以上通道的攝像頭,正常情況下每臺(tái)機(jī)車(chē)每天產(chǎn)生的視頻文件數(shù)量接近1 000個(gè)。當(dāng)前主流的CPU大多采用了多核架構(gòu),可以充分利用計(jì)算資源提升轉(zhuǎn)碼效率,采用并行方式進(jìn)行轉(zhuǎn)碼是一種較為理想的選擇。同時(shí),為了在視頻數(shù)據(jù)關(guān)聯(lián)分析時(shí)能夠與機(jī)車(chē)運(yùn)行安全監(jiān)控系統(tǒng)(LKJ)信息實(shí)現(xiàn)同步,需要對(duì)視頻文件的絕對(duì)起始時(shí)間和SCR(system clock reference)時(shí)間進(jìn)行修正[3]。
在進(jìn)行批量轉(zhuǎn)碼時(shí),為了避免各個(gè)轉(zhuǎn)碼任務(wù)之間的干擾以及個(gè)別轉(zhuǎn)碼過(guò)程中出現(xiàn)異常時(shí)對(duì)整個(gè)系統(tǒng)的影響,本文采用多進(jìn)程的方式來(lái)實(shí)現(xiàn)并行轉(zhuǎn)碼。在進(jìn)行多進(jìn)程轉(zhuǎn)碼時(shí),根據(jù)不同硬件環(huán)境進(jìn)行進(jìn)程控制,實(shí)現(xiàn)自適應(yīng)的CPU占用平衡,避免同時(shí)開(kāi)啟過(guò)多進(jìn)程,引起計(jì)算機(jī)卡頓。
多進(jìn)程控制流程如圖3所示。首先,使用CreateTool help32Snapshot( )函數(shù)創(chuàng)建進(jìn)程快照,按照信息進(jìn)程結(jié)構(gòu)體PROCESSENTRY32、利用函數(shù)Process32First( )來(lái)循環(huán)查找轉(zhuǎn)碼進(jìn)程,得到當(dāng)前在執(zhí)行的轉(zhuǎn)碼進(jìn)程數(shù)量;然后,通過(guò)獲取配置文件中的轉(zhuǎn)碼并行進(jìn)程數(shù)量限制值來(lái)確定是否需要啟動(dòng)新的轉(zhuǎn)碼進(jìn)程,同時(shí)獲取CPU的占用情況,當(dāng)占用率超過(guò)80%時(shí),不再允許開(kāi)啟新的轉(zhuǎn)碼進(jìn)程;最后,在上述條件的限制下,將待轉(zhuǎn)碼視頻文件列表中的文件逐個(gè)進(jìn)行轉(zhuǎn)碼。重復(fù)進(jìn)行上述操作,直至所有的待轉(zhuǎn)碼文件完成轉(zhuǎn)碼。
圖3 多進(jìn)程轉(zhuǎn)碼控制Fig. 3 Multi-process transcoding control
批量轉(zhuǎn)碼時(shí),還需要特殊考慮暫停和續(xù)轉(zhuǎn)問(wèn)題。批量轉(zhuǎn)碼的過(guò)程中,可能由于某些資源需要切換,必須暫停轉(zhuǎn)碼,并在合適的時(shí)間恢復(fù)原有的轉(zhuǎn)碼進(jìn)度。另外,考慮極端情況,軟件出現(xiàn)異常退出時(shí),也需要在下次啟動(dòng)后恢復(fù)原來(lái)的轉(zhuǎn)碼進(jìn)度。為此,本文提出一種基于轉(zhuǎn)碼過(guò)程文件和共享文件列表的暫停和續(xù)轉(zhuǎn)控制方法,即在啟動(dòng)轉(zhuǎn)碼前,首先生成一個(gè)臨時(shí)的待轉(zhuǎn)碼文件列表并寫(xiě)入本地磁盤(pán)的文件中,該列表文件以共享讀寫(xiě)的形式打開(kāi)(為支持外部程序進(jìn)行待轉(zhuǎn)碼文件列表導(dǎo)入,此文件被設(shè)定為共享模式);所有待轉(zhuǎn)碼文件被讀出后,以路徑列表的形式同步保存在轉(zhuǎn)碼軟件的內(nèi)存數(shù)組和待轉(zhuǎn)碼文件中,每完成一個(gè)文件轉(zhuǎn)碼的同時(shí)剔除相應(yīng)的一行列表;然后,創(chuàng)建一個(gè)轉(zhuǎn)碼過(guò)程文件,將轉(zhuǎn)碼過(guò)程狀態(tài)數(shù)據(jù)實(shí)時(shí)寫(xiě)入到此轉(zhuǎn)碼過(guò)程文件,每完成一個(gè)文件的轉(zhuǎn)碼就記錄一行轉(zhuǎn)碼狀態(tài),實(shí)現(xiàn)轉(zhuǎn)碼過(guò)程的跟蹤。
轉(zhuǎn)碼過(guò)程文件按照序號(hào)、操作類型、待轉(zhuǎn)碼文件路徑、視頻總時(shí)長(zhǎng)及操作完成時(shí)間進(jìn)行組織,中間使用“.”符號(hào)進(jìn)行分割,便于在讀取時(shí)進(jìn)行自動(dòng)字段的提取。
當(dāng)需要暫停轉(zhuǎn)碼時(shí),把前文所述的轉(zhuǎn)碼并行進(jìn)程數(shù)量限制值置為0,則不再有新的轉(zhuǎn)碼進(jìn)程被創(chuàng)建;等待當(dāng)前所有進(jìn)程退出后,自動(dòng)進(jìn)入到完全的暫停狀態(tài)?;謴?fù)時(shí),重新讀取待轉(zhuǎn)碼文件列表共享文件,則可以啟動(dòng)轉(zhuǎn)碼并繼續(xù)原來(lái)暫停的轉(zhuǎn)碼進(jìn)度。若不需要進(jìn)行續(xù)轉(zhuǎn),只需清空待轉(zhuǎn)碼文件列表即可,轉(zhuǎn)碼軟件將自動(dòng)按照新的轉(zhuǎn)碼文件列表開(kāi)始新一輪轉(zhuǎn)碼流程。
視頻文件絕對(duì)起始時(shí)間的一般來(lái)源為視頻文件創(chuàng)建時(shí)記錄下來(lái)的系統(tǒng)時(shí)間,而車(chē)載硬盤(pán)錄像機(jī)(DVR)模塊可能因?yàn)槟承┰蚨鴮?dǎo)致系統(tǒng)時(shí)間不準(zhǔn)確;其另一個(gè)來(lái)源則是提取視頻內(nèi)容,以光學(xué)字符識(shí)別(OCR)方式識(shí)別出視頻實(shí)際時(shí)間[4],即在進(jìn)行轉(zhuǎn)碼前,截取視頻文件中最早的5個(gè)關(guān)鍵幀(I幀),裁剪出字幕中的時(shí)間圖片進(jìn)行5次OCR識(shí)別,并轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間。通過(guò)對(duì)系統(tǒng)時(shí)間與OCR獲取得到的時(shí)間進(jìn)行比對(duì),確認(rèn)最終的視頻文件的絕對(duì)起始時(shí)間。通過(guò)OCR方式獲取的時(shí)間信息如圖4所示。
圖4 OCR時(shí)鐘提取Fig. 4 OCR clock extraction
考慮到可能會(huì)出現(xiàn)隨機(jī)斷電、磁盤(pán)壞塊等異常終止錄像的情況,大部分車(chē)載視頻監(jiān)控系統(tǒng)采用了視頻碼流直接封裝存儲(chǔ)的方式。切換視頻文件時(shí),SCR時(shí)間未進(jìn)行置位,導(dǎo)致第一幀的SCR時(shí)間就是系統(tǒng)啟動(dòng)之后的運(yùn)行時(shí)間。該時(shí)間會(huì)影響視頻數(shù)據(jù)聯(lián)動(dòng)時(shí)的定位和播放。
為了避免時(shí)鐘值溢出,在進(jìn)行視頻數(shù)據(jù)轉(zhuǎn)碼之前,需要對(duì)原始視頻中的SCR時(shí)間進(jìn)行校正,通過(guò)逐幀讀取的方式將每一幀數(shù)據(jù)的SCR時(shí)間減去第一幀數(shù)據(jù)的SCR時(shí)間,最后再填充回原來(lái)的PS_head_tag標(biāo)準(zhǔn)結(jié)構(gòu)中;同時(shí),按照對(duì)應(yīng)的時(shí)鐘值修正PTS(presentation time stamp)時(shí)間。這樣處理之后的視頻文件,在進(jìn)行關(guān)聯(lián)時(shí),就能夠很方便地通過(guò)時(shí)間戳與其他機(jī)車(chē)運(yùn)行狀態(tài)數(shù)據(jù)同步。
機(jī)車(chē)視頻監(jiān)控?cái)?shù)據(jù)的運(yùn)用中需要考慮數(shù)據(jù)的質(zhì)量,其中最重要的指標(biāo)是視頻的完整性。車(chē)載視頻監(jiān)控系統(tǒng)受到傳輸網(wǎng)絡(luò)和存儲(chǔ)器狀態(tài)的影響,無(wú)法確保在任何時(shí)刻都能夠完整地記錄所有視頻數(shù)據(jù),在批量很大的情況下,部分時(shí)段視頻的缺失往往是較為常見(jiàn)的現(xiàn)象,而這類缺失對(duì)于后續(xù)的聯(lián)動(dòng)分析應(yīng)用有很大的影響,因?yàn)橐曨l數(shù)據(jù)與LKJ數(shù)據(jù)的關(guān)聯(lián)主要通過(guò)時(shí)間戳的映射來(lái)實(shí)現(xiàn)。
這種影響主要體現(xiàn)在視頻文件的總時(shí)長(zhǎng)上。視頻文件在創(chuàng)建時(shí)會(huì)記錄開(kāi)始創(chuàng)建的時(shí)間,但其結(jié)束的時(shí)間則存在不確定性,因視頻監(jiān)控系統(tǒng)可能存在臨時(shí)的斷電或者由于軟件異常等原因造成視頻文件重新創(chuàng)建的現(xiàn)象。單個(gè)文件的總時(shí)長(zhǎng)在轉(zhuǎn)碼時(shí)使用FFmpeg就可以獲取得到,但這個(gè)數(shù)值受到原始數(shù)據(jù)編碼時(shí)填充的時(shí)間戳的影響,文件尾部可能并不完整,得到的可能是一個(gè)錯(cuò)誤的數(shù)值。為了對(duì)文件的總時(shí)長(zhǎng)有一個(gè)更為準(zhǔn)確的比對(duì),本文設(shè)計(jì)的方案是采用第三方開(kāi)源媒體信息庫(kù)mediainfo來(lái)進(jìn)行視頻媒體信息的提取,提取得到的總時(shí)長(zhǎng)再與轉(zhuǎn)碼過(guò)程中通過(guò)FFmpeg獲取的總時(shí)長(zhǎng)進(jìn)行比較,最終確定文件總時(shí)長(zhǎng)的準(zhǔn)確值。
視頻文件中單個(gè)幀損壞或者連續(xù)多個(gè)視頻幀缺失也會(huì)影響到視頻監(jiān)控?cái)?shù)據(jù)歸集應(yīng)用和后續(xù)的聯(lián)動(dòng)分析。對(duì)于這類情況,在進(jìn)行視頻轉(zhuǎn)碼時(shí),需要分別對(duì)單個(gè)數(shù)據(jù)幀和多個(gè)連續(xù)數(shù)據(jù)幀進(jìn)行檢查。
通過(guò)逐字節(jié)讀取視頻數(shù)據(jù)文件,并找出第一個(gè)PS視頻數(shù)據(jù)幀的包頭起始標(biāo)識(shí)碼00 00 01 BA,按照標(biāo)準(zhǔn)的PS_header_tag結(jié)構(gòu)體檢查數(shù)據(jù)幀包頭部分是否存在錯(cuò)誤或丟失現(xiàn)象。若存在,則直接記錄當(dāng)前文件名和上一個(gè)正常數(shù)據(jù)幀SCR時(shí)間;若數(shù)據(jù)包頭正常,取出當(dāng)前數(shù)據(jù)幀包頭中的幀長(zhǎng)度和該數(shù)據(jù)幀的相對(duì)時(shí)間信息(每個(gè)視頻數(shù)據(jù)文件起始時(shí)間為0),繼續(xù)讀取文件,直至下一個(gè)數(shù)據(jù)幀包頭起始標(biāo)識(shí)碼。將實(shí)際數(shù)據(jù)幀長(zhǎng)度與包頭中記錄的長(zhǎng)度進(jìn)行比對(duì),若一致,則說(shuō)明該數(shù)據(jù)幀完整,重復(fù)以上過(guò)程;若不一致,則丟棄該數(shù)據(jù)幀并記錄當(dāng)前文件名和本數(shù)據(jù)幀時(shí)間,繼續(xù)尋找下一個(gè)PS視頻數(shù)據(jù)幀包頭起始標(biāo)識(shí)碼。單個(gè)數(shù)據(jù)幀的完整性判斷流程如圖5所示。
圖5 單個(gè)視頻數(shù)據(jù)幀的完整性檢測(cè)Fig. 5 Integrity detection of a single video data frame
首先,根據(jù)視頻數(shù)據(jù)幀率設(shè)定幀間時(shí)間差閾值。為避免出現(xiàn)誤判并保證較好的檢測(cè)效果,考慮到機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)的常用幀率為15 f/s,且人眼對(duì)于200 ms以下的單個(gè)相近畫(huà)面不敏感,將幀間時(shí)間差閾值設(shè)置為(單位:s)、最大連續(xù)不完整數(shù)據(jù)幀閾值為。如機(jī)車(chē)車(chē)載監(jiān)控系統(tǒng)視頻數(shù)據(jù)的幀率為15 f/s,則幀間時(shí)間差閾值可以被設(shè)置為3/15=0.2 s,最大連續(xù)不完整數(shù)據(jù)幀閾值則被設(shè)置為2幀。在完成單個(gè)視頻數(shù)據(jù)幀的完整性分析后,使用上述兩個(gè)閾值進(jìn)行判斷,若超過(guò)閾值范圍,則記錄當(dāng)前超出閾值相應(yīng)的文件名、幀相對(duì)時(shí)間,并以SCR起始時(shí)間為參照,計(jì)算出視頻間斷時(shí)間點(diǎn),以excel表格的形式存儲(chǔ)。該表格在關(guān)聯(lián)分析時(shí)將被作為索引輸入導(dǎo)入到數(shù)據(jù)庫(kù)中。視頻數(shù)據(jù)完整性檢測(cè)流程圖如圖6所示。
圖6 連續(xù)多個(gè)視頻幀缺失檢測(cè)Fig. 6 Missing detection of consecutive multiple video frames
目前,本文所述機(jī)車(chē)車(chē)載視頻數(shù)據(jù)自動(dòng)歸集技術(shù)已經(jīng)開(kāi)始在部分鐵路局進(jìn)行試點(diǎn)應(yīng)用。利用該技術(shù),車(chē)載視頻數(shù)據(jù)可以在前端完成分布式并行轉(zhuǎn)碼,極大提升了轉(zhuǎn)碼效率。轉(zhuǎn)碼后的視頻文件,在機(jī)車(chē)回段時(shí),通過(guò)大容量數(shù)據(jù)傳輸裝置實(shí)現(xiàn)高速車(chē)地信息傳輸,最終在路局的數(shù)據(jù)服務(wù)器中實(shí)現(xiàn)歸集。
當(dāng)前國(guó)內(nèi)各鐵路局對(duì)機(jī)車(chē)車(chē)載視頻監(jiān)控?cái)?shù)據(jù)的轉(zhuǎn)碼主要方式為地面集中式轉(zhuǎn)碼,即通過(guò)司機(jī)退勤時(shí)將車(chē)載外掛轉(zhuǎn)儲(chǔ)U盤(pán)中的數(shù)據(jù)拷貝至機(jī)房進(jìn)行轉(zhuǎn)碼。這給機(jī)房的計(jì)算機(jī)造成了較大的轉(zhuǎn)碼負(fù)荷,且轉(zhuǎn)碼時(shí)間較長(zhǎng),不可避免地會(huì)出現(xiàn)排隊(duì)的現(xiàn)象;而車(chē)載嵌入式處理器CPU則受限于功耗等原因,計(jì)算能力不足,所以也難以將十分消耗計(jì)算資源的轉(zhuǎn)碼工作移至機(jī)車(chē)上完成。
針對(duì)視頻轉(zhuǎn)碼業(yè)務(wù),圖形處理單元(graphic process unit, GPU)在性能上比CPU具備更大的優(yōu)勢(shì)。在工業(yè)嵌入式領(lǐng)域, NVIDIA公司發(fā)布了一款JETSON TX2型GPU,其額定功耗只有約7.5 W。經(jīng)過(guò)測(cè)試,TX2的視頻轉(zhuǎn)碼效率可以滿足現(xiàn)場(chǎng)運(yùn)用要求(轉(zhuǎn)碼效率大于10 MB/s),單臺(tái)機(jī)車(chē)8個(gè)視頻通道1 h產(chǎn)生的視頻文件一共32個(gè),大小總計(jì)約為2 GB,TX2可以在2 min內(nèi)完成1 h視頻到標(biāo)準(zhǔn)MP4的轉(zhuǎn)碼。
TX2通過(guò)以太網(wǎng)與車(chē)載視頻監(jiān)控系統(tǒng)通信,使用FTP協(xié)議獲取視頻文件數(shù)據(jù),然后進(jìn)行轉(zhuǎn)碼并保存在臨時(shí)的硬盤(pán)存儲(chǔ)器上;待條件滿足時(shí),借助于大容量無(wú)線通信鏈路傳輸至地面服務(wù)器。
在大數(shù)據(jù)技術(shù)快速發(fā)展的趨勢(shì)下,車(chē)載視頻轉(zhuǎn)碼的主流方案已經(jīng)更加傾向于將計(jì)算工作移動(dòng)到云端進(jìn)行,也就是實(shí)現(xiàn)邊緣計(jì)算。本文借助這個(gè)思路,把轉(zhuǎn)碼流程安放到車(chē)上進(jìn)行是一種更為高效和可靠的解決方案。
車(chē)載視頻監(jiān)控系統(tǒng)視頻數(shù)據(jù)的落地一直是難以解決的問(wèn)題,通過(guò)移動(dòng)數(shù)據(jù)3G/4G業(yè)務(wù)進(jìn)行傳輸,需要負(fù)擔(dān)高昂的流量費(fèi)用,而傳統(tǒng)的WLAN只有在段內(nèi)可以提供無(wú)線AP熱點(diǎn)接入,且機(jī)車(chē)在短時(shí)間內(nèi)無(wú)法完成全部視頻數(shù)據(jù)的傳輸,不具備實(shí)用價(jià)值[5]。
為解決此問(wèn)題,中車(chē)株洲電力機(jī)車(chē)研究所有限公司設(shè)計(jì)開(kāi)發(fā)了一套大容量視頻數(shù)據(jù)傳輸系統(tǒng)[6]。該系統(tǒng)包含一個(gè)帶有嵌入式Intel 酷睿I7處理器、總存儲(chǔ)容量1 TB固態(tài)硬盤(pán)的機(jī)箱,以及一個(gè)高速WLAN天線。WLAN天線與通信設(shè)備廠商合作開(kāi)發(fā),具備千兆帶寬容量,實(shí)際傳輸速率可以達(dá)到100 MB/s,使用PoE方式為天線供電。該大容量視頻傳輸系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖7所示。
圖7 大容量視頻傳輸系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖Fig. 7 Topological structure of the large capacity video transmission system
大容量視頻數(shù)據(jù)傳輸主控板卡直接訪問(wèn)已經(jīng)完成轉(zhuǎn)碼的視頻數(shù)據(jù),機(jī)車(chē)進(jìn)入機(jī)務(wù)段時(shí),自動(dòng)接入地面的無(wú)線AP熱點(diǎn)并觸發(fā)視頻數(shù)據(jù)的傳輸,通過(guò)FTP協(xié)議將視頻數(shù)據(jù)轉(zhuǎn)儲(chǔ)至地面服務(wù)器上。經(jīng)過(guò)測(cè)算,機(jī)車(chē)車(chē)載視頻監(jiān)控系統(tǒng)每天的數(shù)據(jù)量在30 GB左右,傳輸完所有視頻文件大約只需要5 min。這樣,在機(jī)車(chē)進(jìn)入機(jī)務(wù)段的過(guò)程中,基本上就可以完成全部的視頻從車(chē)載設(shè)備到地面服務(wù)器的傳輸,大大減少了路局在視頻數(shù)據(jù)統(tǒng)一管理和應(yīng)用上的人力資源投入。
在機(jī)車(chē)應(yīng)用由信息化向智能化邁進(jìn)的過(guò)程中,車(chē)載數(shù)據(jù)的歸集是當(dāng)前最為關(guān)鍵的一步。利用視頻轉(zhuǎn)碼技術(shù)和大容量數(shù)據(jù)無(wú)線傳輸技術(shù)來(lái)解決機(jī)車(chē)車(chē)載視頻監(jiān)控?cái)?shù)據(jù)自動(dòng)歸集是一種具備較強(qiáng)可行性的方案。
本方案中,視頻轉(zhuǎn)碼技術(shù)將機(jī)車(chē)車(chē)載視頻數(shù)據(jù)的不同編碼格式和封裝形式統(tǒng)一成標(biāo)準(zhǔn)的MP4文件,修正了影響關(guān)聯(lián)分析的視頻數(shù)據(jù)時(shí)間戳,形成每個(gè)視頻通道在全時(shí)段范圍內(nèi)的數(shù)據(jù)索引,整個(gè)過(guò)程通過(guò)車(chē)載GPU板卡在機(jī)車(chē)運(yùn)行過(guò)程中完成。視頻數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)時(shí),不再需要通過(guò)重新對(duì)文件讀取來(lái)構(gòu)建數(shù)據(jù)索引,節(jié)省了地面系統(tǒng)集中轉(zhuǎn)碼的時(shí)間,加快了視頻數(shù)據(jù)從下載到歸集進(jìn)數(shù)據(jù)庫(kù)的過(guò)程。
通過(guò)大容量數(shù)據(jù)無(wú)線傳輸技術(shù),將完成轉(zhuǎn)碼的視頻數(shù)據(jù)在機(jī)車(chē)進(jìn)入機(jī)務(wù)段??康暮芏虝r(shí)間內(nèi)就可以完成從車(chē)載到地面服務(wù)器的下載,減少了人力資源的消耗,也避免了人為因素對(duì)視頻監(jiān)控?cái)?shù)據(jù)造成影響的風(fēng)險(xiǎn),在高效和安全性方面對(duì)于路局的信息化運(yùn)營(yíng)管理具有重要意義。
車(chē)載GPU視頻轉(zhuǎn)碼及大容量視頻無(wú)線傳輸技術(shù),是對(duì)海量數(shù)據(jù)轉(zhuǎn)換和車(chē)地傳輸?shù)囊环N有效嘗試,其已被裝車(chē)試用,成功解決了大容量視頻數(shù)據(jù)的結(jié)構(gòu)化和高速無(wú)線傳輸問(wèn)題。隨著未來(lái)公網(wǎng)5G技術(shù)的推廣應(yīng)用,有望將大容量數(shù)據(jù)傳輸從站段AP接入方式升級(jí)為全線實(shí)時(shí)專網(wǎng)傳輸,從而更好地支撐高清甚至是超高清車(chē)載視頻系統(tǒng)在機(jī)務(wù)信息化工作中的推廣應(yīng)用。