音视频和图像相关知识点总结
【摘要】
本文主要匯總音視頻和圖像相關領域的基本概念,不斷完善中.
【音視頻調試工具】
1?碼流分析工具StreamEye :?Elecard StreamEye (StreamEye) tools
2 yuv分析工具YUV viewer : 商用的碼流分析工具/ YUV viewer
3 音頻分析工具coolpro2
4 VLC 拉流;
[開源]
ffmpeg開源地址:?http://ffmpeg.org/
sdl開源地址:https://libsdl.org/
用ffmpeg把H264數據流解碼成YUV420P
mjpg-stream的移植
https://github.com/jacksonliam/mjpg-streamer
窗口播放:
1 如果是獨立打開的窗口,可以用下面的方式創建窗體
?? ?SDL_Window *screen = SDL_CreateWindow("Simplest FFmpeg Read Camera",
?? ??? ?SDL_WINDOWPOS_UNDEFINED,
?? ??? ?SDL_WINDOWPOS_UNDEFINED,
?? ??? ?screen_w, screen_h,
?? ??? ?SDL_WINDOW_OPENGL);
2 ?CWnd *pwnd=GetOwner();
? ? handle=(void *)pwnd->GetSafeHwnd();
? ? screen = SDL_CreateWindowFrom(handle);
?
SDL綁定播放窗口 及 視頻窗口縮放? ?參考class CWnd;類的實現,如GetWindowRect();
MFC中如何利用ffmpeg和SDL2.0多線程多窗口播放攝像頭的視頻
FFmpeg再學習 -- FFmpeg+SDL+MFC實現圖形界面視頻播放器
RTSP再學習 -- 利用FFmpeg 將 rtsp 獲取H264裸流并保存到文件中
SDL播放YUV : ?FFmpeg再學習 -- SDL 環境搭建和視頻顯示
基于<最簡單的基于FFMPEG+SDL的視頻播放器 ver2 (采用SDL2.0)>的一些個人總結
ffmpeg最簡單的解碼保存YUV數據
FFmpeg視頻文件解碼為YUV數據
FFmpeg新舊接口對照使用筆記
【ffmpeg】FFMPEG 命令行常用方法示例
ffplay使用詳解
ffmpeg中的sws_scale算法性能測試
ffmpeg解碼yuv過程:
1 FFmpeg使用流程
2 ffmpeg 新版解碼過程:FFmpeg入門系列教程(三)
?
ffmpeg解碼碼流命令:
ffmpeg -i 720P.264 -s 1280x720 -pix_fmt yuv422p 720P-out.yuv ?
簡化版:ffmpeg -i 720P.264 720P-out.yuv
ffmpeg yuv轉avi:
ffmpeg -s wxh -pix_fmt yuv420p -i input.yuv -vcodec mpeg4 output.avi ?
ffmpeg -s wxh -pix_fmt yuv420p -i input.yuv -vcodec h264 output.avi ?
---------------------?
ffmpeg版本修改:
1 avcodec_init() 修改為 avformat_open_input()
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
}
?
【sensor】
imx274:sony;
ov:omnivision美商半導體,中文名豪威科技
[分辨率]
720P、1080P、4K是什么意思?
480x320, 640x480 標清
1024x720p 高清 ?720p格式,分辨率為1280×720p/60Hz,行頻為45kHz。
1920x1080i (隔行掃描) 也屬于高清
1920x1080p(1080p) 全高清
3840x2160(4k),7680x4320(8k)超(高)清
4K分辨率是1080p的4倍 3840×2160 = 1920×2×1080×2
8K分辨率是4K的4倍 7680×4320 = 3840×2×2160×2
一、監控錄像機主要錄像格式及相應分辨率
目前DVR硬盤錄像機的主要錄像格式為CIF、D1;NVR硬盤錄像機的主要錄像格式為720P、960P、1080P
CIF即前幾年用的最多的一種格式,現在市場也占有很大份額,分辨率為352*288
D1即我們通常所說的標清40萬像素,分辨率為704*576
720P即通常我們所說的高清100萬像素,分辨率為1280*720
960P即通常我們所說的高清130萬像素,分辨率為1280*960
1080P即通常我們所說的高清200萬像素,分辨率為1920*1080?
二、主要錄像格式的碼流大小設置及所占硬盤空間大小
| 錄像格式 | CIF | D1 | 720P/960P | 1080P |
| 分辨率 | 352*288 ? | 704*576 ? | 1280*720/1280*960 ? | 1920*1080 ? |
| 碼流 | 512Kbps? | 2048Kbps | 3072Kbps ? | 4096Kbps ? |
| 每路每小時所需硬盤容量 | 225MB | 900MB | 1350MB | 1800MB |
| 每路每天所需硬盤容量 | 5.3G | 21G | 32G | 42G |
1、計算的時候有幾路圖像乘以幾就可以了。2、此估算并不包括:后期如果接IPSAN的硬盤熱備和RAID等的硬盤容量估算
?
【視頻編碼】
?
1?圖解y420
? NV21/NV12/YV12/YUV420P的區別
? 圖文詳解YUV420數據格式
? 視頻存儲格式YUV420 NV12 NV21 i420 YV12
? ? ?yuv420一個像素大小為:12=12bit
2 舉例:
編碼模式:H.264
分辨率:2560*1440
幀率:25 ; 1秒內25幀
碼流控制:固定碼流
碼流:4096kbit/s--將1s內 視頻yuv數據(本例中:25幀*分辨率2560*1440個像素大小)壓縮到4096kbit
I幀間隔:25幀--每隔25個p幀發一個i幀
svc:1(off)
1s內yuv數據大小:2560*1440*1.5byte*25=分辨率*1個像素大小*幀率=131M
碼流 4096kbit/s表示1s內將yuv數據131Mbyte壓縮到4Mbit
如何計算視頻碼率
幀率控制:控制輸出幀率。
例子:輸入幀率:25f/s ; 控制輸出幀率為:12f/s
輸入第1幀:1*12+12<25 ;丟棄
輸入第2幀:2*12+12>25;?保留
輸入第3幀:3*12+12<25*2;丟棄
輸入第4幀:4*12+12>25*2;?保留
依次類推,輸出幀率控制在12f/s
P/N制式
采用PAL制式的國家或地區多半使用的是50Hz的交流電,采用NTSC制式的國家或地區多半使用的是60Hz的交流電早年間的電視機大多使用的是陰極射線顯像管,里面有個重要部件叫電子槍,它會發射電子束在激發玻璃面板上的熒光粉,所以才會產生亮度圖像(具體原理請百度)這就牽扯到一個發射頻率和場的問題。你說提到的場率其實是每秒鐘掃描的次數,50或者60分表代表隔行50次 / 隔行60次,稱之為50i / 60i ( i 則代表隔行掃描)。電視機的每一幀畫面的顯示需要電子槍由上至下掃描兩次完成,第一次掃描奇數行,第二次掃描偶數行。這個過程需要在一秒鐘之內完成25次,所以其實每一秒電子槍掃描了50次。奇偶數的掃描頻率正好可以匹配交流電流的赫茲數。
看電影是在全黑的電影院里觀看的,而電視是在家庭,通常是開燈的情況下,非常重要的原因是要求電視的頻閃和燈的頻閃要求要一致,否則頻差的閃爍會對孩子的眼睛造成疲勞,所以在技術如此先進的今天,美國和日本這些原N制國家(電網60Hz)的高清制式仍然是60i或30p,中國德國等pal國家(電網50Hz)堅持選用50i或25p,無法做到大一統
作者:cafe
鏈接:https://www.zhihu.com/question/25358945/answer/62338171
?
2 avc編碼(advanced video coding)高級視頻編碼。
AVC 實際上是 H.264 協議的別名。但自從 H.264 協議中增加了 SVC 的部分之后,人們習慣將不包含 SVC 的 H.264 協議那一部分稱為 AVC,而將 SVC 這一部分單獨稱為 SVC。所以提到 AVC 的時候,需要根據具體情況判斷到底是指 H.264 協議還是指協議中不包含 SVC 的那一部分;
SVC是scalable video coding,有的翻譯成分層,有的翻譯成分級。H.264/AVC是JVT制定視頻編碼新標準。
H. 264擴展標準支持多種可分級類型,其中空域可分級、時域可分級和質量可分級是可分級模式的典型代表。
JM86的編解碼是基于AVC,? JSVM的編解碼是基于SVC.
H.264 SVC(H.264可分級編碼)作為H.264標準的一個擴展最初由JVT在2004年開始制定,并于2007年7月獲得ITU批準。H.264 SVC以H.264 AVC視頻編解碼器標準為基礎,利用了AVC編解碼器的各種高效算法工具,在編碼產生的編碼視頻時間上(幀率)、空間上(分辨率)可擴展,并且是在視頻質 量方面可擴展的,可產生不同幀速率、分辨率或質量等級的解碼視頻。
?
H.264 SVC通過在GOP(編碼圖像組)中設置可丟棄的參考幀實現時間上的可分級。0-16視頻幀構成全幀率視頻,除T3標志外的所有視頻幀構成了半幀率視頻,所有 T0標志和T2標志的視頻幀構成了1/3幀率視頻,所有 只是T0標志的視頻幀構成了1/4幀率視頻。
SVC 時間可分級
SVC 空間可分級
H.264 SVC通過在在編碼碼流嵌入具有相關性的多個不同分辨率的子流實現空間上的可分級。上層所有的視頻幀構成了高分辨率視頻,下層所有的視頻幀構成了低分辨率視頻.
為此,具備H.264 SVC編碼的視頻會議系統,在保證高效的視頻壓縮性能的基礎上,視頻廣播端可以通過一次編碼產生具有不同幀率、分辨率的視頻壓縮碼流,以適應不同網絡帶 寬、不同的顯示屏幕和終端解碼能力的應用需求,從而有效地避免了視頻會議系統中MCU上復雜而昂貴的轉碼。
H.264 SVC 與以往傳統視頻協議H.264AVC的區別表:
?
| ? | 傳統視頻協議? (H.264/AVC) | Vidyo視頻協議? (H.264/SVC) |
| 視頻會議可以容忍的網絡丟包率 | < 2 – 3 % | <20% |
| 對網絡的要求 | 專線 | 共享線路 |
| 視頻會議延遲:? 視頻會議效果 | Ø 400毫秒? Ø 非實時交互 | < 200毫秒? 實時交互 |
| HD 會議室型終端的開銷 | 昂貴 | 普及型 ? |
??實際應用中,存在不同的網絡和不同的用戶終端,各種情況下對視頻質量的需求不一樣。例如,在利用網絡傳輸視頻信息時,由于網絡帶寬限制了數據傳輸,因此要求當網絡帶寬較小的時候,只傳輸基本的視頻信號,并根據實際網絡的狀況決定是否傳輸增強的視頻信息,使視頻的質量得到加強。
??在這樣的背景下,利用可分級視頻編碼技術實現一次性編碼產生具有不同幀率、分辨率的視頻壓縮碼流,然后根據不同網絡帶寬、不同的顯示屏幕和終端解碼能力選擇需要傳輸的視頻信息量,以此實現視頻質量的自適應調整。
?
3 JPEG/bmp
?
JPEG文件編/解碼詳解
JPEG 的圖片使用的是 YCrCb 顏色模型, 而不是計算機上最常用的 RGB. 關于色?
彩模型, 這里不多闡述. 只是說明, YCrCb 模型更適合圖形壓縮. 因為人眼對圖片上?
的亮度 Y 的變化遠比色度 C 的變化敏感. 我們完全可以每個點保存一個 8bit 的亮?
度值, 每 2x2 個點保存一個 Cr Cb 值, 而圖象在肉眼中的感覺不會起太大的變化.?
所以, 原來用 RGB 模型, 4 個點需要 4x3=12 字節. 而現在僅需要 4+2=6 字節; 平?
均每個點占 12bit. 當然 JPEG 格式里允許每個點的 C 值都記錄下來; 不過 MPEG 里?
都是按 12bit 一個點來存放的, 我們簡寫為 YUV12.?
[R G B] -> [Y Cb Cr] 轉換?
(R,G,B 都是 8bit unsigned)?
????????| Y??|???? |??0.299?????? 0.587?????? 0.114 |?? | R |???? | 0 |?
????????| Cb |??=??|- 0.1687????- 0.3313??????0.5?? | * | G |?? + |128|?
????????| Cr |???? |??0.5?????? - 0.4187????- 0.0813|?? | B |???? |128|?
Y = 0.299*R + 0.587*G + 0.114*B??(亮度)?
Cb =??- 0.1687*R - 0.3313*G + 0.5?? *B + 128?
Cr =????0.5?? *R - 0.4187*G - 0.0813*B + 128?
[Y,Cb,Cr] -> [R,G,B] 轉換?
-------------------------?
R = Y????????????????????+ 1.402??*(Cr-128)?
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)?
B = Y + 1.772??*(Cb-128)?
????一般, C 值 (包括 Cb Cr) 應該是一個有符號的數字, 但這里被處理過了, 方法?
是加上了 128. JPEG 里的數據都是無符號 8bit 的.?
RGBA?
YUV420存儲為BMP和JPG圖片
ffmpeg jpeg 轉yuv422p(420p)
JPEG圖片的文件格式
圖像處理中 BMP 和JPG等格式的說明
BMP文件結構
4 GOP
? ?GOP說白了就是兩個I幀之間的間隔.比較說GOP為120,如果是720p60的話,那就是2s一次I幀.
在視頻編碼序列中,主要有三種編碼幀:I幀、P幀、B幀
● I幀即Intra-coded picture(幀內編碼圖像幀),不參考其他圖像幀,只利用本幀的信息進行編碼
● P幀即Predictive-coded Picture(預測編碼圖像幀),利用之前的I幀或P幀,采用運動預測的方式進行幀間預測編碼
● B幀即Bidirectionally predicted picture(雙向預測編碼圖像幀),提供最高的壓縮比,它既需要之前的圖
像幀(I幀或P幀),也需要后來的圖像幀(P幀),采用運動預測的方式進行幀間雙向預測編碼
?
5? BP/EP/MP/HP
嵌入式 H.264 BP、EP、MP、HP小結:?http://blog.csdn.net/skdkjzz/article/details/37726205
6? jpeg/h264
M-JPEG、MPEG4、H.264都有何區別?:http://blog.chinaunix.net/uid-16759545-id-4892408.html
ffmpeg(7):將h264編碼的視頻流保存為BMP或者JPEG圖片:?http://blog.csdn.net/oldmtn/article/details/46742555
7 BT1120
BT1120協議
BT1120接口及協議
視頻行場信號轉 bt1120方案.
嵌入式 BT656/BT601/BT1120協議差異小結
8?視頻編碼和封裝格式
? 幾種高清編碼方式和文件封裝格式介紹
9??RAW、YUV、RGB、 RGB,JPEG都是sensor輸出的四種類型
RAW、YUV、RGB、 RGB,JPEG都是sensor輸出的四種類型,簡單來說:
?
1、RAW RGB: sensor的每一像素對應一個彩色濾光片,濾光片按Bayer pattern分布。將每一個像素的數據直接輸出,即RAW RGB data;
2、YUV: luma (Y) + chroma (UV) 格式, 一般情況下sensor支持YUV422格式,即數據格式是按Y-U-Y-V次序輸出的;
3、RGB: 傳統的紅綠藍格式,比如RGB565,其16-bit數據格式為5-bit R + 6-bit G + 5-bit B。G多一位,原因是人眼對綠色比較敏感;
?
4、JPEG: 有些sensor,特別是低分辨率的,其自帶JPEG engine,可以直接輸出壓縮后的jpg格式的數據
10 YUV與RGB相互轉換
Y = 0.257R + 0.504G + 0.098B + 16
U = 0.148R - 0.291G + 0.439B + 128
V = 0.439R - 0.368G - 0.071B + 128
B = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y - 16) + 1.596(V - 128)
typedef unsigned char umatix_1080p[1080][1920]
yuv2rgb(void *yuv)
{
? ? umatrix_1080p *y_matrix;
? ? y_matrix = (umatrix_1080p *)((size_t)yuv);
? ? for(h=0;h<1080;h++)
? ? for(w=0;w<1920;w++)
? ????? (*y_matrix)[h][w] = (int)round(1.164*(y-16)+1.596*(v-128));
}
YUV與RGB格式轉換
總結各種RGB轉YUV的轉換公式
【圖像】
1 鏡頭光圈的作用主要表現在以下三個方面:
(1)調節進光照度。這是光圈的基本作用。光圈調大,進光照度增大;光圈調小,進光照度減小。它與快門速度配合 解決曝光量問題。
(2)調節控制景深。這是光圈的重要作用。光圈大,景深小;光圈小,景深大。
(3) 影響成像質量。這是光圈容易被忽視的作用。任何鏡頭,都有某一檔光圈的成像質量是最好的,即受各種像差的影響最小。這檔光圈俗稱最佳光圈。使用專門儀器可以測出最佳光圈的準確位置。一般來說,最佳光圈位于該鏡頭最大光圈縮小約2至3檔處。大于、小于最佳光圈,鏡頭的球差、縱向色差、慧差、場曲和像散等像差就會增大,所以在拍攝時要盡量使用最佳光圈,以提高成像質量。光圈孔徑的形狀也會影響成像質量,其多邊形越接近圓形,成像質量越好一、總 稱 狗頭、黑孬:低端普及型鏡頭,包括低檔單反相機的套頭。
圖像跨距:http://www.bubuko.com/infodetail-2090621.html
Image Stride(內存圖像行跨度)
2? ISP/DSP區別
ISP 是Image Signal Processor 的簡稱,也就是圖像信號處理器。而DSP是Digital Signal Processor 的縮寫,也就是數字信號處理器。
ISP一般用來處理Image Sensor(圖像傳感器)的輸出數據,如做AEC(自動曝光控制)、AGC(自動增益控制)、AWB(自動白平衡)、色彩校正、Lens Shading、Gamma 校正、祛除壞點、Auto Black Level、Auto White Level 等等功能的處理。
而DSP功能就比較多了,它可以做些拍照以及回顯(JPEG的編解碼)、錄像以及回放(Video 的編解碼)、H.264的編解碼、還有很多其他方面的處理,總之是處理數字信號了。個人認為ISP是一類特殊的處理圖像信號的DSP。
參考文檔:?
???ISP DSP的不同
? ?ISP算法概述
? ?ISP圖像質量調節介紹
? ?ISP術語
? ?列固定模式噪聲的校正方法
?
3 圖像深度/ 深度圖像
? ?深度圖像
? ?圖像深度
? ?深度圖像的獲取原理
4?數碼變焦與光學變焦
??數碼變焦
5??如何計算圖像的壓縮比。
有損壓縮和無損壓縮(近無損)壓縮比一般差很多。我主要做位圖的無損壓
縮,最好也就能達到2,不像做變換的,能有十幾倍還多。
? 具體例子:位圖來看。512*512全彩圖像。?
? ? ? ? ? ? 512*512*3=786432byte
? ? ? ? ? ? 如果你壓縮完的圖像大小為462607byte
? ? ? ? ? ? 那么壓縮比就為786432/462607=1.7.
? ? ? ? ? ? 當然,也有很多文獻用bpp來衡量壓縮比。這個很熵的意義很像。
? ? ? ? ? ? 462607*8/(512*512*3)=4.70588 bpp?
? ? ? ? ? ? 壓縮比就為8/4.70588=1.7
注:全彩圖像,每個像素點三個分量,每個分量8位,大小0-255.? ? ?
壓縮比越高,圖像質量越差.
6? QP(quantizer parameter)編碼器參數. QP越大?圖像質量越差,bit rate碼率越低
7?監控攝像機常識:寬動態 (WDR)介紹和理解
寬動態
背光補償
8?監控攝像機常識:寬動態 (WDR)介紹和理解
HDR/LDR;? 3DNR:3D降噪;噪點 、曝光
HDR
總結
以上是生活随笔為你收集整理的音视频和图像相关知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Struts 2 实现国际化
- 下一篇: 计算机上键盘无法输入法,电脑中输入法设置