MPEG-4 AVC/H.264 信息

作者:haibara????來源:pcicp.com

本FAQ由(haibara)翻譯,期間受到kaito_mkid(pcicp)幫助,在此感謝,由于Newbie的關系,如有翻譯錯誤,還請各位指出,由Doom9的bond編撰的原文

譯者注:基本專業名稱我都以小括號形式加以解釋,詳細信息請自行查閱資料。

什么是MPEG-4?

MPEG-4(ISO 14496)是由制定了我們熟知的MPEG-1(MP3, VCD)和MPEG-2(DVD, SVCD)標準,并力于使各種音頻/視頻壓縮格式和更多內容標準化的國際標準化組織(International Organization for Standardization/ISO)的工作組,即運動圖像專家組(Moving Picture Experts Group/MPEG)發展的廣泛的開放標準。
本質上MPEG-4標準不僅把目標定為標準化某些有發展前途的產品(例如達到DVD性能),而且含蓋了一個能讓產品供應商根據需要選擇適當標準去執行的廣泛的次級標準。

MPEG-4標準,如上所說,被分成許多不同的次級標準,在Doom9里我們使用者可能最感興趣的部分如下:
- ISO 14496-1(Systems/系統),動畫/交互性(類DVD菜單)
- ISO 14496-2(Video/視頻),如Advanced Simple Profile(ASP/高級簡單類),由XviD, DivX5, 3ivx...執行
- ISO 14496-3(Audio/音頻),Advanced Audio Coding(AAC/先進音頻編碼)
- ISO 14496-10(Video/視頻),Advanced Video Coding(AVC/進階視頻編碼),著名有H.264
- ISO 14496-14(Container/容器),MP4容器格式(使用.mp4作擴展名)
- ISO 14496-17(Subtitles/字幕),MPEG-4時標文本字幕格式

這些信息頁面正力于提供這些標準的大部分有用的信息,尤其是作為焦點的MPEG-4 ASP和AVC/H.264。


與封閉格式如Micro$oft的Windows Media相比,象MPEG-4一樣的開放標準有什么可能的優勢?

開放標準的一個好處是當創建產品時允許向所有人開放并遵循它。因此我們已經有許多不同的符合MPEG-4標準并可互相兼容的產品。
其次是互通性大范圍的產品選擇性,一個開放標準導致競爭,對顧客而言這意味著產品在競爭市場中能更好地提高品質,更少的價格和更關注顧客需求

但不要忘記這也許對我們來說最重要的一點:
一個開放標準允許開源發展,例如我們熟知的XviD。

ISO 14496-10 (Video) - 進階視頻編碼(Advanced Video Coding/AVC)

有著AVC/H.264的MPEG-4標準定義了一個擁有最新,最高技術的實用的,充滿尖端科技的視頻編碼格式。

2003年,ISO的MPEG(Moving Pictures Experts Group/運動圖像專家組)與聯合國(United Nations/UNO)下設的ITU(International Telecommunication Union/國際電信聯盟)的VCEG(Video Coding Experts Group/視頻編碼專家組)這2大組織最終完成并共同規定了AVC/H.264視頻編碼標準,其中后者曾標準化H.263格式(現主用于視頻會議)。
AVC/H.264標準它自身是由MPEG和VCEG的專家構成的Joint Video Team(JVT/聯合視頻組)發展的。

由MPEG來看,該標準被叫做MPEG-4 Part 10(ISO 14496-10);由ITU來看,它叫做H.264(ITU的公文號) 其中作為后者已廣泛流傳開來。
新標準選擇Advanced Video Coding(AVC/進階視頻編碼)作為“官方”名 - 因為對應視頻的音頻格式是Advanced Audio Coding(AAC/先進音頻編碼)。


AVC/H.264 Profile

AVC/H.264定義了4種不同的Profile(類):Baseline(基線類), Main(主要類), Extended(擴展類)和High Profile(高端類)(它們各自下分成許多個層):

- Baseline Profile 提供I/P幀,僅支持progressive(逐行掃描)和CAVLC
- Extended Profile 提供I/P/B/SP/SI幀,僅支持progressive(逐行掃描)和CAVLC
- Main Profile 提供I/P/B幀,支持progressive(逐行掃描)和interlaced(隔行掃描),提供CAVLC或CABAC
- High Profile (也就是FRExt)在Main Profile基礎上新增:8x8 intra prediction(8x8 幀內預測), custom quant(自定義量化), lossless video coding(無損視頻編碼), 更多的yuv格式(4:4:4...)

