開源視頻碼串流分析軟體:VideoEye

來源:互聯網
上載者:User

標籤:視頻   碼串流分析   開源   ffmpeg   解碼   

 本文介紹一個自己做的碼串流分析軟體:VideoEye。為什麼要起這個名字呢?感覺這個軟體的主要功能就是對“視頻”進行“分析”。而分析是要用眼睛來看的,因此取了“視頻”和“分析”這兩個詞的英文,名之曰:VideoEye。這個軟體是在自己畢業設計軟體的基礎上改的。可以對本地檔案或者互連網視頻流進行即時的碼串流分析。由於這個軟體是自己一邊學習視音頻技術一邊製作的,所以涵蓋了比較全面的功能。在編寫這個軟體的過程中,自己也學會了很多的視音頻編解碼方面的知識,以及MFC的知識。後來想想,與其自己儲存在電腦裡,不如開源出來與大家分享,也許能協助正在學習視音頻技術的人學習這方面的知識。軟體原始碼中有大量的注釋,都是自己邊學邊記的筆記,十分方便理解和學習有關的知識。

開發環境為VC2010,軟體介面使用以下類庫:

介面:MFC

視音頻編解碼類庫:FFMPEG

視頻非壓縮域資料分析:OpenCV

播放清單解析/匯出:TinyXML

視音頻播放:SDL

目前還在完善過程中,估計還要不少的修改。


項目首頁:

https://sourceforge.net/projects/videoeye

CSDN原始碼下載(0.1測試版)

http://download.csdn.net/detail/leixiaohua1020/7552669

CSDN編譯好的可執行程式下載(目前只在本機上測過)

http://download.csdn.net/detail/leixiaohua1020/7552687

下面將自己總結的軟體的文檔貼出來。


1簡述VideoEye是一個開源的視頻分析的軟體。本軟體可以播放和分析視頻資料。它支援多種視頻流輸入方式:HTTP,RTMP,RTSP以及檔案等等。該軟體可以即時分析視頻流並能以圖形化的方式呈現其分析結果。目前該軟體還處於完善階段。
1.1視頻播放視頻播放是本軟體最基本的功能。
1.2壓縮域碼串流分析壓縮域碼串流分析主要用於分析視頻和音頻壓縮碼流的參數。
1.3非壓縮域資料分析非壓縮域資料分析主要用於分析視頻解碼後的像素資料。
2主介面本章簡單介紹系統主介面的操作和使用。

軟體運行後歡迎畫面:


 圖2-1.歡迎畫面

進入主介面以後,如所示。


 圖2-2.主介面
如果想讓系統開始啟動並執行話,首先需要選擇一個視頻(音頻)檔案。將視頻所在的URL粘貼到“輸入路徑”裡面即可。
注1:還可以通過以下幾種方式添加輸入路徑
1.單擊“檔案”,開啟檔案對話方塊,選擇一個視頻檔案
2.拖拽一個視頻檔案到主介面
3.單擊“收藏夾”,開啟收藏夾列表,選擇一個視頻的URL
注2:本系統不但支援本地檔案的分析,也支援網路流的分析。


在這裡我們選擇一個視頻檔案,URL是“F:\movie\cuc_ieschool.flv”。

單擊位於主介面左下角的“播放”大按鈕(一個圓圈裡面有一個三角形),即可讓系統開始運行。系統運行後的如所示。


 

圖2-3.主介面(播放中)


由圖可見,在“輸入參數”部分,系統解析出了輸入協議類型為file,封裝格式為FLV。位元速率是394.94kbps,時間長度是34s。 “視頻”部分,系統解析出了輸出像素格式為YUV420P,視頻編碼方式為H.264,幀率為15fps,畫面大小為512x288。“音頻”部分,系統解析出了採樣率為44100Hz,音頻編碼方式為MP3,聲道數為2。
單擊主介面下方的“播放控制”面板上的按鈕,可以控制視頻的播放。具體的功能包含快退,暫停,快進,停止,逐幀播放,全屏播放。拖動視頻播放的進度條,則可以控制視頻播放的進度(對於直播訊號,是不能調整播放進度的)。

系統開始運行之後,會彈出視頻播放視窗。該視窗類別似於視頻播放器,可以顯示解碼後的視頻資料,並播放音頻資料。


 圖2-4.播放視窗3播放本章主要介紹和視頻播放相關的功能。播放是本系統最基本的功能。系統其它功能都是建立在播放的基礎之上的。
3.1視頻URL如果想讓系統開始播放的話,首先需要選擇一個視頻(音頻)檔案。將視頻所在的URL粘貼到“輸入路徑”裡面即可。
注1:還可以通過以下幾種方式添加輸入路徑
1.單擊“檔案”,開啟檔案對話方塊,選擇一個視頻檔案
2.拖拽一個視頻檔案到主介面
3.單擊“收藏夾”,開啟收藏夾列表,選擇一個視頻的URL
4.單擊“位址解析”,可以使用網路上現有的位址解析引擎,解析得到像優酷,馬鈴薯,樂視這些網站上視頻的URL。
注2:本系統不但支援本地檔案的分析,也支援網路流的分析。
3.2收藏夾

