單俊強(qiáng)
(中國神華能源股份有限公司 神朔鐵路分公司,陜西榆林 719316)
6A視頻與LKJ運(yùn)行數(shù)據(jù)聯(lián)動(dòng)分析軟件可以很好地結(jié)合機(jī)車視頻數(shù)據(jù)及其對(duì)應(yīng)運(yùn)行信息,使得相關(guān)工作人員可以在后期對(duì)機(jī)車視頻數(shù)據(jù),運(yùn)行情況,故障數(shù)據(jù),機(jī)車運(yùn)行特殊位置時(shí)刻進(jìn)行準(zhǔn)確有效地查詢和分析機(jī)車運(yùn)行狀況。目前機(jī)車上6A視頻通道總共有16個(gè),將16路通道視頻與機(jī)車運(yùn)行數(shù)據(jù)同步,能夠有效實(shí)現(xiàn)機(jī)車視頻與數(shù)據(jù)的聯(lián)動(dòng)性,并提供項(xiàng)點(diǎn)分析及報(bào)表展示等功能,為處理機(jī)務(wù)數(shù)據(jù)提供了有效的管理方式,準(zhǔn)確提供機(jī)車現(xiàn)場情況還原的視頻及機(jī)車運(yùn)行數(shù)據(jù)。在眾多的多媒體播放器項(xiàng)目中VLC(Video LAN Client)項(xiàng)目是一個(gè)基于流傳輸?shù)拈_源視頻項(xiàng)目,集成了FFmpeg(Fast Forword Mpeg)編解碼庫,獲取簡單,并有很多開源社區(qū)、論壇等提供技術(shù)支持,使得開發(fā)起來更加得心應(yīng)手[1]。本軟件通過利用VLC開源平臺(tái)進(jìn)行二次開發(fā),將視頻與機(jī)車運(yùn)行數(shù)據(jù)結(jié)合,編程實(shí)現(xiàn)構(gòu)建一個(gè)基于機(jī)車視頻及運(yùn)行信息的視頻應(yīng)用。主要運(yùn)用于離線回放機(jī)車硬盤中存儲(chǔ)的錄像及相關(guān)行車數(shù)據(jù)等信息,機(jī)車信息涵蓋機(jī)車監(jiān)控?cái)?shù)據(jù)部分信息,機(jī)車監(jiān)控項(xiàng)點(diǎn)分析信息等數(shù)據(jù),并且能夠控制播放、暫停、停止、快速播放、減速播放、音量控制的調(diào)節(jié)、截圖及截取視頻等多種播放控制功能,界面簡明,操作簡單。
機(jī)車車載安全防護(hù)系統(tǒng)(簡稱6A系統(tǒng))是針對(duì)機(jī)車的制動(dòng)系統(tǒng)、高壓絕緣、防火、列車供電、視頻、走行部等危及安全的重要事項(xiàng)、重點(diǎn)部件和部位,采用實(shí)時(shí)監(jiān)視、檢測、報(bào)警并可實(shí)現(xiàn)網(wǎng)絡(luò)傳輸、統(tǒng)一固態(tài)存儲(chǔ)和智能人機(jī)界面,整體研究設(shè)計(jì)而形成平臺(tái)化的安全防護(hù)裝置[2]。機(jī)車自動(dòng)視頻監(jiān)控及記錄子系統(tǒng)(AVDR)是6A系統(tǒng)的一部分,主要功能有對(duì)監(jiān)控路況、司機(jī)室、機(jī)械間等處的視頻圖像進(jìn)行記錄,實(shí)現(xiàn)與防火系統(tǒng)的聯(lián)動(dòng),視頻圖像存儲(chǔ)和調(diào)用分析[3]。通過記錄司機(jī)操作、運(yùn)行路況、機(jī)械間圖像等,輔助事故分析,為機(jī)車設(shè)備報(bào)警和事件的分析提供重要視頻圖像依據(jù)。
列車運(yùn)行監(jiān)控裝置(LKJ)是我國自主研發(fā)的列車速度控制系統(tǒng),是中國鐵路列車運(yùn)行控制系統(tǒng)體系的組成部分,具有防止列車冒進(jìn)信號(hào),運(yùn)行超速和輔助司機(jī)提高操作能力等功能。LKJ數(shù)據(jù)主要為機(jī)車狀態(tài)信息,機(jī)車安全信息,過站信息等,主要包括列車所在位置、運(yùn)行工況、司機(jī)號(hào)、信號(hào)機(jī)、車站、公里標(biāo)、速度、列車管壓力、進(jìn)出站及信號(hào)燈等信息。該裝置在實(shí)現(xiàn)安全速度控制的同時(shí),并采集記錄與列車安全運(yùn)行有關(guān)的各種機(jī)車運(yùn)行狀態(tài)信息,促進(jìn)機(jī)車運(yùn)行管理自動(dòng)化,為相關(guān)機(jī)務(wù)應(yīng)用提供了重要的數(shù)據(jù)來源,見圖1。
由于6A系統(tǒng)在機(jī)車安全領(lǐng)域上的重要性以及LKJ數(shù)據(jù)記錄了詳細(xì)的機(jī)車運(yùn)行信息,更好地分析機(jī)車視頻數(shù)據(jù)及對(duì)應(yīng)運(yùn)行信息的需求非常強(qiáng)烈,需要有效地對(duì)機(jī)車視頻數(shù)據(jù)及運(yùn)行數(shù)據(jù)進(jìn)行聯(lián)動(dòng)分析,使得相關(guān)工作人員可以在后期對(duì)機(jī)車運(yùn)行情況,故障數(shù)據(jù),機(jī)車運(yùn)行特殊位置時(shí)刻進(jìn)行準(zhǔn)確有效地查詢和分析。
由于機(jī)車視頻格式包含眾多,有多種分辨率,幀率,多種通道音視頻的情況,一般的播放器難以支持其復(fù)雜的情況,需要有更好的解決方案。LKJ分析人員在進(jìn)行LKJ數(shù)據(jù)分析的過程中,需要同步觀察LKJ事件相關(guān)聯(lián)的機(jī)車視頻,用于輔助分析LKJ事件。由于現(xiàn)場情況復(fù)雜,導(dǎo)致視頻服務(wù)器上的程序存在各種各樣的問題,如機(jī)車存在多個(gè)通道,不同通道且視頻格式還并不統(tǒng)一,播放器播放時(shí)容易存在各種問題,故需要對(duì)這種情況進(jìn)行格式統(tǒng)一處理。
FFmpeg作為目前領(lǐng)先的視頻解析、解碼和編碼的開源程序,其在視頻解析、解碼和編碼方面有著很大的應(yīng)用,是一款用于記錄、轉(zhuǎn)換數(shù)字音頻和視頻,并能將其轉(zhuǎn)化為視頻流和音頻流的開源工具,這款工具功能非常強(qiáng)大,能夠完成視頻轉(zhuǎn)碼、截圖、視頻剪切等功能。最重要的是FFmpeg編譯成動(dòng)態(tài)庫或者靜態(tài)庫的時(shí)候都提供了有著強(qiáng)大功能和簡易使用的接口,同時(shí)FFmpeg程序支持在Linux和Windows等很多操作系統(tǒng)下的編譯。這兩個(gè)特性就使得目前很多支持主流格式的播放器都是調(diào)用FFmpeg庫進(jìn)行解析和解碼,如暴風(fēng)影音等[4]。這里也將調(diào)用FFmpeg這個(gè)強(qiáng)大的視頻解析和解碼庫實(shí)現(xiàn)最底層的視頻格式解析,分析視頻幀數(shù)據(jù)、格式等信息。
視頻文件可以統(tǒng)稱為容器,在容器中將視頻流、音頻流以及字幕等融合在一起形成了視頻文件,為了完成這些工作FFmpeg工具包含有編解碼模塊。該模塊位于Libavcodec中,根據(jù)需要,可以將不同格式的視頻流轉(zhuǎn)換成為需要格式的文件,一般的工作流程為先解碼然后再進(jìn)行相應(yīng)的編碼形成對(duì)應(yīng)格式的文件。幾種常見的視頻格式有MPEG格式、AVI格式、RMVB格式及WMV格式等。一般的播放器僅能支持主流的幾種視頻格式(例如:微軟自帶的Windows Media Player),遇到不支持的格式的視頻文件需要下載對(duì)應(yīng)的轉(zhuǎn)換器將文件進(jìn)行轉(zhuǎn)碼[4]。而機(jī)車上的視頻為了節(jié)省存儲(chǔ)空間及加密設(shè)置,對(duì)視頻的格式進(jìn)行了特殊處理,部分播放器不支持對(duì)應(yīng)的格式,不能準(zhǔn)確的將視頻解碼,而VLC視頻播放器解決方案基本支持所有的視頻格式,該播放器基于VLC設(shè)計(jì),也同樣基本支持大部分的視頻格式,減少了用戶的限制性,從而給客戶帶了方便。
本播放器的主要任務(wù)和目的是播放車載視頻格式文件以及加載相應(yīng)運(yùn)行記錄文件,達(dá)到操作功能簡潔方便,一目了然,而又不影響日常分析處理的需求。系統(tǒng)按主要功能劃分為以下5個(gè)子系統(tǒng)模塊(見圖2),每個(gè)子系統(tǒng)功能模塊的作用描述如下:
自營項(xiàng)目之輪是城投的方向所在,發(fā)展之本.自營項(xiàng)目對(duì)保證企業(yè)的獨(dú)立性、可持續(xù)性至關(guān)重要.自營板塊大的企業(yè)一定是好企業(yè).自營板塊的開發(fā),可以利用指定項(xiàng)目開發(fā)形成的無形資產(chǎn)及特殊資源,起步快;自營項(xiàng)目自主性大,可以實(shí)現(xiàn)效益最大化;自營項(xiàng)目更容易利用資本市場開展經(jīng)營活動(dòng),讓員工快速實(shí)現(xiàn)財(cái)富增加.就目前來看,一般的城投公司大多選擇金融板塊,城市商業(yè)區(qū)開發(fā)板塊,房地產(chǎn)板塊,建材礦產(chǎn)板塊,城市土地區(qū)塊開發(fā)板塊,廣告開發(fā)板塊,城市水、電、燃?xì)?、公交等公用設(shè)施營運(yùn)板塊作為發(fā)展方向.只有真正把自營板塊做大做強(qiáng),城投才可以說是有實(shí)力,有影響力,是可持續(xù)發(fā)展的.
圖2 系統(tǒng)功能模塊圖
(1)多通道視頻播放。加載視頻后會(huì)在列表顯示相關(guān)視頻信息,包括視頻開始時(shí)間,視頻時(shí)長等。可對(duì)播放窗口模式進(jìn)行切換,1、4、6、8、9、10、13、16個(gè)播放窗口顯示,滿足顧客實(shí)際情況需要。
(2)機(jī)車運(yùn)行視頻及數(shù)據(jù)圖表顯示。圖表可顯示當(dāng)前視頻播放進(jìn)度、機(jī)車速度、管壓曲線以及相關(guān)運(yùn)行信息等??烧{(diào)節(jié)播放進(jìn)度,跳轉(zhuǎn)到相應(yīng)時(shí)間點(diǎn)。
(3)視頻播放控制。可對(duì)視頻進(jìn)行播放暫停、快速減速播放、截圖、截取視頻及全屏等操作。
(4)項(xiàng)點(diǎn)分析。分析運(yùn)行記錄文件,通過項(xiàng)點(diǎn)發(fā)生邏輯判斷項(xiàng)點(diǎn)發(fā)生時(shí)間,視頻可跳轉(zhuǎn)到項(xiàng)點(diǎn)發(fā)生時(shí)間,用戶得以更方便的觀察機(jī)車運(yùn)行情況。
(5)生成機(jī)車運(yùn)行日志報(bào)表??缮蓹C(jī)車運(yùn)行報(bào)表,包含視頻圖像、機(jī)車數(shù)據(jù)及編寫報(bào)告等。
本軟件在設(shè)計(jì)上充分考慮到了模塊化指導(dǎo)思想,界面設(shè)計(jì)和后臺(tái)邏輯相分離,主要包含軟件界面模塊、視頻解析模塊、視頻轉(zhuǎn)碼模塊以及數(shù)據(jù)展示模塊(見圖3)。
為實(shí)現(xiàn)機(jī)車視頻與LKJ數(shù)據(jù)的聯(lián)動(dòng)性,關(guān)鍵是需要對(duì)機(jī)車視頻信息及LKJ數(shù)據(jù)幀信息的關(guān)聯(lián)實(shí)現(xiàn)同步,本軟件首先將視頻信息進(jìn)行解析,得到視頻的開始時(shí)間及視頻時(shí)長,再將LKJ數(shù)據(jù)文件解析保存到內(nèi)存中,當(dāng)用戶播放視頻的同時(shí),將對(duì)應(yīng)時(shí)間下LKJ數(shù)據(jù)幀信息取出,展示到軟件界面的相應(yīng)模塊中,使得分析人員可以在視頻時(shí)間下查看機(jī)車LKJ數(shù)據(jù),更好地分析機(jī)車運(yùn)行狀況。
軟件開發(fā)環(huán)境為Visual Studio 2013,采用其中已安裝模板WPF模塊開發(fā),WPF是目前最為流行的Win?dows桌面程序設(shè)計(jì)框架,程序語言使用C#語言開發(fā),所使用的控件、容器、組件、工具欄、菜單欄及對(duì)話框等都是在WPF框架下提供[2,5]。
圖3 系統(tǒng)流程圖
軟件主界面包含視頻播放窗口,播放控制工具欄,時(shí)間軸,機(jī)車監(jiān)控曲線軸,文件列表,加載文件列表,文件日期統(tǒng)計(jì)列表,機(jī)車監(jiān)控項(xiàng)點(diǎn)列表,機(jī)車數(shù)據(jù)顯示列表。并支持顯示隱藏圖表列表功能。軟件界面主要用于加載錄像文件信息,獲得錄像文件相關(guān)信息,然后用戶可雙擊文件列表,文件日期統(tǒng)計(jì)列表時(shí)間,項(xiàng)點(diǎn)名稱列表的任意視頻文件播放對(duì)應(yīng)錄像視頻。
根據(jù)需求,用戶可直接點(diǎn)擊播放窗口模式切換可進(jìn)行1、4、6、8、9、10、13、16個(gè)播放窗口顯示,可直接觀看相應(yīng)模式下的視頻文件,也可雙擊視頻實(shí)現(xiàn)全屏模式(見圖5)。
通過選擇的不同模式,計(jì)算出對(duì)應(yīng)模式下的視頻寬高比,就能得到不同的展示形式,滿足客戶的體驗(yàn)需求[6]。
由于要在圖表上顯示出視頻時(shí)長曲線,但知道開始時(shí)間并不夠,所以需要對(duì)時(shí)長進(jìn)行解析,獲取視頻的時(shí)長。普通格式的視頻文件解析視頻時(shí)長非常簡單,因?yàn)槠浔旧硇畔⒕妥詭Я藭r(shí)長信息,可以直接獲取,但是機(jī)車視頻為了節(jié)省空間,在格式上做了特殊處理,對(duì)一些冗余信息未做保存,需要對(duì)視頻流進(jìn)行分析才能獲取視頻的時(shí)長及各種信息。
為了更好地獲取視頻時(shí)長信息,采用了FFmpeg獲取視頻信息的方法,利用FFmpeg解析視頻,可以很方便的獲得視頻信息。圖6是FFmpeg解析流程圖,首先會(huì)讀入視頻流,判斷視頻的格式,確定后對(duì)視頻進(jìn)行解碼,獲取其幀信息,包括分辨率、幀率、碼率、總幀數(shù)、時(shí)長和編碼格式等。
點(diǎn)擊視頻播放進(jìn)度條可對(duì)播放視頻按照時(shí)間軸進(jìn)行定位,跳轉(zhuǎn)到相應(yīng)時(shí)間點(diǎn)位置播放視頻。通過獲取跳轉(zhuǎn)時(shí)間點(diǎn)的時(shí)間,判斷該時(shí)間點(diǎn)處于整個(gè)視頻的位置,直接改變視頻的Pozition屬性就能實(shí)現(xiàn)跳轉(zhuǎn)。圖表上顯示機(jī)車速度、管壓和視頻等信息。并可對(duì)圖表進(jìn)行放大縮小等操作。
圖4 主界面圖
圖5 多畫面模塊圖
圖6 FFmpeg解析流程圖
時(shí)間軸定位圖如圖7所示。
圖7 時(shí)間軸定位圖
當(dāng)視頻開始播放時(shí),點(diǎn)擊菜單欄“操作”→“視頻裁剪”或者按鈕。進(jìn)入視頻剪切界面,選擇裁剪時(shí)間和通道號(hào)開始裁剪。可選擇剪切全部通道視頻或單個(gè)通道視頻,并對(duì)視頻時(shí)長進(jìn)行選擇。
能實(shí)現(xiàn)剪切視頻文件的工具多種多樣,但往往都需要進(jìn)行視頻重編碼(TransCoding),這就不可避免的帶來了視頻質(zhì)量上的損耗,轉(zhuǎn)換時(shí)間長,不能非常精準(zhǔn)有效地進(jìn)行剪切操作。
在視頻編碼時(shí),視頻幀一般分為I幀,B幀和P幀。所有視頻開始的第一幀都是I幀,之后才是B幀,P幀,I幀只占少數(shù),主要起的作用是作為后續(xù)幀的參考幀。而一般的工具在視頻剪切時(shí)都會(huì)在有I幀的時(shí)間點(diǎn)剪切,因?yàn)镮幀是起始幀,作為后面幀的參考幀,這樣就不可避免的會(huì)對(duì)時(shí)間有所偏差。而借助FFmpeg可以在不進(jìn)行視頻重編碼的情況下完成此類任務(wù),并且可以對(duì)剪切時(shí)間點(diǎn)的那幀解碼,使其成為I幀,這樣就能有更加精確地剪切效果。通過指令“FFmpeg -i input.mp4 -ss**START_TIME** -t **STOP_TIME** -acodec copy-vcodec copy output.mp4”可以高效快速的獲得所需要剪切的視頻。
機(jī)車項(xiàng)點(diǎn)信息是機(jī)車運(yùn)行重要數(shù)據(jù),包括開車事件,停車事件,監(jiān)控動(dòng)作,側(cè)線運(yùn)行,人為緊急,進(jìn)入調(diào)車,過分相點(diǎn),特殊區(qū)域,紅黃信號(hào),總風(fēng)低壓,監(jiān)控解鎖,繼乘交接,黃燈信號(hào),減壓制動(dòng)等。
每個(gè)事件都有其對(duì)應(yīng)的邏輯,例如開車事件的邏輯為:LKJ裝置開車狀態(tài)下,機(jī)車由靜止?fàn)顟B(tài)開始運(yùn)行,速度大于0,當(dāng)速度達(dá)到3 km/h,裝置記錄該時(shí)點(diǎn)前后若干秒,作為開車事件。需要在程序中解析記錄文件信息,通過事件發(fā)生邏輯,判斷事件的發(fā)生時(shí)間點(diǎn),獲取項(xiàng)點(diǎn)后將其記錄,最終顯示到列表中。用戶可查看發(fā)生的項(xiàng)點(diǎn)信息,并點(diǎn)擊項(xiàng)點(diǎn)后視頻跳轉(zhuǎn)到項(xiàng)點(diǎn)發(fā)生的時(shí)間播放,解析流程見圖8。
圖8 項(xiàng)點(diǎn)事件解析流程
軟件能夠有效地分析相應(yīng)時(shí)間段下LKJ數(shù)據(jù)中對(duì)應(yīng)的項(xiàng)點(diǎn)信息,并在視頻區(qū)域及數(shù)據(jù)顯示區(qū)域有效地展示項(xiàng)點(diǎn)時(shí)間點(diǎn)的信息,為用戶更好的分析機(jī)車信息。
經(jīng)過多次測試及現(xiàn)場工作人員使用,該視頻播放器能夠較好的實(shí)現(xiàn)6A多路視頻的控制播放與機(jī)車LKJ數(shù)據(jù)的聯(lián)動(dòng)顯示,有助于工作人員處理好相應(yīng)數(shù)據(jù)分析,生成分析報(bào)告,能夠同時(shí)對(duì)多路多媒體進(jìn)行有效地控制,并實(shí)現(xiàn)顯示文件的時(shí)間長度,播放的時(shí)間位置,并能夠擁有一定的穩(wěn)定性、兼容性和實(shí)用性。功能相對(duì)完善,基本上支持市面上絕大多數(shù)格式的多媒體,為機(jī)車數(shù)據(jù)分析,安全性能的提高又提供了一層保障。
基于機(jī)車視頻與運(yùn)行數(shù)據(jù)聯(lián)動(dòng)分析的視頻解決方案已日漸成熟,能夠基本滿足使用單位需要,使得數(shù)據(jù)分析人員能夠更好的分析機(jī)車相關(guān)數(shù)據(jù)。但隨著需求的日漸提高,未來對(duì)視頻文件的分析也有更高的需求。基于視頻圖像內(nèi)容分析的需求應(yīng)當(dāng)是未來鐵路機(jī)車行業(yè)視頻分析中的重點(diǎn),例如:可以進(jìn)行公里標(biāo)牌識(shí)別,司機(jī)動(dòng)作識(shí)別,特殊動(dòng)作識(shí)別,列車車號(hào)識(shí)別,弓網(wǎng)設(shè)備等。相信圖像及視頻識(shí)別技術(shù)將會(huì)在未來的軌道交通領(lǐng)域中大放異彩。