只有未來會告訴我們哪一種框架和工具最可能被用于DVD備份,但是我猜想會是有著以下的工具大力幫助的Main和/或High Profile(同樣請核實MPEG-4 ASP的工具描述,除了GMC,所有的工具在AVC下都是可用的):

CAVLC/CABAC:
AVC/H.264定義了2種先進的重構數據流(包括macroblock-type(宏塊), motionvectors(運動矢量) + reference-index(參考索引)...)的熵編碼工具,一舉超越MPEG-4 ASP:
Context-Adaptive Variable Length Coding(CAVLC/上下文自適應變長編碼)和 Context-Adaptive Binary Arithmetic Coding(CABAC/上下文自適應二進制算術編碼)
CABAC,與AVC/H.264中只是默認算法的CAVLC(也叫UVLC)相比,是個壓縮率更強大的算法,據說能額外降低10-15%的比特率(特別在高碼率)。CABAC(同CAVLC一樣)是一種無損算法,因此不會降低質量,但會減緩編碼和解碼速度。

Loop/Deblocking Filter(循環/去塊濾波器):
與預處理濾波器(例如通過avisynth作用于輸入端),或后處理濾波器(通過解碼器作用于最終輸出端)相反,循環濾波器在編碼過程中對每楨進行濾波,編碼完成后被用于下一楨的參考。它能消除塊效應,尤其在低碼率時,但同樣會減緩編碼和解碼速度。

Variable Block Sizes/Macroblock Partitions(塊大小可變/宏塊劃分):
與MPEG-4 ASP(僅Inter4V/4MV能作16x16和8x8塊變換)相比,AVC/H.264把動態搜尋精度(Motion Search Precision)提高到4x4(包含的步驟有8x4...)。子塊大小是自適應/可變的,一個優秀的編碼器應能對每個宏塊明智地作出最恰當的劃分大小 決定。

Multiple Reference Frames(多重參考楨):
與MPEG-4 ASP(僅允許當前楨的前一楨作為參考楨)相比,AVC/H.264使用幀間搜索方式并提供成倍的參考楨選擇,它意味著AVC/H.264編碼能決定是否 只是簡單地參考前一楨或甚至參考比前楨更過去的楨。因此(例如某個P楨能參考最近I楨前的某楨)不得不提出一種新型楨型:IDR楨,是種其后的楨不允許參 考其前的楨的I楨。使用多重參考楨會減慢編碼和解碼速度并且可能導致只能在IDR楨剪切。

Weighted Prediction(加權預測):
有了加權預測就能對參考楨進行加權(例如你能測量前一幅圖象的亮度程度)。它特別有助于在那些隨時可能淡入或淡出的場景中前后圖象極為相似,只是畫面變暗 的圖象的處理。WP對于同時出現淡入及淡出的圖象沒有效果(例如當圖象從一個場景轉到另一個場景就會同時出現淡入及淡出)。

Rate Distortion Optimisation(RDO/碼率-失真/損耗最佳化):
只要編碼器不得不在眾多選擇中作出絕擇時,RDO允許選擇最有效的編碼方式(例如面臨采用楨間/楨內的動態搜尋的決定...)
RDO不是AVC/H.264本身定義的工具,它是第一個由H.264參考軟件引入的工具,可謂一種新的途徑。其他的編碼也能利用RDO,如XviD'的VHQ模式能使用RDO


AVC/H.264與其他流行的視頻編碼格式的比較測評:
?

現有的AVC/H.264編碼

可用于終端用戶的AVC/H.264執行者有x264, Nero, Apple, Sorenson, Elecard, Moonlight, VSS, mpegable, Envivio, Hdot264 (binary), DSPR, JM (參考軟件) (binary), ffmpeg, Philips, FastVDO, Skal, Sony和更多

編碼器

