开源实时视频码流分析软件:VideoEye
本文介紹一個(gè)自己做的碼流分析軟件:VideoEye。為什么要起這個(gè)名字呢?感覺(jué)這個(gè)軟件的主要功能就是對(duì)“視頻”進(jìn)行“分析”。而分析是要用眼睛來(lái)看的,因此取了“視頻”和“分析”這兩個(gè)詞的英文,名之曰:VideoEye。這個(gè)軟件是在自己畢業(yè)設(shè)計(jì)軟件的基礎(chǔ)上改的。可以對(duì)本地文件或者互聯(lián)網(wǎng)視頻流進(jìn)行實(shí)時(shí)的碼流分析。由于這個(gè)軟件是自己一邊學(xué)習(xí)視音頻技術(shù)一邊制作的,所以涵蓋了比較全面的功能。在編寫(xiě)這個(gè)軟件的過(guò)程中,自己也學(xué)會(huì)了很多的視音頻編解碼方面的知識(shí),以及MFC的知識(shí)。后來(lái)想想,與其自己保存在電腦里,不如開(kāi)源出來(lái)與大家分享,也許能幫助正在學(xué)習(xí)視音頻技術(shù)的人學(xué)習(xí)這方面的知識(shí)。軟件源代碼中有大量的注釋,都是自己邊學(xué)邊記的筆記,十分方便理解和學(xué)習(xí)有關(guān)的知識(shí)。
開(kāi)發(fā)環(huán)境為VC2010,軟件界面使用以下類庫(kù):
界面:MFC
視音頻編解碼類庫(kù):FFMPEG
視頻非壓縮域數(shù)據(jù)分析:OpenCV
播放列表解析/導(dǎo)出:TinyXML
視音頻播放:SDL
目前還在完善過(guò)程中,估計(jì)還要不少的修改。
?
項(xiàng)目主頁(yè):
https://sourceforge.net/projects/videoeye
?
0.1測(cè)試版=================================
CSDN源代碼下載
http://download.csdn.net/detail/leixiaohua1020/7552669
CSDN編譯好的可執(zhí)行程序下載(目前只在本機(jī)上測(cè)過(guò))
http://download.csdn.net/detail/leixiaohua1020/7552687
注:暈了,上面2個(gè)上傳至CSDN的文件都缺失了3個(gè)OpenCV的Dll,編譯或者運(yùn)行的時(shí)候會(huì)提示找不到Dll。由于CSDN上傳的資源沒(méi)有提供刪除功能,只能再上傳一個(gè)壓縮包補(bǔ)齊相關(guān)的Dll。下面的Dll和其他Dll放到一起就可以了:
http://download.csdn.net/detail/leixiaohua1020/7555063
?
0.2測(cè)試版(2014.7.12)======================
?
相比于0.1測(cè)試版,做了以下幾個(gè)部分的完善:
* 源代碼添加了對(duì)Unicode的支持
* 添加了兩個(gè)宏定義"INT64_MIN INT64_MAX",在沒(méi)有安裝 Win7SDK的情況下,可能會(huì)出現(xiàn)找不到定義的情況。
* 改變了“收藏夾”的外觀,修改了其展現(xiàn)視頻地址的樹(shù)形結(jié)構(gòu),使其美觀一些。
* “單幀詳細(xì)分析”界面增加了數(shù)據(jù)輸出功能。可以將一幀視頻碼流的量化參數(shù)(Quantization Parameter),宏塊類型(MacroBlock Type),運(yùn)動(dòng)矢量(Motion Vector),參考幀(Reference Frame)列表輸出出來(lái)并存儲(chǔ)為“.csv”格式的文件。
* 修正了“單幀詳細(xì)分析”中運(yùn)動(dòng)矢量分析功能在分析MPEG4視頻碼流時(shí)候的一個(gè)BUG。
* 修正了“視頻播放窗口”調(diào)整窗口大小的時(shí)候,會(huì)殘留視頻幀畫(huà)面的BUG。
?
SourceForge上已經(jīng)更新至0.2版。
?
CSDN源代碼下載
http://download.csdn.net/detail/leixiaohua1020/7624137
CSDN編譯好的可執(zhí)行程序下載
http://download.csdn.net/detail/leixiaohua1020/7624119
注:需要VC2010的運(yùn)行環(huán)境。如果出現(xiàn)找不到msvcp100.dll等文件的話,可以選擇以下之一:
1.安裝Microsoft Visual C++ 2010 Redistributable Package
2.下載壓縮包“VC2010編譯的MFC程序需要的dll”,并且將里面的Dll拷貝到程序的目錄中
?
下面將自己總結(jié)的軟件的文檔貼出來(lái)。
?
1簡(jiǎn)述
VideoEye是一個(gè)開(kāi)源的視頻分析的軟件。本軟件可以播放和分析視頻數(shù)據(jù)。它支持多種視頻流輸入方式:HTTP,RTMP,RTSP以及文件等等。該軟件可以實(shí)時(shí)分析視頻流并能以圖形化的方式呈現(xiàn)其分析結(jié)果。目前該軟件還處于完善階段。
1.1視頻播放
視頻播放是本軟件最基本的功能。
1.2壓縮域碼流分析
壓縮域碼流分析主要用于分析視頻和音頻壓縮碼流的參數(shù)。
1.3非壓縮域數(shù)據(jù)分析
非壓縮域數(shù)據(jù)分析主要用于分析視頻解碼后的像素?cái)?shù)據(jù)。
2主界面
本章簡(jiǎn)單介紹系統(tǒng)主界面的操作和使用。
軟件運(yùn)行后歡迎畫(huà)面如圖所示:
?
圖2-1.歡迎畫(huà)面進(jìn)入主界面以后,如下圖所示。
?
圖2-2.主界面如果想讓系統(tǒng)開(kāi)始運(yùn)行的話,首先需要選擇一個(gè)視頻(音頻)文件。將視頻所在的URL粘貼到“輸入路徑”里面即可。
注1:還可以通過(guò)以下幾種方式添加輸入路徑
1.單擊“文件”,打開(kāi)文件對(duì)話框,選擇一個(gè)視頻文件
2.拖拽一個(gè)視頻文件到主界面
3.單擊“收藏夾”,打開(kāi)收藏夾列表,選擇一個(gè)視頻的URL
注2:本系統(tǒng)不但支持本地文件的分析,也支持網(wǎng)絡(luò)流的分析。
單擊位于主界面左下角的“播放”大按鈕(一個(gè)圓圈里面有一個(gè)三角形),即可讓系統(tǒng)開(kāi)始運(yùn)行。系統(tǒng)運(yùn)行后的截圖如下圖所示。
?
圖2-3.主界面(播放中)
?
由圖可見(jiàn),在“輸入?yún)?shù)”部分,系統(tǒng)解析出了輸入?yún)f(xié)議類型為file,封裝格式為FLV。比特率是394.94kbps,時(shí)長(zhǎng)是34s。 “視頻”部分,系統(tǒng)解析出了輸出像素格式為YUV420P,視頻編碼方式為H.264,幀率為15fps,畫(huà)面大小為512x288。“音頻”部分,系統(tǒng)解析出了采樣率為44100Hz,音頻編碼方式為MP3,聲道數(shù)為2。
單擊主界面下方的“播放控制”面板上的按鈕,可以控制視頻的播放。具體的功能包含快退,暫停,快進(jìn),停止,逐幀播放,全屏播放。拖動(dòng)視頻播放的進(jìn)度條,則可以控制視頻播放的進(jìn)度(對(duì)于直播信號(hào),是不能調(diào)整播放進(jìn)度的)。
系統(tǒng)開(kāi)始運(yùn)行之后,會(huì)彈出視頻播放窗口。該窗口類似于視頻播放器,可以顯示解碼后的視頻數(shù)據(jù),并播放音頻數(shù)據(jù)。
?
圖2-4.播放窗口3播放
本章主要介紹和視頻播放相關(guān)的功能。播放是本系統(tǒng)最基本的功能。系統(tǒng)其它功能都是建立在播放的基礎(chǔ)之上的。
3.1視頻URL
如果想讓系統(tǒng)開(kāi)始播放的話,首先需要選擇一個(gè)視頻(音頻)文件。將視頻所在的URL粘貼到“輸入路徑”里面即可。
注1:還可以通過(guò)以下幾種方式添加輸入路徑
1.單擊“文件”,打開(kāi)文件對(duì)話框,選擇一個(gè)視頻文件
2.拖拽一個(gè)視頻文件到主界面
3.單擊“收藏夾”,打開(kāi)收藏夾列表,選擇一個(gè)視頻的URL
4.單擊“地址解析”,可以使用網(wǎng)絡(luò)上現(xiàn)有的地址解析引擎,解析得到像優(yōu)酷,土豆,樂(lè)視這些網(wǎng)站上視頻的URL。
注2:本系統(tǒng)不但支持本地文件的分析,也支持網(wǎng)絡(luò)流的分析。
3.2收藏夾
收藏夾功能目前還處于調(diào)整中。支持導(dǎo)入m3u格式的播放列表,以及XSPF格式的播放列表。雙擊收藏夾中的條目,可以將該條目對(duì)應(yīng)的地址傳給主界面的“輸入路徑”。
?
圖3-1.播放列表對(duì)話框?
3.3播放控制
在“輸入路徑”里添加視頻的URL之后,單擊系統(tǒng)左下角的“播放”大按鈕(一個(gè)圓圈里面有一個(gè)三角形),就可以開(kāi)始播放了。
在“播放”按鈕的旁邊,排列著其它控制播放的按鈕。依次是:“后退”,“暫停”,“前進(jìn)”,“停止”,“逐幀播放”,“全屏”。通過(guò)這些按鈕,基本上可以完成對(duì)播放的各種控制。此外,在這些按鈕的上方,還有一個(gè)播放的進(jìn)度條。可以通過(guò)拖拽進(jìn)度條的方式,調(diào)整視頻播放的進(jìn)度。
在系統(tǒng)的右下角,有一個(gè)按鈕:“關(guān)于”。
?
圖3-2.播放控制按鈕3.4播放設(shè)置
選擇菜單的“播放”->“播放器首選項(xiàng)”。打開(kāi)播放設(shè)置對(duì)話框如圖所示。
注:此處的設(shè)置只有在下一次視頻播放開(kāi)始后才會(huì)生效。
?
圖3-3.播放器首選項(xiàng)對(duì)話框3.5播放畫(huà)面
選擇菜單的“視頻”->“大小”。可以調(diào)整視頻播放窗口的大小。
選擇菜單的“視頻”->“縱橫比”。可以調(diào)整視頻播放窗口的縱橫比。
選擇菜單的“視頻畫(huà)面”,可以調(diào)整視頻播放窗口顯示的內(nèi)容,有以下3種:
*視頻畫(huà)面
*音頻波形圖
*音頻離散傅里葉變換圖
3.6數(shù)據(jù)輸出
選擇菜單的“數(shù)據(jù)”。可以輸出視頻播放過(guò)程中的中間數(shù)據(jù)。該選項(xiàng)卡可以用于輸出視音頻碼流數(shù)據(jù),視頻解碼后的像素?cái)?shù)據(jù),或者音頻解碼后的采樣數(shù)據(jù)。數(shù)據(jù)輸出選項(xiàng)卡如下圖所示。
注:特殊容器(mp4,mkv等)封裝的H.264直接輸出的話,會(huì)缺少SPS和PPS,因而導(dǎo)致碼流無(wú)法被識(shí)別。為此專門添加了特殊容器輸出H.264的選項(xiàng)。
?
圖3-4.數(shù)據(jù)輸出對(duì)話框4視頻分析
本章主要介紹和視頻分析相關(guān)的功能。
4.1視頻解碼分析
在視頻播放的過(guò)程中,單擊主界面視頻部分編碼參數(shù)部分的按鈕“視頻解碼分析”,打開(kāi)視頻解碼分析對(duì)話框,如圖4-1所示。
對(duì)話框中包含了一個(gè)幀列表。每個(gè)幀對(duì)應(yīng)列表中的一條記錄。不同類型的幀有著不同的背景色。列表顯示了以下信息:
*幀數(shù)
*幀類型
*關(guān)鍵幀
*碼流順序
*PTS
4.2視頻幀解碼分析
在視頻播放的過(guò)程中,單擊主界面視頻部分編碼參數(shù)部分的按鈕“單幀詳細(xì)分析”,打開(kāi)視頻幀解碼分析對(duì)話框,如圖4-2所示。
該部分主要用于對(duì)當(dāng)前播放的視頻幀進(jìn)行詳細(xì)的分析。可以列表顯示視頻一幀的詳細(xì)參數(shù),包括:
*幀數(shù)
*幀類型
*PTS
*顯示時(shí)間
*參考幀數(shù)量
并可以對(duì)視頻進(jìn)行宏塊級(jí)的分析,包含以下幾種參數(shù)的分析:
*量化參數(shù)分析
*宏塊類型分析
*運(yùn)動(dòng)矢量list[0]分析
*運(yùn)動(dòng)矢量list[1]分析
*參考幀list[0]分析
*參考幀list[1]分析
對(duì)話框上方的下拉框用于設(shè)置希望分析的內(nèi)容。對(duì)話框左邊的“選項(xiàng)”部分可以設(shè)置分析結(jié)果的屬性。具體包含以下幾項(xiàng):
表4-1.視頻幀詳細(xì)分析選項(xiàng)| 通用選項(xiàng) | |
| 顯示宏塊邊界 | 顯示視頻幀中宏塊的邊界。 |
| 字體 | 設(shè)置分析結(jié)果中文字的字體。 |
| 量化分析 | |
| 顯示QP值 | 顯示宏塊的QP值。 |
| 顯示背景顏色 | 根據(jù)QP值的不同,不同宏塊顯示不同灰度的背景顏色。 |
| 宏塊類型分析 | |
| 顯示子宏塊 | 顯示子宏塊的劃分方式。 |
| 顯示背景顏色 | 根據(jù)劃分方式的不同,不同宏塊顯示不同的背景顏色。 |
| 顯示跳過(guò)宏塊 | 在跳過(guò)宏塊的上方標(biāo)記以“s”。 |
| 顯示參考列表 | 在使用參考幀的宏塊上標(biāo)記List0和List1。 |
| 運(yùn)動(dòng)矢量[0]分析 | |
| 顏色 | 顯示的運(yùn)動(dòng)矢量[0]顏色。 |
| 樣式 | 運(yùn)動(dòng)矢量[0]外觀。 |
| 運(yùn)動(dòng)矢量[1]分析 | |
| 顏色 | 顯示的運(yùn)動(dòng)矢量[1]顏色。 |
| 樣式 | 運(yùn)動(dòng)矢量[1]外觀。 |
對(duì)話框中間的“宏塊類型”部分包含了各種類型的宏塊的數(shù)量的統(tǒng)計(jì)信息。例如幀內(nèi)4x4,幀內(nèi)16x16,16x16,16x8,8x16,8x8等類型的宏塊的個(gè)數(shù)。以及每行宏塊數(shù),宏塊行數(shù),總計(jì)宏塊數(shù),每個(gè)宏塊包含的運(yùn)動(dòng)矢量個(gè)數(shù)等信息。
對(duì)話框右邊上方的“幀參數(shù)”部分包含了該視頻幀的一些其他信息。例如幀數(shù),幀類型,大小,PTS,顯示時(shí)間,參考幀數(shù)量等信息。
對(duì)話框右邊下方的“量化”部分包含了QP的統(tǒng)計(jì)信息。包括QP的最大值,最小值以及平均值。
此外,如果勾選了“隨播放自動(dòng)分析”選項(xiàng),可以隨著系統(tǒng)對(duì)視頻的解碼播放,實(shí)時(shí)的分析視頻的碼流參數(shù)。
?
圖4-2.視頻幀解碼分析對(duì)話框量化參數(shù)分析結(jié)果如圖所示。視頻幀被劃分成以宏塊為單位的網(wǎng)格狀。圖中每個(gè)小方塊代表視頻碼流中的一個(gè)宏塊。其中的數(shù)字代表了該宏塊的量化參數(shù)。為了使分析結(jié)果更加直觀,每個(gè)宏塊被標(biāo)記以不同灰度的背景色,如圖4-3(a)所示。量化系數(shù)越大,相應(yīng)的背景色的灰度越淺。此外,也可以以視頻幀的內(nèi)容為背景顯示分析結(jié)果,如圖4-3(b)所示。也可以去掉量化系數(shù)的顯示,如圖4-3(c)所示。
?
(a)背景為灰度圖,前景為量化參數(shù) (b)背景為幀內(nèi)容,前景為量化參數(shù) (c)背景為灰度,前景不包含數(shù)字 圖4-3.量化參數(shù)分析結(jié)果宏塊類型分析的結(jié)果如圖4-4所示。視頻幀同樣被劃分成以宏塊為單位的網(wǎng)格狀。根據(jù)子宏塊劃分方式的不同(16x16,16x8,8x16,8x8,4x4),這些宏塊被劃分成了不同樣式。不同的宏塊可以被標(biāo)記以不同的背景顏色,如圖4-4(a)所示。此外,如果該宏塊屬于跳過(guò)宏塊,還可以在宏塊上面標(biāo)記以“s”字樣。此外,也可以以視頻幀的內(nèi)容為背景顯示分析結(jié)果,如圖4-4(b)所示。
(a)背景為純色圖,前景為宏塊類型 (b)背景為幀內(nèi)容,前景為宏塊劃分方式 圖4-4.宏塊類型分析結(jié)果運(yùn)動(dòng)矢量分析的結(jié)果如圖4-5所示。運(yùn)動(dòng)矢量分為L(zhǎng)ist0和List1兩種。由圖可見(jiàn),運(yùn)動(dòng)較劇烈的地方,包含了較多的長(zhǎng)度較長(zhǎng)的運(yùn)動(dòng)矢量。畫(huà)面相對(duì)靜止的地方,運(yùn)動(dòng)矢量的長(zhǎng)度相對(duì)比較短甚至取值為0。
(a)List0 (b)List1 圖4-5. 運(yùn)動(dòng)矢量分析結(jié)果參考幀的分析結(jié)果如圖4-6所示。參考幀分為L(zhǎng)ist0和List1兩種。由圖可見(jiàn),不同的宏塊參考了不同的視頻幀作為其參考幀。
(a)List0 (b)List1 圖4-6. 參考幀分析結(jié)果4.3視頻非壓縮域分析
在視頻播放的過(guò)程中,單擊主界面視頻參數(shù)部分的按鈕“非壓縮域數(shù)據(jù)分析”,打開(kāi)非壓縮域數(shù)據(jù)分析對(duì)話框,如圖4-7所示。由圖可見(jiàn),可以從“分析方法”里面選擇想要分析的內(nèi)容,包含了顏色直方圖,Canny邊緣檢測(cè),輪廓檢測(cè),離散傅里葉變換,人臉識(shí)別。此外,還可以查看視頻的R,G,B分量以及Y,U,V分量。如果勾選了“隨著播放自動(dòng)分析” 選項(xiàng)的話,可以隨著系統(tǒng)對(duì)視頻的解碼播放,實(shí)時(shí)的分析視頻的非壓縮域數(shù)據(jù)。
圖4-7.非壓縮域分析顏色直方圖的分析結(jié)果如圖4-8所示。由圖可見(jiàn),顏色直方圖列出了不同色彩在整幅視頻幀中所占的比例。對(duì)于該視頻幀來(lái)說(shuō),紅色和黃色分量取值較大,代表該種色彩所占比重較大。
圖4-8.顏色直方圖邊緣檢測(cè)的分析結(jié)果如圖4-9所示。通過(guò)該分析功能可以獲得視頻幀的邊緣信息。
圖4-9.邊緣檢測(cè)輪廓檢測(cè)的結(jié)果如圖4-10所示。通過(guò)該分析功能可以獲得視頻幀的輪廓信息。
圖4-10.輪廓檢測(cè)離散傅里葉變換的分析結(jié)果如圖4-11所示。左邊的圖像為相位譜,中間的圖像為亮度圖,右邊的圖像為幅度譜。
圖4-11.離散傅里葉變換人臉識(shí)別的分析結(jié)果如圖4-12所示。通過(guò)該功能可以分析出視頻幀中的人臉信息。
圖4-12.人臉識(shí)別R,G,B分量的分析結(jié)果如圖4-13所示。由圖可以查看R,G,B三個(gè)分量的取值情況。
圖4-13. R(左上),G(右上),B(下)分量Y,U,V分量的分析結(jié)果如圖4-14所示。由于Y:U:V取樣格式是4:2:0的,所以U,V分量的分辨率是Y分量的一半。
圖4-14. Y(左上),U(右上),V(下)分量5音頻分析
本章主要介紹和音頻分析相關(guān)的功能。
5.1音頻解碼分析
在視頻播放的過(guò)程中,單擊主界面音頻編碼參數(shù)部分的按鈕“音頻解碼分析”,打開(kāi)音頻解碼分析對(duì)話框,如圖5-1所示。
對(duì)話框左邊是解碼狀態(tài)表,表中顯示了音頻碼流的情況。每個(gè)音頻幀對(duì)應(yīng)一個(gè)柱狀圖。橫坐標(biāo)對(duì)應(yīng)音頻幀序號(hào),縱坐標(biāo)對(duì)應(yīng)音頻幀大小。
對(duì)話框右邊對(duì)應(yīng)的是幀列表。列表顯示了以下信息:
*幀數(shù)
*幀大小
*PTS
*DTS
6其他功能
本章主要介紹系統(tǒng)的一些其它的功能。
6.1多國(guó)語(yǔ)言的支持
本軟件目前支持簡(jiǎn)體中文和英文兩種界面。英文界面示例如圖6-1, 圖6-2, 圖6-3, 圖6-4所示。
圖6-1. 主界面(英文) 圖6-2. 視頻解碼分析(英文) 圖6-3.視頻幀解碼分析(英文) 圖6-4.視頻非壓縮域分析(英文)6.2專用分析工具
專用分析工具還未加入。
6.3輔助工具
目前支持的輔助工具是MediaInfo,用于查看視頻信息,如圖6-5所示。
?
總結(jié)
以上是生活随笔為你收集整理的开源实时视频码流分析软件:VideoEye的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dvwa如何打开_DVWA详细 安装
- 下一篇: 日亚海淘DHL自助清关流程攻略