如果您對音視頻技術(shù)感興趣,可以訂閱我的專題:音視頻專輯
也可以關(guān)注我的簡書賬戶: 張芳濤,我后期會發(fā)布更多的音視頻以及圖像處理方面的文章。
fourcc(也是FourCC - 四字符碼)是媒體文件中使用的視頻編解碼器,壓縮格式,顏色或像素格式的標識符。 一個字符表示一個1字節(jié)(8位)的值,所以4cc在文件中總是有32位(4字節(jié))。 fourcc中的4個字符通常限制在ASCII表格中的人類可讀字符內(nèi),因此很容易傳達和傳達媒體文件中的四個字符。 AVI文件是最普遍的,或者是第一種被廣泛使用的媒體文件格式,它使用4cc標識符來編碼用于壓縮文件內(nèi)各種視頻/音頻流的編解碼器。 一些更為人熟知的fourccs包括DIVX,XVID,H264,DX50等。在FFmpeg中使用fourcc的示例:
-vtag(或-tag:v)選項設(shè)置視頻流的fourcc值
-atag(或-tag:a)選項設(shè)置音頻流的fourcc值
-tag選項設(shè)置所有流的fourcc值
長寬比是圖像或視頻幀的寬度和高度之間的比率。
長寬比的種類
類型 | 縮寫 | 描述 |
---|---|---|
Display Aspect Ratio | DAR | 顯示的圖像和視頻的縱橫比 替代名稱是圖像縱橫比(IAR)和圖片縱橫比 |
Storage Aspect Ratio | SAR | 圖像或視頻幀的長寬比取決于視頻源 |
Pixel Aspect Ratio | PAR | 像素寬度與其高度之比,在大多數(shù)LCD中它是1:1,但是一些模擬設(shè)備使用矩形像素 |
Original Aspect Ratio | OAR | 從家庭影院標準術(shù)語來說,表示視頻最初創(chuàng)建的方面,許多電影具有廣泛的方面 |
Modified Aspect Ratio | MAR | 家庭影院標準術(shù)語,表示調(diào)整OAR以符合可用輸出屏幕長寬比的方面,通常為4:3或16:9 |
DAR,SAR和PAR之間的關(guān)系可以用等式表示。
DAR = PAR x SAR
在ffmpeg中有一個-aspect選項可用于指定輸出視頻:
-aspect[:stream_specifier]
托馬斯·阿爾瓦·愛迪生和威廉·迪克森于1892年創(chuàng)建了一種35mm寬的薄膜通用標準,其中穿孔確定了24.89x18.67毫米的框架尺寸,大約為4:3或1.33:1的比例。 從那時起,許多寬高比被創(chuàng)建,其中一些將在下一個表中描述。
1.33:1 或者 4:3 | 原來的電影寬高比今天廣泛用于液晶顯示器,電視屏幕,攝像機等,它也是MPEG-2壓縮的標準 |
---|---|
1.618:1 | 黃金比例,F(xiàn)Fmpeg將其作為內(nèi)置恒定PHI,其中PHI =(1 + sqrt(5))/ 2 |
1.77:1或 16:9 (也可以1.78:1) | 用于高清晰度電視,液晶顯示器,攝像機等的寬屏標準。它是MPEG-2標準中3種寬高比中的一種。 比例16:9可以從4:3導(dǎo)出,其中4^2 = 16和3^2 = 9 |
2.2:1 或 11:5 | 50年代開發(fā)的70毫米膠片標準,它也是MPEG-2標準的一部分,其值為2.21:1 |
2.37:1 | 2010年推出的所謂“21:9電影放映”新標準。 該比率從4:3推導(dǎo)出,其中4 3:3 3 = 64:27 = 2.37 |
2.39:1 | 35毫米膠片標準是變形的,1970年用作'范圍'或Panavision格式。 藍光光盤將此比例用作2.4:1,并以1920x800的分辨率錄制電影 |
國際照明委員會(法國國際照明委員會 - 國際照明委員會)是關(guān)于照明,照明,色彩空間等的機構(gòu)和權(quán)威機構(gòu),更多地參見色彩校正章節(jié)。
顏色深度,位深度和每像素位數(shù)是描述使用多少位來指定圖像中每個像素組件的顏色屬性的術(shù)語。 表中使用最多的顏色深度:
每像素的位數(shù) | 顏色數(shù)量 | ffmpeg中可用的對應(yīng)像素格式 |
---|---|---|
1 (B&W) | 2^1 = 2 | 單聲道,單聲道 |
2 (CGA) | 2^2 = 4 | 沒有像素格式(在早期的計算機中使用了2 bpp) |
3 | 2^3 = 8 | 沒有像素格式(用于具有電視顯示的早期家用電腦) |
4 (EGA) | 2^4 = 16 | rgb4, rgb4_byte, bgr4, bgr4_byte |
8 (VGA) | 2^8 = 256 | gray, pal8, bgr8, rgb8 |
12 | 2^12 = 4096 | yuv420p, yuv411p, yuvj420p, nv12, nv21, rgb444be, rgb444le |
16 high color | 2^16 = 65,536 | yuyv422,yuv422p,yuvj422p,yuv440p,yuvj440p,rgb565be等 |
24 true color | 2^1 = 16,777,216 (我懷疑這個數(shù)據(jù)的正確性。。。) | rgb24, bgr24, yuv444p, yuvj444p, gbrp, 0rgb, rgb0, yuva422p,等 |
32 true+alpha | 24-bit with alpha | argb, rgba, abgr, bgra, yuva444p, yuv422p16be, yuv422p16le |
30 deep color | 2^30 = 1,073,741,824 | yuv444p10be, yuv444p10le, gbrp10be, gbrp10le |
36 deep color | 2^36 = 68,719,476,736 | yuva444p9be, yuva444p9le, gbrp12be, gbrp12le, yuv444p12be等 |
48 deep color | 超過280萬億 | rgb48be, rgb48le, bgr48be, bgr48le, yuva422p16be, yuva422p16le |
顏色空間是從顏色模型派生而來的。 色彩模型描述了可用于模擬人類視覺的方法。 當這種描述如何用顏色表示數(shù)字的數(shù)學(xué)模型輔以用于解釋這些數(shù)字的精確定義時,這樣的一組顏色被認為是一種顏色空間。 數(shù)字顏色表示通常使用3或4個組件來描述每種顏色。 更精確的規(guī)格要求更大的數(shù)字,詳情請參見上一節(jié)。 5種顏色模型被認為是主要的:CIE,CMYK,HSL / HSV,RGB和YUV以及視頻技術(shù)通常使用RGB和YUV。 計算機顯示器使用像素來顯示信息,顏色空間以像素格式實現(xiàn),他們的列表在第二章中介紹。
盡管人耳對從16到20,000赫茲頻率的振動敏感,但人眼能夠感知頻率從大約405 THz(740納米)到789 THz(380納米)的電磁波。 沒有顏色的暗光被稱為圓錐體的特殊眼睛細胞感知,并且三色視覺由棒狀細胞提供。 3種不同類型的棒狀細胞對3種基本顏色敏感:紅色,綠色和藍色:
L(長波)rods - 對大約564到580納米的波敏感 - 紅色
M(中波)rods - 對約534至545納米波長敏感 - 綠色
S(短波)rods - 對大約420至440納米的波敏感 - 藍色
rods的峰值靈敏度為約498nm的波,因此綠色感覺比紅色好,甚至比藍色更好,更多細節(jié)在隔行視頻一章中。
離散余弦變換用于利用有損編解碼器對音頻和視頻數(shù)據(jù)進行壓縮,從而減少多次存儲的數(shù)據(jù)量。 它使用一個以不同頻率振蕩的余弦函數(shù)和來將復(fù)信號轉(zhuǎn)換為復(fù)信號。 DCT是離散傅立葉變換(DFT)的一種特殊類型,其中輸入和輸出采樣是實數(shù)(DFT與復(fù)數(shù)相匹配)。 使用ffmpeg的DCT示例:
選項-dct [:stream_specifier]為任何編解碼器設(shè)置DCT算法
選項-idct [:stream_specifier]為任何編解碼器設(shè)置DCT實現(xiàn)
值為ildct(使用隔行DCT)的任何編解碼器的標志選項
值為任何編解碼器的-debug選項中的dct_coeff
對于任何編解碼器,在-cmp,-subcmp,-mbcmp,-ildctcmp,-skipcmp和-precmp選項中的值dct(絕對DCT轉(zhuǎn)換差的總和)和值dctmax
為任何編解碼器選項-skip_idct [:stream_specifier]選項
在轉(zhuǎn)碼過程中,解碼器處理來自分路器的編碼數(shù)據(jù)包,并為下一個處理生成未壓縮幀。 從FFmpeg文檔定義:
“解碼器是FFmpeg中的配置元素,可以解碼多媒體流?!?解碼器列表可以使用以下命令顯示:
ffmpeg -decoders
在轉(zhuǎn)碼過程中,解復(fù)用器(也是解復(fù)用器和解復(fù)用器)讀取輸入文件并生成編碼數(shù)據(jù)包,發(fā)送到解碼器進行解碼。
從FFmpeg文檔定義:
“分解器是FFmpeg中的配置元素,它允許從特定類型的文件讀取多媒體流?!?br>分解器在可用格式中列出,詳細信息在第二章中。 有關(guān)特定分路器的信息可以使用以下命令顯示:
ffmpeg -h demuxer=demuxer_name
在轉(zhuǎn)碼期間,編碼器處理未壓縮的幀,并根據(jù)選定的編解碼器將它們編碼為發(fā)送到解復(fù)用器的數(shù)據(jù)包,通常采用某種壓縮,有損或無損壓縮。
FFmpeg文檔中編碼器的定義:
“編碼器是FFmpeg中的配置元素,它允許編碼多媒體流?!?br>編碼器列表位于第二章中,可以使用以下命令顯示:
ffmpeg -encoders
要顯示關(guān)于特定編碼器的詳細信息,我們可以使用以下命令:
ffmpeg -h encoder=encoder_name
原生FFmpeg源代碼的可能性通過包含來自其他開源項目的附加軟件庫代碼得到了改進。 在使用名為configure的配置文件的--enable-library選項進行編譯之前,會包含這些庫。 在每個控制臺使用ffmpeg的情況下,ffplay和ffprobe工具都會顯示實際的FFmpeg配置并啟用其他庫,如下一個控制臺輸出中所示:
顯示的還有FFmpeg本地庫的版本:libavutil,libavcodec等
JPEG通常有2種含義:
聯(lián)合圖像專家組是移動圖像專家組(MPEG)的前身。 JPEG小組成立于1986年,并創(chuàng)建了JPEG,JPEG 2000和JPEG XR標準。
有壓縮比為10:1的圖像和視頻幀的有損壓縮方法沒有明顯的質(zhì)量下降,它被用于許多圖像格式,包括在網(wǎng)頁和數(shù)碼相機中廣泛使用的JPG圖像。
由于JPEG格式的有損壓縮不適合多次編輯和某些技術(shù)任務(wù)。 創(chuàng)建JPEG圖像的段以各種標記(SOI,SOF0,SOF2,DHT等)分隔。 在編碼過程中,內(nèi)容被轉(zhuǎn)換為YCbCr(FFmpeg像素格式的YUV)色彩空間,其中Y表示亮度通道,Cb和Cr兩個色度通道。 色度通道可選擇降采樣,每個通道被分成8×8塊,通過類型II的歸一化2維離散余弦變換(DCT)轉(zhuǎn)換為頻域。
在FFmpeg中使用JPEG和派生標準的示例:
mjpeg2jpeg比特流篩選器轉(zhuǎn)換MJPEG / AVI1數(shù)據(jù)包以完成JPEG / JFIF數(shù)據(jù)包
mjpegadump比特流過濾器用于轉(zhuǎn)換為MJPEG文件格式
解碼器和基于JPEG的編碼器:jpeg2000,jpegls,ljpeg,mjpeg,mjpegb(僅解碼器),nuv(RTJPEG),sp5x(Sunplus JPEG),adpcm_ima_smjpeg(音頻,僅解碼器)
文件格式:ingenient(原始MJPEG,僅解碼),mjpeg,mpjpeg(MIME多部分,僅編碼),smjpeg(Loki SDL MJPEG)
圖像或視頻幀到宏塊的劃分是使用離散余弦變換(DCT)進行編碼的一部分。 在FFmpeg中,各種AVC編解碼器上下文選項,H.263編碼器選項,ProRes編碼器選項,libx264選項,libxavs選項等都使用宏塊。
運動矢量根據(jù)另一圖片(參考圖片)中宏塊的位置來表示圖片中的宏塊。 運動矢量是視頻壓縮過程中運動估計的主要元素。 H.264標準的官方定義是:
用于幀間預(yù)測的二維矢量,其提供從解碼圖片中的坐標到參考圖片中的坐標的偏移。
運動矢量在FFmpeg中的使用示例:
值為mv4(在宏塊(mp4)中使用四個運動矢量)in -flags選項用于任何編解碼器
任何一個編解碼器的-ec(錯誤隱藏策略)選項中的guess_mvs(迭代運動矢量(MV)搜索)
值為mv(運動矢量)的任何編解碼器的調(diào)試選項
-任何編解碼器的-vismv [:stream_specifier](可視化運動矢量)選項
任何編解碼器的-me_range [:stream_specifier](限制運動矢量范圍)選項
任何編解碼器的-bidir_refine選項(細化雙向宏塊中使用的2個運動向量)
去抖濾波器使用x,y,w和h參數(shù)指定矩形區(qū)域來搜索運動矢量
MPEG(發(fā)音“em-peg”)代表Moving Pictures Experts Group,它是由ISO / IEC于1988年建立的多媒體專家團隊,負責(zé)制定音頻和視頻壓縮和傳輸標準。 MPEG標準包括:
MPEG-1
MPEG-2
MPEG-4
MPEG-7
MPEG-21
MPEG被分成稱為工作組的團隊(暫且先這么翻譯,原文是:MPEG is divided to the teams called working groups.)。
該標準的官方定義是:“以高達約1.5 Mbps的速度為數(shù)字存儲媒體編碼運動圖像和相關(guān)音頻。” 它在1993年進行了標準化,主要目標是編碼視頻和聲音以存儲在光盤上。 MPEG-1用于音頻CD,VCD和可選的SVCD和低質(zhì)量DVD。 在MPEG-2之前,它也被用于數(shù)字衛(wèi)星和有線電視網(wǎng)絡(luò)。 該標準的一部分是流行的音頻格式MP3,MP3是MPEG-1 Audio Layer III的縮寫。 在ffmpeg中,您可以使用-f mpeg1video選項來選擇此格式,例如:
ffmpeg -i input.avi -f mpeg1video output.mpg
MPEG-2標準的官方定義是:運動圖像和相關(guān)音頻信息的通用編碼(ISO / IEC 13818)。 這個廣泛的標準于1995年發(fā)布,包含廣播電視的傳輸,視頻和音頻規(guī)范。 其壓縮方案用于:
地面數(shù)字電視,即ATSC,DVB和ISDB
衛(wèi)星數(shù)字電視,例如Dish Network
數(shù)字有線電視
超級視頻CD,DVD視頻和偶爾在藍光光盤上播放
在ffmpeg中,您可以使用-f mpeg2video選項來選擇此格式,例如:
ffmpeg -i input.avi -f mpeg2video output.mpg
ISO / IEC對標準的正式定義是:“視聽對象的編碼”。 它在1998年得到了標準化,其主要特點是:
新的編碼算法ACE(高級編碼效率),與MPEG-2相比,其數(shù)據(jù)存儲/帶寬減少了約11倍
解碼器是渲染處理器,壓縮比特流描述3D形狀和表面紋理
支持MPEG-J(Java API),是定制交互式多媒體應(yīng)用開發(fā)的程序的解決方案
支持使用專有技術(shù)管理和保護DRM(數(shù)字版權(quán)管理)等內(nèi)容的IPMP(知識產(chǎn)權(quán)管理和保護)
對于帶有MP4擴展名的輸出文件,ffmpeg會自動選擇h264編碼器和yuv420p像素格式。
在轉(zhuǎn)碼過程中,復(fù)用器(也是多路復(fù)用器或多路復(fù)用器)處理編碼的數(shù)據(jù)包,并生成指定格式的文件。 FFmpeg文檔中復(fù)用器的定義:
“Muxers是FFmpeg中的配置元素,允許將多媒體流寫入特定類型的文件?!?br>muxers的列表在可用格式的第二章中。 要顯示有關(guān)特定復(fù)用器的詳細信息,我們可以使用以下命令:
ffmpeg -h muxer=muxer_name
像素或像素來源于圖像元素,并表示數(shù)字圖像或視頻幀的最小可控元素。 像素的形狀通常是正方形,但一些幀分辨率使用矩形像素。 像素寬度和高度之間的比例是像素寬高比,通??s寫為PAR。 ffmpeg包含包含1個,3個或4個組件的像素格式,并使用以下命令顯示:
ffmpeg -pix_fmts
計算機術(shù)語中的術(shù)語協(xié)議通常意味著一組用于數(shù)據(jù)接收和傳輸?shù)耐ㄐ乓?guī)則。 FFmpeg文檔中協(xié)議的定義:
“協(xié)議是FFmpeg中的配置元素,允許訪問需要使用特定協(xié)議的資源。”
可用協(xié)議列表在第二章中,可以使用以下命令顯示:
ffmpeg -protocols
協(xié)議的例子是http(超文本傳輸協(xié)議),rtmp(實時消息傳輸協(xié)議),tcp(傳輸控制協(xié)議),udp(用戶數(shù)據(jù)報協(xié)議)等。
數(shù)字信號的量化涉及將一系列值減小到代表性的單個值。 媒體處理包括音頻和視頻量化,音頻中量化的聲音幅度和視頻編碼涉及顏色和頻率量化。 音頻和視頻量化都可以利用DCT變換。 與量化相關(guān)的ffmpeg選項的例子:
值為任何編解碼器的標記選項(歸一化自適應(yīng)量化)
任何編解碼器的-debug選項中的qp(量化參數(shù))和vis_qp(可視化QP)值
-trellis [:stream_specifier](速率 - 失真最優(yōu)量化)選項
采樣連續(xù)(模擬)信號意味著將其降低到離散信號,例如聲波(圖中所示)被轉(zhuǎn)換為一系列采樣。 這些樣本的數(shù)值以數(shù)字表示,這種數(shù)字形式可以保存到計算機文件中。 采樣率(或頻率)決定了每秒采樣的數(shù)量,典型的音頻采樣率是8000 Hz和11025 Hz的倍數(shù)。 人耳靈敏度范圍從16 Hz到20 kHz,由于采樣定理,至少需要40 kHz頻率才能表示所有可聽聲音,選擇44,100 Hz作為CD音頻的標準。
術(shù)語視頻是在電視被發(fā)明時創(chuàng)建的,并且表示一種以電子形式處理運動圖像的技術(shù)(與電影 - 光化學(xué)形式相比),可以包括:
捕獲
記錄
壓縮
編碼
解碼
傳送(廣播)等。
主要的視頻功能是:
幀率
長寬比
存儲類型(模擬或數(shù)字)
色彩空間
交錯式或漸進式
質(zhì)量(由用戶感知)
每像素位數(shù)(色彩深度)
編解碼器(僅數(shù)字視頻)
3維(3D)
視頻表示以幀速率指定的快速序列投影以產(chǎn)生連續(xù)運動的假象的靜止圖像,當人眼看到連續(xù)場景時的最小幀速率大約為每秒15幀圖像(幀)。 視頻來源于電影,這是一種處理運動圖片的機械技術(shù),最初是為電影和電視開發(fā)的,它使用隔行掃描來消除閃爍。 FFmpeg適用于第二章中列出的許多視頻格式。 一些格式能夠存儲多個不同的運動圖像序列,并且這些序列被稱為視頻流; 它們的編號是從零開始的,第一個流編號為0,第二個編號為1,等等
FFmpeg中的過濾器是通過libavfilter庫實現(xiàn)的。 為獲得最佳性能,它們通常用于過濾鏈(逗號分隔過濾器的說明)和過濾器圖形(分號分隔的過濾鏈)。 使用filtergraphs可以使用帶標簽的鏈接替換后面的filterchains中的輸入,默認情況下會創(chuàng)建一個特殊的[in]鏈接標簽,并表示使用-i選項輸入的輸入。 將過濾器與過濾鏈和過濾器圖組合在一起比重復(fù)處理更加優(yōu)選,所述重復(fù)處理涉及由壓縮算法引起的輕微變化。 過濾器列表位于第2章中,由以下內(nèi)容顯示:ffmpeg -filters視頻過濾器可根據(jù)多個標準進行劃分,總體分類見下表:
視頻過濾器(一般分類)
過濾器類型 | 描述 | 示例 |
---|---|---|
預(yù)過濾器 | 在編碼之前使用 | 對比度調(diào)整 去閃爍 逐行掃描 降噪 縮放(縮減采樣,上采樣) |
Intrafilters | 用于編碼(通常是視頻編解碼器的一部分) | 解封裝 |
Postfilters | 解碼后使用 | 解封裝,逐行掃描,dering |
注意:一些像隔行掃描一樣的濾鏡被列入2類,因為輸入視頻流的修改取決于軟件實現(xiàn)。
視頻流水線描述了從原始視頻輸入到顯示設(shè)備上最終輸出的視頻幀處理過程,圖中顯示了一個簡化的視頻流水線。 ffmpeg包含2個特殊輸入設(shè)備dv1394和iec61883,可直接從數(shù)碼攝像機使用的FireWire端口錄制。
Frantisek Korbel是Zend認證工程師,他的工作包括編程,視頻編輯和網(wǎng)頁設(shè)計。 2004年,他創(chuàng)建了一個使用Macromedia Flash的急救基礎(chǔ)免費軟件,從那時起他經(jīng)常使用動畫和視頻。 他在2009年使用Adobe AIR開發(fā)了化學(xué)元素學(xué)習(xí)周期表。 他的大部分活動都專注于志愿工作,主要用于發(fā)展中國家的教育和社區(qū)項目(非洲 - nkolfoulou.org,oyoko.org),印度(kidedu.org)等。他參加了聯(lián)合國志愿工作的各種項目, 由聯(lián)合國開發(fā)計劃署協(xié)調(diào)的WaterWiki.net網(wǎng)站設(shè)計。 為了這本書,他創(chuàng)建了一個支持網(wǎng)站ffmpeg.tv。
聯(lián)系客服