- x264:第一個公開的可使用High Profile的編碼器,開源(GPL)(源碼),使用VFW的有:x264vfw, ffdshow(輸出.avi),命令行的:x264cli(輸出raw的.mp4), mencoder(輸出raw的.avi)(Doom9的MeGUI)或ffmpeg
x264支持2pass, CABAC, 循環濾波, 多重B幀, 雙向參考(B-Reference), 多重參考楨, 4x4 P幀塊變換, 8x8 B幀塊劃分, 失真信號化(anamorphic signalling)和High Profile:8x8 dtc(離散余弦變換)與幀內預測, 無損視頻編碼和自定義無損量化矩陣(custom quant matrix)
- NeroDigital AVC:Nero Recode2內含,輸出為.mp4
ND AVC支持2pass, CABAC, 自適應循環濾波, 多重B幀, 多重參考楨, 加權預測, 8x8 B幀塊劃分, 16x16 B幀塊劃分, 自適應量化(高度Psy)
- Sorenson:Sorenson Squeeze 4內含,輸出.mp4,
Sorenson支持2pass, 最大2連續B幀, 雙向參考, 循環濾波和多重Slice
- Apple:Quicktime 7內含,輸出.mp4, .3gp和.mov,編碼速度很慢
支持2pass, 最大1連續B幀, 循環濾波(0,0), 8x8 P幀塊變換, 8x8 B幀塊變換, 4x4 I幀塊變換, 自適應量化, 5級Slice, 沒有CABAC, 沒有加權預測, 沒有多重參考楨
- JM: 此AVC參考軟件v9.3版提供Main和High Profile:B/SP幀, CABAC, 循環濾波器, 4x4 塊劃分, 多重參考楨, 自適應量化, 差錯修復(Error Resilience), RDO, 無損視頻編碼, 自定義量化), 比率控制(Rate Control)等...
- Hdot264:由doom9會員charact3r發展的開源(GPL)的VFW版參考軟件,仍然以很老的參考軟件(JM 4.0c)為基礎
- VSS:免費的VFW編碼器(可預覽5天),以參考編碼器為基礎
- Elecard: Elecard Mobile Converter內含,輸出.mp4, MainConcept's v2 encoder也內含,輸出.264和.mpg PS/TS
不再公開的:
- Moonlight:Moonlight的OneClick Compressor v1.1和CyberLink的PowerEncoder內含,輸出.mpg
Moonlight支持1pass(VBR/CBR/預設 量化), CABAC, 循環濾波, 最大2連續B幀, 8x8 B幀塊劃分, 自適應量化, 自動調整PAR(Pixel Aspect Ratio/象素縱橫比), 隔行掃描
- MainConcept:免費的編碼器(有水印),輸出.264和.mpg PS/TS
1pass(CBR/VBR/預設 量化), P幀重排(P-Frame Reorder), CABAC, 循環濾波, 多重B-Vops(Bidirectional Video Object Planes/雙向視頻對象平面), 多重參考楨, 4x4 P幀塊劃分), PAR, RDO
- mpegable:提供試用有限的免費VFW編碼器(不以參考軟件為基礎),不支持YV12
mpegable支持僅限P幀的1pass(預設量化), 8x8 P幀塊劃分, 只支持CAVLC, 循環濾波
- Envivio:4Coder內含,輸出.mp4

解碼器 (比較測評)

- ffmpeg:開源(LGPL),包含在ffdshow(VFW和DShow編碼器), mplayer和VideoLAN等
支持B幀, 雙向參考, CABAC, 循環濾波, 加權預測和High Profile (8x8 dct與幀內預測, 無損視頻編碼)
- Apple:Quicktime 7支持AVC解碼,支持.mp4/.mov,解碼速度很慢
僅支持最大1連續B幀, CABAC, 不作后幀參考的循環濾波, 多重B幀和隔行掃描
- NeroDigital AVC:Recode2附帶DShow解碼器和.mp4 Parser
支持Main和High Profile
- VSS:VFW解碼器 (預覽5天) 和DShow解碼器 (限制30天)
VSS DShow支持.avi (支持VSSH和H264 fourcc), CABAC, 循環濾波, B幀
- Elecard:Elecard's MPEG Player v4.0和MainConcept's v2 encoder內含
- Envivio:有個名叫EnvivioTV的非免費AVC DShow解碼器,(從2.0版開始,當前版本為2-1-181)支持混合AVC的.mp4
- Philips:AVC Alliance播放器內含免費的DShow AVC解碼器(只支持raw AVC)
- FastVDO:有時間限制(每個視頻文件5分鐘)的High Profile DShow解碼器
- Pegasus:這里有發展不成熟的DShow AVC解碼器
- Basic AVC Decoder用C編寫,是一所大學的工程,見這里
不再公開的:
- Moonlight:DShow解碼器/Parser支持混合AVC的.mpg, .mp4和.264 Moonlight's MPEG Player v3.0內含
支持Main和High Profile
- MainConcept:v1預覽版提供免費DShow AVC解碼器(有水印) 并且Parser支持AVC和.mpg PS/TS
- mpegable:提供試用有限的VFW解碼器 (可用于DShow),支持.avi (支持 DAVC fourcc)


