夏金瑤, 肖炳甲, 李 丹, 王開榮, 羅文利
?
基于Web的EAST實時視頻點播系統(tǒng)①
夏金瑤1,2, 肖炳甲1,2, 李 丹1, 王開榮1,2, 羅文利3
1(中國科學院等離子體物理研究所, 合肥 230031)2(中國科學技術大學, 合肥 230031)3(中國船舶重工集團公司第七〇九研究所, 武漢 430047)
基于Web的EAST(全超導托卡馬克)實時視頻點播系統(tǒng)是在原視頻點播系統(tǒng)的基礎上進行優(yōu)化和改進實現(xiàn)的, 具有實時點播EAST實驗中的等離子體放電視頻、搜索視頻、下載視頻以及逐幀分析視頻等功能. 該系統(tǒng)主要由視頻合成應用程序和視頻點播網(wǎng)站兩個部分組成, 視頻合成程序采用socket TCP通訊的方式接收炮號信息, 通過共享目錄轉移視頻幀文件, 最后利用ffmpeg將視頻幀文件合成flv視頻. 視頻點播采用B/S(瀏覽器/服務器)結構框架實現(xiàn), 通過JSP從數(shù)據(jù)庫讀取炮號信息實現(xiàn)點播功能, 結合XML和JavaScript實現(xiàn)逐幀分析. 目前本系統(tǒng)已經(jīng)在EAST實驗中投入使用, 為EAST實驗人員提供了極大的便利.
實時; 視頻點播; ffmpeg; XML; JavaScript
EAST(Experimental Advanced Superconducting Tokamak), 是中科院等離子體物理研究所在成功建設中國第一個超導托卡馬克HT-7的基礎上, 提出的“HT-7U全超導非圓截面托卡馬克裝置建設”計劃[1]. 在EAST托卡馬克實驗中, 為了記錄和重視等離子體的位形以分析托卡馬克啟動和等離子體成形控制的效果, 劉連忠等建立了視頻點播系統(tǒng), 配合高速視頻采集設備, 實現(xiàn)了等離子體放電視頻的采集、發(fā)布和點播功能[2]. 但是隨著高速采集相機類型的增加, 以及每年不斷增長的視頻數(shù)據(jù), 原來的視頻點播系統(tǒng)出現(xiàn)視頻類型單一, 視頻采集轉換延遲, 耗費系統(tǒng)資源以及存儲不足等問題. 因此在原視頻點播系統(tǒng)的基礎上不斷的改進和優(yōu)化, 建立實時的視頻點播系統(tǒng)具有重要的現(xiàn)實意義. 在EAST實驗中, 實時將高速攝像機的高清視頻轉化為可用于網(wǎng)絡傳輸?shù)囊曨l格式, 利用Internet高速迅捷的傳播優(yōu)勢, 科研人員通過Web瀏覽器可以在EAST實驗過程中實時查看等離子體位形的視頻, 對實驗結果進行分析研究, 為EAST工程實驗人員提供了極大的便利.
EAST實時視頻點播系統(tǒng)結構框架如圖2所示, 主要由四部分組成, 分別是總控、視頻采集服務器、視頻存儲服務器和視頻點播服務器.
圖1 系統(tǒng)總體框圖
實驗開始, 總控(中央控制系統(tǒng))向視頻采集服務器發(fā)送觸發(fā).
視頻采集服務器接收到總控炮號觸發(fā)后開始錄制視頻, 錄制完成后對原始的視頻進行分幀并保留時間文件, 然后打包壓縮并以炮號命名, 壓縮完成后向視頻點播服務器發(fā)送炮號信息, 最后將原始視頻實時傳輸?shù)揭曨l存儲服務器上.
視頻點播服務器監(jiān)聽并接收炮號, 拷貝壓縮文件并解壓, 將幀序列合并為flv視頻, 將視頻存入存儲中, 并將分幀信息存入信息數(shù)據(jù)庫中. 通過B/S(瀏覽器/服務端)機制, 供用戶在網(wǎng)頁中查看最新炮號的的信息及視頻.
存儲服務器用于存儲所有的原始視頻文件和flv視頻文件.
2.1視頻采集
視頻采集是通過專門的高速CCD設備獲取視頻[3], 目前CCD主要有紅外相機一個, 可見光相機三個. EAST 紅外診斷系統(tǒng)所使用的相機包括一個紅外相機IR和一個可見光黑白相機HSCCD, 兩個相機共享內窺鏡, 均位于K窗口, 可同時監(jiān)測上下偏濾器, N窗口低雜波天線以及位于M、N 窗口之間的限制器[4]. 紅外相機熱像儀為滿足科研、無損檢測領域要求的熱分析而設計, 速度快, 分辨率高, 非常適合要求精確測溫的應用領域[5]. 另外兩個可見光彩色相機NCCDDL、NCCDGL分別位于D窗口和G窗口[6]. NCCDDL相機可觀測D窗口到A窗口區(qū)域. NCCDGL窗口相機為可觀測G窗口到D窗口區(qū)域.
實驗開始時, 中央控制系統(tǒng)通過網(wǎng)絡以TCP方式發(fā)送炮號信息給可見光相機, 通過發(fā)送脈沖信號給紅外相機, 相機開始采集視頻. 放電結束后, 停止采集, 生成原始視頻格式, 原始視頻格式需要安裝專門的軟件才能播放且采樣率高不便于網(wǎng)絡傳輸, 因此對視頻進行采樣分幀, 并保存幀序列時間文件, 視頻幀格式及采樣率如表1所示.
表1 高速相機視頻幀序列
視頻分幀完成后將幀序列文件和時間文件打包為以炮號命名的壓縮文件, 存放到視頻點播服務器可以訪問的共享目錄下, 并通過Socket TCP通訊方式發(fā)送消息給視頻點播服務器, 消息格式為“炮號,視頻類型,文件格式#”. 最后通過磁盤映射將原始格式視頻傳到視頻存儲服務器中.
2.2視頻合成
視頻點播服務器時刻監(jiān)聽視頻采集服務器是否發(fā)送最新炮號信息, 接收到炮號信息后開始合成點播所需的flv視頻文件. flv視頻合成程序的流程圖如圖2所示. 視頻合成程序主要由兩個線程組成, 線程1用于監(jiān)聽視頻采集服務器是否有新炮號發(fā)送, 線程2用于視頻幀序列文件的轉移與視頻的合成. 兩個線程共享炮號隊列.
線程1通過socket通訊方式監(jiān)聽是否有新炮號, 將新的炮號信息加入炮號隊列隊尾中, 然后繼續(xù)監(jiān)聽炮號.
線程2循環(huán)檢查炮號隊列, 如果炮號隊列不為空, 則開始視頻幀序列的轉移與flv視頻的合成. 具體步驟如下.
(1) 退出炮號隊列的隊首元素(炮號信息字符串), 將炮號信息字符串進行分割, 如“10000,NCCDDL,zip#”, 其中“10000”為最新炮號, “NCCDDL”標志為 D窗口可見光相機, zip為壓縮文件格式, “#”為結束標志.
(2) 根據(jù)炮號和視頻類型到對應的共享目錄下拷貝“10000.zip”文件到本地, 并用7za.exe對文件進行解壓縮到本地目錄. 解壓的文件包括視頻幀序列文件和時間文件, 如果時間文件缺失, 或文件大小為0, 則結束當前視頻合成. 否則用ffmpeg工具將視頻幀序列文件合成為flv視頻, ffmpeg是一套可以用來記錄、轉換數(shù)字音頻視頻, 并能將其轉化為流的開源計算機程序[7]. 炮號為10000的視頻合成命令行如下所示:
ffmpeg.exe -r 120 -i 10000_%3d.jpg -qscale 1 -y 10000.flv
其中, -r表示幀頻率, 根據(jù)時間文件相鄰時刻點計算得到幀頻率如NCCDDL幀頻率計算為120HZ, -i表示輸入幀序列文件, 文件命名方式為炮號名_序列號.jpg, -qscale為壓縮率, 這里不進行壓縮, -y為覆蓋方式輸出合成視頻文件10000.flv.
(3) 撰寫幀信息文件shot.xml用于視頻點播網(wǎng)站的逐幀分析. 文件格式如下,包括視頻幀的序列號, 時刻點以及幀圖片文件名等信息.
(4) 將炮號信息寫入到SQL Server數(shù)據(jù)庫中, 用于視頻網(wǎng)站的點播, 主要包括炮號名, 生成時間, 視頻文件名和視頻的總幀數(shù).
視頻合成程序用C++可視化編程實現(xiàn), 程序啟動后彈出對話框如圖3所示. 左邊為炮號隊列狀態(tài), 右邊為炮號轉移與視頻合成的狀態(tài), 每個過程都有狀態(tài)顯示. 跑號隊列中“65158,NCCDGL,zip,65160#”表示增加連續(xù)炮號65158~65160. 關閉對話框就保留狀態(tài)記錄到歷史文件中, 便于后期查遺補漏.
圖3 視頻合成程序運行效果圖
2.3 視頻點播與存儲
視頻點播網(wǎng)站主要由標題、導航和內容三層布局組成. 導航主要包括首頁、視頻、逐幀分析、用戶手冊和聯(lián)系我們五個部分. 其中主要部分為視頻點播和逐幀分析頁面.
視頻點播頁面如圖4所示, 包括 6 個視頻目錄, 分別是 Black-White、Color、NCCDDL、NCCDG、IR、HSCCD. 圖4為可見光彩色視頻點播頁面. 該頁面是JSP實現(xiàn)的動態(tài)頁面, 可以讀取數(shù)據(jù)庫實時更新炮號, 也可以輸入炮號搜索視頻、播放視頻或下載視頻.
圖 4 視頻播放頁面
在導航欄中點擊“FRAME ANALYSIS”, 進入視頻分析頁面. 與視頻點播一樣包括6 個視頻目錄, 分別是 Black-White、Color、NCCDDL、NCCDDR、IR、HSCCD. 如圖5所示為可見光彩色視頻分析頁面. 輸入“shotNo”后點擊“Analysis”, 后臺JavaScript可以解析指定炮號的XML文件, 通過“pre”, “next”和“Show”按鈕可以查看指定時刻的圖像. 通過設置“speed” 和“Slide”可以按指定的速度播放視頻.
圖 5 視頻分析頁面
隨著每年EAST實驗的進行, 視頻的類型和數(shù)量不斷的增加, 如表2所示, 2014年開始, 實驗視頻數(shù)據(jù)為T量級. 視頻點播服務器的存儲空間有限, 將EAST實驗視頻存放到專門的存儲服務器上, 并對存儲進行定時備份是至關重要的.
表2 flv視頻統(tǒng)計
3.1 實時性
實時視頻點播系統(tǒng)耗費的通訊方式為socket通訊, 視頻采集完后立即發(fā)送消息給視頻點播服務器, 然后采用雙線程模式分別處理炮號信息和合成視頻, 速度快沒有延遲. 原系統(tǒng)通過不斷遍歷共享目錄查找最新文件判斷是否有新的炮號文件生成, 若有新炮號則開始拷貝視頻文件并分幀視頻, 單進程實現(xiàn), 耗費系統(tǒng)時間和資源. 表3為模擬65154~65158到來時, 原系統(tǒng)與新系統(tǒng)耗費的時間對比, 從表3可以得知實時視頻點播系統(tǒng)轉換不同長度的視頻所耗費的時間均優(yōu)于原系統(tǒng).
表3 新系統(tǒng)與原系統(tǒng)時間對比
3.2 容錯性
原系統(tǒng)通過命令行的方式顯示程序運行狀態(tài)步驟, 不便于翻閱, 且不保存歷史記錄. 實時系統(tǒng)在程序運行中通過可視化方式記錄每個新炮號到達時視頻合成的過程, 如圖3右側所示, 當關閉應用程序后, 歷史記錄將保存為歷史文件, 便于檢查是否有炮號遺漏、是否出錯以及錯誤原因.
當共享目錄斷開連接后, 原系統(tǒng)進程無法檢測是否有新文件生成, 程序出錯并停止運行. 實時系統(tǒng)程序出現(xiàn)轉移炮號文件失敗的提示, 并繼續(xù)接收炮號信息, 共享目錄恢復后程序仍然正常運行.
當新炮號視頻文件在實時轉換中失敗時, 原系統(tǒng)程序需要通過將共享目錄中尚未轉換的視頻文件移出共享目錄再移入的方式, 模擬炮號文件的生成, 進而實現(xiàn)轉換. 實時系統(tǒng)只需要給視頻轉換程序模擬發(fā)送如“65158,NCCDGL,zip,65160#”炮號信息, 程序自動轉換炮號文件65158~65160, 如圖3所示.
3.3 擴展性
原系統(tǒng)將視頻分為彩色和黑白兩類, 實時視頻點播網(wǎng)站中對視頻進行了進一步分類, 增加了多個相機的目錄, 并描述了不同相機拍攝的范圍, 便于新用戶使用. 不同的相機視頻顯示分辨率不同, 實時系統(tǒng)將原系統(tǒng)固定分辨率改為自適應分辨率, 方便在不改變程序的情況下增加新的相機視頻.
3.4 可靠性
原系統(tǒng)所有的視頻及幀序列文件均存儲在視頻點播服務器上且沒有備份. 視頻點播服務器硬盤總容量有限, 隨著視頻種類和數(shù)量的增加及其他的應用對空間的占用, 剩余的空間逐漸減小. 若系統(tǒng)硬盤出現(xiàn)故障, EAST實驗視頻數(shù)據(jù)將不可恢復. 新系統(tǒng)將所有的視頻文件放在專門的存儲上, 并定期進行冗余備份, 即減輕視頻點播服務器的負擔, 又保證了數(shù)據(jù)的可恢復性.
本文主要介紹了基于Web的EAST實時視頻點播系統(tǒng)的設計與實現(xiàn)過程. 該系統(tǒng)具有視頻合成速度快、畫面清晰、交互性好等特點, EAST實驗人員可以在實驗過程中實時直觀的查看等離子體放電視頻和逐幀分析視頻. 與原視頻點播系統(tǒng)的對比, 實時視頻點播系統(tǒng)在實時性、容錯性、擴展性和可靠性四個方面都體現(xiàn)了一定的優(yōu)化和改進. 目前本系統(tǒng)已經(jīng)在新一輪的實驗中投入使用, 基本滿足實驗人員的需求. 下一步將增強視頻點播網(wǎng)站搜索的功能, 能夠按實驗的年份、視頻類別等條件搜索; 增加不同類別視頻同步顯示的功能, 便于實驗人員同時查看不同方位的等離子體放電視頻.
1 黨寧寧,肖炳甲.虛擬EAST系統(tǒng)的設計與實現(xiàn).計算機應用,2010,30(增1):245–247.
2 劉連忠,肖炳甲,陳利軍,舒雙寶.EAST視頻點播系統(tǒng)的設計與實現(xiàn).微計算機信息,2009,25(12-3):9–11.
3 陳利軍,肖炳甲,劉連忠.EAST實驗視頻采集系統(tǒng)的設計與實現(xiàn).微計算機信息,2009,25(21):265–267.
4 Yang ZD, et al. Study of heat load on EAST divertor plates by an infrared camera. Journal of Fusion Energy, 2015, 34(4): 704–710.
5 王曉瓊,舒雙寶,甘開福,龔先祖.EAST紅外CCD診斷系統(tǒng)的圖像采集與處理.計算機技術與發(fā)展,2015,25(8):180– 183.
6 Yang JH, et al. Development of high-speed and wide-angle visible observation diagnostics on experimental advanced superconducting Tokamak using catadioptric optics. Review of Scientific Instruments, 2013, 84(8).
7 https://ffmpeg.org/.
EAST Real-Time VOD System Based on Web
XIA Jin-Yao1,2, XIAO Bing-Jia1,2, LI Dan1, WANG Kai-Rong1,2, LUO Wen-Li3
1(Institute of Plasma Physics, Chinese Academy of Sciences, Hefei 230031, China)2(University of Science and Technology of China, Hefei 230031, China)3(709th Research Institute, China Shipbuilding Industry Corporation, Wuhan 430047, China)
EAST (Experimental Advanced Superconducting Tokamak) real-time VOD (Video on Demand) system based on Web can display the plasma discharge videos, search videos, download videos and analyze videos frame by frame, which is improved and optimized based on the old VOD system. The system mainly includes two parts: the application of video synthesis and the VOD web station. The video synthesis application accepts shot information by using socket TCP communication firstly, then moves video frames through sharing directory, finally synthetizes videos with the tool of ffmpeg. The VOD system is implemented through B/S (Browser/Server) framework. It uses JSP to realize VOD function by reading shot information from database, and analyzes videos frame by frame by combining XML and JavaScript. The system has been already used in the EAST experiment, which is of great benefit to EAST experimenter.
real-time; VOD; ffmpeg; XML; JavaScript
國家磁約束核聚變能發(fā)展研究專項(2014GB103000)
2016-07-01;
2016-08-08
[10.15888/j.cnki.csa.005666]