收藏夾功能目前還處於調整中。支援匯入m3u格式的播放清單,以及xml格式的播放清單。雙擊收藏夾中的條目,可以將該條目對應的地址傳給主介面的“輸入路徑”。


 圖3-1.播放清單對話方塊
3.3播放控制在“輸入路徑”裡添加視頻的URL之後,單擊系統左下角的“播放”大按鈕(一個圓圈裡面有一個三角形),就可以開始播放了。
在“播放”按鈕的旁邊,排列著其它控制播放的按鈕。依次是:“後退”,“暫停”,“前進”,“停止”,“逐幀播放”,“全屏”。通過這些按鈕,基本上可以完成對播放的各種控制。此外,在這些按鈕的上方,還有一個播放的進度條。可以通過拖拽進度條的方式,調整視頻播放的進度。

在系統的右下角,有一個按鈕:“關於”。


 圖3-2.播放控制按鈕3.4播放設定選擇菜單的“播放”->“播放器喜好設定”。開啟播放設定對話方塊。

註:此處的設定只有在下一次視頻播放開始後才會生效。 


 圖3-3.播放器喜好設定對話方塊
3.5播放畫面選擇菜單的“視頻”->“大小”。可以調整視頻播放視窗的大小。
選擇菜單的“視頻”->“縱橫比”。可以調整視頻播放視窗的縱橫比。
選擇菜單的“視頻畫面”,可以調整視頻播放視窗顯示的內容,有以下3種:
*視頻畫面
*音訊波形圖
*音頻離散傅裡葉變換圖
3.6資料輸出選擇菜單的“資料”。可以輸出視頻播放過程中的中間資料。該選項卡可以用於輸出視音頻碼流資料,視頻解碼後的像素資料,或者音頻解碼後的採樣資料。資料輸出選項卡如所示。

註:特殊容器(mp4,mkv等)封裝的H.264直接輸出的話,會缺少SPS和PPS,因而導致碼流無法被識別。為此專門添加了特殊容器輸出H.264的選項。

 

 圖3-4.資料輸出對話方塊
4視頻分析本章主要介紹和視頻分析相關的功能。
4.1視頻解碼分析在視頻播放的過程中,單擊主介面視頻部分編碼參數部分的按鈕“視頻解碼分析”,開啟視頻解碼分析對話方塊,4-1所示。
對話方塊中包含了一個幀列表。每個幀對應列表中的一條記錄。不同類型的幀有著不同的背景色。列表顯示了以下資訊:
*幀數
*框架類型
*主要畫面格
*碼流順序
*PTS
 圖4-1.視頻解碼分析對話方塊
4.2視訊框架解碼分析在視頻播放的過程中,單擊主介面視頻部分編碼參數部分的按鈕“單幀詳細分析”,開啟視訊框架解碼分析對話方塊,4-2所示。
該部分主要用於對當前播放的視訊框架進行詳細的分析。可以列表顯示視頻一幀的詳細參數,包括:
*幀數
*框架類型
*PTS
*顯示時間
*參考幀數量
並可以對視頻進行宏塊級的分析,包含以下幾種參數的分析:
*量化參數分析
*宏塊類型分析
*運動向量list[0]分析
*運動向量list[1]分析
*參考幀list[0]分析
*參考幀list[1]分析

對話方塊上方的下拉框用於設定希望分析的內容。對話方塊左邊的“選項”部分可以設定分析結果的屬性。具體包含以下幾項:

表4-1.視訊框架詳細分析選項

通用選項

顯示宏塊邊界

顯示視訊框架中宏塊的邊界。

字型

設定分析結果中文字的字型。

量化分析

顯示QP值

顯示宏塊的QP值。

顯示背景顏色

根據QP值的不同,不同宏塊顯示不同灰階的背景顏色。

宏塊類型分析

顯示子宏塊

顯示子宏塊的劃分方式。

顯示背景顏色

根據劃分方式的不同,不同宏塊顯示不同的背景顏色。

顯示跳過宏塊

在跳過宏塊的上方標記以“s”。

顯示參考列表

在使用參考幀的宏塊上標記List0和List1。

運動向量[0]分析

顏色

顯示的運動向量[0]顏色。

樣式

運動向量[0]外觀。

運動向量[1]分析

顏色

顯示的運動向量[1]顏色。

樣式

運動向量[1]外觀。




對話方塊中間的“宏塊類型”部分包含了各種類型的宏塊的數量的統計資訊。例如幀內4x4,幀內16x16,16x16,16x8,8x16,8x8等類型的宏塊的個數。以及每行宏塊數,宏塊行數,總計宏塊數,每個宏塊包含的運動向量個數等資訊。
對話方塊右邊上方的“幀參數”部分包含了該視訊框架的一些其他資訊。例如幀數,框架類型,大小,PTS,顯示時間,參考幀數量等資訊。
對話方塊右邊下方的“量化”部分包含了QP的統計資訊。包括QP的最大值,最小值以及平均值。

此外,如果勾選了“隨播放自動分析”選項,可以隨著系統對視頻的解碼播放,即時的分析視頻的碼流參數。


 圖4-2.視訊框架解碼分析對話方塊