預覽樣本

NeroDigital:mp4, mp4
Sorenson:mp4
AVC Alliance:raw
Moonlight:raw/中碼率, raw/低碼率, raw, mpg
FastVDO:raw/high profile
Apple:mov
Videosoft: avi, avi/新, avi/老
Lead:ogm


當前AVC/H.264的爭論

- 互通性:大多數執行者支持多種容器格式:
.mp4:由MPEG-4標準(ISO 14496-15)定義的AVC容器,Apple, Nero, Sorenson, Envivio, Elecard/Moonlight和x264都支持
.mpg PS/TS:由MPEG-2標準(ISO 13818-1, AMD3)定義的AVC容器,Mainconcept和Elecard/Moonlight支持
.avi:采取AVC-in-AVI的方式非標準,因此會造成不兼容問題。AVI和VFW的局限(如關于B幀或任意幀的編碼順序),混合這兩種格式混合會完全阻礙AVC提供的所有可能特性的執行,因此可能降低質量,或至少降低處理速度和互通性,其競爭性也因此下降。當前VSS和x264(mencoder 和vfw)支持使用AVI
.264/.h264:未混合入容器的原始數據流。JM參考軟件, x264cli, mencoder和mainconcept都可輸出

- 速度:當前一些執行者編碼器速度不敢恭維,依然只有x264和NeroDigital's AVC的編碼器看上去能提供不俗的速度與品質。但這不會改變AVC是種先進的視頻編碼方式的事實。所以老的CPU編解碼AVC會非常耗時


MPEG-4 AVC/H.264的硬件應用化 - HD-DVD/藍光(Blu-ray)

DVD論壇(DVD Forum)和藍光光盤協會(Blu-ray Disc Association)正在討論能支持高清晰(High Definition)內容(存儲容量完全超過當前的DVD)下一代DVD格式的繼承人選:HD-DVD和BD-ROM

據這里報道HD-DVD會強制采用MPEG-4 AVC/H.264,而藍光支持老早被MPEG-4 AVC/H.264 High Profile納入-這里

因此AVC/H.264極有可能成為下一代視頻格式,會被廣泛地使用和支持,就象今天MPEG-2(用于DVD)的情形一樣


更多的文檔

關于MPEG-4 AVC/H.264的文檔:詳細說明-這里,摘要信息-這里或這里,
執行者清單
AVC的測試結論參看這里
下載完整的AVC/H.264標準詳述這里(Draft from the 7-14 March 2003)
藍光的技術信息參看這里

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450862.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eclipse搜索關鍵字

見:https://jingyan.baidu.com/article/e6c8503c1a60d2e54f1a18e3.html

裝飾器語法糖運用

裝飾器語法糖運用 前言:函數名是一個特性的變量,可以作為容器的元素,也可以作為函數的參數,也可以當做返回值。閉包定義: 內層函數對外層函數(非全局)變量的引用,這個內層函數就可以…

fb 4.7英文版 顯示行數