量化參數分析結果。視訊框架被劃分成以宏塊為單位的網格狀。圖中每個小方塊代表視頻碼流中的一個宏塊。其中的數字代表了該宏塊的量化參數。為了使分析結果更加直觀,每個宏塊被標記以不同灰階的背景色,4-3(a)所示。量化係數越大,相應的背景色的灰階越淺。此外,也可以以視訊框架的內容為背景顯示分析結果,4-3(b)所示。也可以去掉量化係數的顯示,4-3(c)所示。


 (a)背景為灰階圖,前景為量化參數 (b)背景為幀內容,前景為量化參數 (c)背景為灰階,前景不包含數字圖4-3.量化參數分析結果
宏塊類型分析的結果4-4所示。視訊框架同樣被劃分成以宏塊為單位的網格狀。根據子宏塊劃分方式的不同(16x16,16x8,8x16,8x8,4x4),這些宏塊被劃分成了不同樣式。不同的宏塊可以被標記以不同的背景顏色,4-4(a)所示。此外,如果該宏塊屬於跳過宏塊,還可以在宏塊上面標記以“s”字樣。此外,也可以以視訊框架的內容為背景顯示分析結果,4-4(b)所示。
 (a)背景為純色圖,前景為宏塊類型 (b)背景為幀內容,前景為宏塊劃分方式圖4-4.宏塊類型分析結果
運動向量分析的結果4-5所示。運動向量分為List0和List1兩種。由圖可見,運動較劇烈的地方,包含了較多的長度較長的運動向量。畫面相對靜止的地方,運動向量的長度相對比較短甚至取值為0。
 (a)List0 (b)List1圖4-5. 運動向量分析結果
參考幀的分析結果4-6所示。參考幀分為List0和List1兩種。由圖可見,不同的宏塊參考了不同的視訊框架作為其參考幀。
 (a)List0 (b)List1圖4-6. 參考幀分析結果4.3視頻非壓縮域分析在視頻播放的過程中,單擊主介面視頻參數部分的按鈕“未經處理資料分析”,開啟未經處理資料分析對話方塊,4-7所示。由圖可見,可以從“分析方法”裡面選擇想要分析的內容,包含了顏色長條圖,Canny邊緣檢測,輪廓檢測,離散傅裡葉變換,Face Service。此外,還可以查看視頻的R,G,B分量以及Y,U,V分量。如果勾選了“隨著播放自動分析” 選項的話,可以隨著系統對視頻的解碼播放,即時的分析視頻的未經處理資料。
 圖4-7.非壓縮域分析顏色長條圖的分析結果4-8所示。由圖可見,顏色長條圖列出了不同色彩在整幅視訊框架中所佔的比例。對於該視訊框架來說,紅色和黃色分量取值較大,代表該種色彩所佔比重較大。
 圖4-8.顏色長條圖
邊緣檢測的分析結果4-9所示。通過該分析功能可以獲得視訊框架的邊緣資訊。
 圖4-9.邊緣檢測
輪廓檢測的結果4-10所示。通過該分析功能可以獲得視訊框架的輪廓資訊。
 圖4-10.輪廓檢測
離散傅裡葉變換的分析結果4-11所示。左邊的映像為相位譜,中間的映像為亮度圖,右邊的映像為幅度譜。
 圖4-11.離散傅裡葉變換
Face Service的分析結果4-12所示。通過該功能可以分析出視訊框架中的人臉資訊。
 圖4-12.Face Service
R,G,B分量的分析結果4-13所示。由圖可以查看R,G,B三個分量的取值情況。
 圖4-13. R(左上),G(右上),B(下)分量
Y,U,V分量的分析結果4-14所示。由於Y:U:V取樣格式是4:2:0的,所以U,V分量的解析度是Y分量的一半。
 圖4-14. Y(左上),U(右上),V(下)分量
5音頻分析本章主要介紹和音頻分析相關的功能。
5.1音頻解碼分析在視頻播放的過程中,單擊主介面音頻編碼參數部分的按鈕“音頻解碼分析”,開啟音頻解碼分析對話方塊,5-1所示。
對話方塊左邊是解碼狀態表,表中顯示了音頻碼流的情況。每個音訊框架對應一個柱狀圖。橫座標組應音訊框架序號,縱座標組應音訊框架大小。
對話方塊右邊對應的是幀列表。列表顯示了以下資訊:
*幀數
*幀大小
*PTS
*DTS


 圖5-1. 音頻解碼分析

6其他功能本章主要介紹系統的一些其它的功能。
6.1多國語言的支援

本軟體目前支援簡體中文和英文兩種介面。英文介面樣本6-1, 圖6-2, 圖6-3, 圖6-4所示。

 圖6-1. 主介面(英文)
 圖6-2. 視頻解碼分析(英文)
 圖6-3.視訊框架解碼分析(英文)
 圖6-4.視頻非壓縮域分析(英文)



6.2專用分析工具專用分析工具還未加入。
6.3協助工具輔助目前支援的協助工具輔助是MediaInfo,用於查看視頻資訊,6-5所示。


 圖6-5.MediaInfo介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.