窗口(window)首選項(Preference)—>常規(General)—>編輯器(Editors)—>文本編輯器(Text Editors)—>“顯示行號”(Show line number…

集市中迷失的一代:FreeBSD核心開發者反思開源軟件質量

摘要:本文作者Poul-Henning Kamp (phkFreeBSD.org) ,26年的計算機程序員,他編寫的軟件以底層構建塊的形式廣泛被開源和商業產品采用。講述作者在看完《設計原本》這本書后所引發的共鳴! 13年前,新興的草根開源軟件運動…

點擊表格彈窗獲取另外一套數據之后,原表格相關數據的調用

用H5新屬性,data-*, $獲取方式: 待續。。。。。。。 轉載于:https://www.cnblogs.com/He-tao-yuan/p/9888316.html

谷歌瀏覽器如何如何禁用彈出窗口阻止程序

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 在工具欄上使用 Google Chrome 菜單。工具欄上的菜單位于瀏覽器右上角。 選擇“設置”。 在頁面底端找到并點擊“顯示高級設置”。 在“隱…

Python 3 入門,看這篇就夠了

文章目錄 簡介基礎語法運算符變量數據類型流程控制迭代器生成器函數 自定義函數參數傳遞 可更改與不可更改對象參數匿名函數變量作用域模塊面向對象錯誤和異常文件操作序列化命名規范參考資料簡介 Python 是一種高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Pyt…

面試經歷(二)

前面說到用數據庫中的鎖機制對并發事務進行控制,這節來說說事務方法和事務方法發生嵌套調用時事務如何進行傳播。例如:方法可能繼續在現有事務中運行,也可能開啟一個新事務,并在自己的事務中運行。例如:方法可能繼續在…

最有價值的編程忠告

摘要:本文是來自貝爾實驗室Plan 9操作系統的創始人Rob Pike給大家分享的編程忠告!Rob Pike,目前谷歌公司最著名的軟件工程師之一,曾是貝爾實驗室Unix開發團隊成員,締造Go語言和Limbo語言的核心人物。 Rob Pike&#xf…

Column count doesn't match value count at row 1 原因

mysql 提示 : Column count doesnt match value count at row 1錯誤,SQL語句中列的個數和值的個數不等, 如: insert into table1 (field1,field2) values(值1,值2,值3 ) 列只有2個,值 卻有3個…

MarkDowm快捷鍵大全

文章目錄一:菜單欄二:文件三:編輯四:段落五:格式六:視圖一:菜單欄 文件:altF 編輯:altE 段落:altP 格式:altO 視圖:altV 主題&#x…

Kinect2.0-空間長度測量

1. 鼠標左鍵按下選擇起點,拖動鼠標,左鍵放開,確定終點。 實現效果1實現效果22. 在linux下使用libfreenect2開源多平臺驅動來獲取kinect2.0的傳感器信息,得到深度信息,并通過libfreenect2提供的getPointXYZ函數&#xf…

帶數據庫的智能合約

編寫使用數據庫的智能合約 前面一直在搗鼓EOS網絡搭建的相關東西。然而今天比較不走運的是,興致勃勃的把源碼版本升到4.0,在編譯的時候如我所猜想的出現了一系列問題,正一籌莫展的時候,導師突然問了我一個關于合約如何操作數據庫的…

沒有完美的軟件:編程永遠不容易

摘要:很多人想用十全十美來修飾一樣東西,比如軟件,對于客戶來說,當然希望他們的軟件能做到完美。雖然很多專家說利用一些規范可以讓軟件達到更好!但是在現實開發中,真的會有那么完美的軟件嗎? 最…

Eclipse斷點調試出現Source not found

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我的情況是和網上說的都不一樣,我真的也沒有想到這么坑, 我居然無意寫了一個死循環,dao/mapper調sql…

Memory Compression這到底是個什么東西?

Memory Compression這到底是個什么東西? Memory Compression這個進程,經過我的查詢說是內存壓縮功能,作用是壓縮內存讓內存占用更低,但是為什么這個進程瘋狂占用我的內存,我用的Win10 8G,通過資源監視器查看…

MySQL 5.6 for Windows 解壓縮版配置安裝

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 MySQL是一個小巧玲瓏但功能強大的數據庫,目前十分流行。但是官網給出的安裝包有兩種格式,一個是msi格式&#xf…

safari的一些問題

1、圖片過大時,在webview中是不會加載顯示的。2、如果是通過一個地址返回的base64數據給image,記住要在后臺進行base64_decode解析數據,這樣才是真實的圖片數據,后臺保存數據的時候不要保存"data:image/png;base64,"這一…

代碼審查“思維導圖”

摘要:隨著人們對軟件質量要求的不斷提高,軟件開發的每一個環節都應該得到十足的重視,俗話說:“細節決定成敗”,就此,本文提供了一個代碼審查“思維導圖”,希望對所有碼農們有所幫助。 代碼審查&…

thinkCMF----導航高亮顯示

導航高亮顯示&#xff0c;有多種方法&#xff0c;這里給出一個簡單的表示下&#xff1a; <a href"__ROOT__"><span class"text db">網站首頁</span><span class"eng db">HOME</span> </a> …