題 什麼是編解碼器(例如DivX?),它與文件格式(例如MPG)有何不同?


我很困惑......音頻/視頻編解碼器(顯然是“編碼器/解碼器”的簡寫,有點像“調製解調器”真的是“調製器/解調器”)和音頻/之間有什麼區別?視頻格式?
(我甚至使用了正確的術語嗎?)

即:說什麼是“MPEG-4”和說某些東西使用“DivX”編解碼器有什麼區別?為什麼Windows Media Player有時會運行 .mpg 文件,有時不是?

此外,以下哪些是編解碼器,哪些是文件格式,哪些不是?

  • Quicktime MOV
  • MPEG(1,2,3,4)
  • WMV
  • FFmpeg的
  • AVC
  • XVID
  • DivX(它與它的回文有什麼不同,Xvid?)
  • H.264

88
2018-06-23 02:12


起源


6年後看我自己的問題,我能想到的是“你怎麼不知道這個?!” - Mehrdad


答案:


一些主要定義:

  • 編解碼器(例如,H.264,HEVC,VP9)僅負責視頻或音頻部分,並且一個或多個編解碼器可以合併到容器中。
  • 容器(例如MP4,MKV)負責將它們保持在一起,這也是您通常在所選媒體播放器中打開的容器。
  • 特定編碼器(例如,x264,libvpx)負責將輸入流轉換為符合編解碼器的比特流。對於一個特定的編解碼器,通常有多個編碼器。

如你所見,我們必須在這裡解釋一些事情。

什麼是編解碼器?

一個 編解碼器 編碼器/解碼器的縮寫,基本上僅僅意味著:編碼器生成的數據總是可以由適當的解碼器解碼。這恰好對視頻,音頻有效,但您也可以考慮加密(編碼器需要適當的解碼器來顯示加密的消息)。

如今,當指定視頻編解碼器時,通常會參與其中的機構 只指定語法 標準。例如,他們會說:“比特流格式必須像這樣”,“The 0x810429AAB 這裡將被翻譯成“等等。通常它們提供參考編碼器和解碼器,但是如何編寫編碼器以完全匹配這種格式取決於製造商。

這就是為什麼你會為同一個編解碼器找到這麼多編碼器的原因,其中一些甚至是商用的。

案例 - H.264

在我們混淆術語之前,讓我們舉個例子。考慮一下這個案例 H.264。標準的名稱是H.264 - 這不是實際編碼器的名稱。 MainConcept公司 是一個非常好的商業編碼器,而 X264 是一個免費和開源的。當然,兩者都聲稱能提供高質量的產品。

您可以優化編碼這一事實可以在這裡進行競爭。兩種編碼器都將提供標準化的比特流,始終可以通過符合H.264標準的解碼器進行解碼。

總結一下

總而言之,讓我們說一個編碼器將:

  • 拍攝視頻幀
  • 產生有效的比特流

然後將比特流多路復用到容器中。

解碼器將:

  • 採取有效的比特流
  • 從中重建視頻幀

它們都符合編解碼器標準。就這樣!


當前的編解碼器

這些天,您可能只會找到使用我將在下面提到的編解碼器編碼的視頻。有趣的是,差不多 所有 他們是由他們創造的 電影專家組 (MPEG)。但是還有其他一些免版稅的編解碼器,例如谷歌或開放媒體聯盟創建的那些,它們是MPEG標準的競爭對手。

請注意,“MPEG”可以指代編解碼器和容器,如下所示。這增加了混亂,但只知道“MPEG”本身並不意味著什麼,例如“我有一個MPEG格式的文件”是 非常 曖昧”。

MPEG-2

MPEG-2很老了。它的第一個公開發行是從1996年開始.MPEG-2視頻主要用於DVD和電視廣播,例如DVB-T或衛星以及兼容性很重要的傳統應用。 MPEG-2視頻主要存在於 .MPG 容器。

MPEG-4第2部分

這可能是在2000年代中期主要用於編碼網絡視頻的那個,但在此期間它已被取代。它提供了實用文件大小的高質量,這意味著你可以將一個90分鐘長度的整部電影刻錄到600 MB CD上(而使用MPEG-2則需要DVD, 在這裡看到我的答案)。它不再適用於HD或4K內容。

一些輸出MPEG-4 Part 2視頻的編碼器是 DivX的,它的開源ripoff XviD格式,和 Nero Digital

MPEG-4第2部分視頻主要出現在 AVI 容器,但是 MP4 經常也會看到。

MPEG-4 Part 10 / AVC / H.264

這也被稱為 MPEG-4高級視頻編碼(AVC) 要么 H.264;它是今天最常用的編解碼器。它在小文件大小時提供高質量,因此非常適合用於互聯網或移動設備的各種視頻。幾乎所有現代應用中都可以找到H.264,從手機到便攜式攝像機。在藍光光盤上,視頻現在以H.264編碼。

一些編碼器是: X264NVENC (來自NVIDIA), MainConcept公司。這些視頻主要是進來的 MP4MKV 要么 MOV 容器。

HEVC / H.265

也稱為MPEG-H第2部分,這是MPEG-4 Part 10 / AVC / H.264的後續版本。它的目標是更高的分辨率(最高可達 8K並且與H.264相比,可以提供高達50%的編碼性能(在質量與比特率方面)(參見 這篇報告, 例如)。

該標準於2013年發布,並且慢慢地,編解碼器開始越來越多地被使用,例如,用於IPTV或在線視頻傳輸。 Apple還使用HEVC來存儲視頻和圖像(使用 HEIF)在iOS上。然而,與HEVC相關的多個專利池的事實使得許多公司(幾乎所有公司除外)都轉向使用免版稅的替代品。 HEVC也是 不是原生支持的 所有瀏覽器都使其無法用於網絡流媒體。

最著名的編碼器是 X265。還有 NVENC。視頻通常都會出現 MP4 容器。

VP9和AV1

VP9 (VP8的繼任者)是一個主要由谷歌開發的編解碼器。它是開放的,免版稅的,和 在許多瀏覽器中實現。它的質量幾乎與HEVC一樣好,有時甚至更好(見 這篇報告 通過Netflix)。 VP9是您在支持YouTube的瀏覽器上觀看YouTube時獲得的。

VP9可以用。編碼 libvpx 編碼器,它經常出現 WebM的 要么 MKV 容器。

一些公司聚集在一起,形成了一個更強大的HEVC競爭者 - 但作為一個免版稅的替代品。 AV1 將成為VP9的繼任者,它基於應該成為VP10的東西。它得到了開放媒體聯盟的支持(由亞馬遜,思科,谷歌,英特爾,微軟,Mozilla和Netflix創立)。讀 更多關於它的信息

libaom 編碼器可用於生成AV1比特流,但它仍然是實驗性的。


什麼是格式(容器)?

到目前為止,我們只解釋了原始的“比特流”,這基本上只是真正的原始視頻數據。您實際上可以繼續使用這樣的原始比特流觀看視頻。但在大多數情況下,這還不夠或不實用。

因此,您需要將視頻包裝在容器中。原因有以下幾點:

  • 也許你想要一些音頻和視頻
  • 也許你想跳到視頻的某個部分(比如,“轉到1:32:20.12”)
  • 音頻和視頻都應完美同步
  • 視頻可能需要通過可靠的網絡傳輸,然後再分成數據包
  • 視頻甚至可能通過有損網絡(如3G)發送,然後分成數據包

由於所有這些原因,容器格式被發明,一些簡單,一些更先進。他們所做的就是將視頻比特流“包裝”到另一個比特流中。

容器將根據它們同步視頻和音頻幀 演示時間戳 (PTS),確保它們完全同時顯示。如果需要,它還將負責為流服務器添加信息,以便流服務器知道何時發送文件的哪個部分。

我們來看看一些流行的容器。


熱門容器

您會發現視頻大多包含在以下容器中。還有其他不那麼受歡迎的,但正如我所說,主要是,那些是:

AVI

音頻視頻交錯 - 這是最基本的容器,它只是交錯音頻和視頻。它寫於1992年,至今仍在使用,但被認為是遺產,所以不要再使用它了。

MP4

也被稱為 MPEG-4第14部分 並基於QuickTime文件格式。這是H.264視頻的首選格式,但它也包含了HEVC,MPEG-4 Part 2和MPEG-2。

這個容器也可能只包裝音頻,這就是為什麼你會找到這麼多.mp4文件而不是視頻的原因 AAC編碼 音頻,也在.m4a文件中(只是一個不同的擴展名)。擴展名.m4v通常用於視頻比特流。

MKV 和 WebM的

Matroska Video(MKV)是一種開源和免費的文件格式,現在經常被發現,因為它基本上支持從H.264到VP9的任何編解碼器,當然還有許多音頻編解碼器。

WebM基於MKV,主要用於VP9視頻和Opus音頻 - 當使用這些編解碼器時,它是網絡流視頻的首選容器。

奧格

Ogg容器是Theora視頻編解碼器(以及Vorbis音頻)的首選容器 編解碼器),也是由Xiph.Org基金會創建的。它也是免費和開源的(就像編解碼器一樣)。

FLV

Flash視頻格式由Adobe創建,用於其流媒體應用程序。它已經不再使用了,因為流媒體的方式在過去幾年中發生了顯著變化。


流行的編解碼器和格式

此外,以下哪些是編解碼器,哪些是文件格式,哪些不是?

  • Quicktime MOV.MOV 是的文件擴展名 QuickTime文件格式,這是一個 容器 由Apple創建。該容器後來適用於MP4。它可以攜帶各種編解碼器。 QuickTime的 實際上是一個完整的媒體框架,就我而言,它並沒有真正指定任何編解碼器本身。
  • MPEG(1,2,3,4):運動圖像專家組定義的標準。請參閱上面的帖子了解詳情。
  • WMV:Windows Media Video。它實際上是一個 編解碼器 裹著一個 高級系統格式 容器,使用 .WMV 再次擴展。很奇怪,但就是這樣。
  • FFmpeg的:這既不是編解碼器也不是容器。它是一個視頻工具庫,允許在不同的編解碼器和容器之間進行轉換。 FFmpeg依賴於開源 libavcodec 和 libavformat 分別用於創建編解碼器和容器的庫。您今天發現的大多數視頻工具都是基於它的。
  • AVC:MPEG-4 Part 10或H.264的同義詞。
  • DivX的:MPEG-4 Part 2視頻的另一種編碼器。
  • XVID:一種用於MPEG-4 Part 2視頻的編碼器。它只是DivX的開源免費版本,當然這引起了一些爭議。
  • H.264:MPEG-4 Part 10或AVC的同義詞。

旁注:

我甚至使用了正確的術語嗎?

我想曾經更願意專門使用“編解碼器”和“容器”而不是“格式”來避免誤解。理論上,格式可以是任何格式,因為兩種編解碼器  容器指定格式(即應如何表示數據)。

話雖如此, FFmpeg的 術語是對容器使用“格式”。這也是因為以下區別:

  • libavcodec,用於編碼/解碼的庫
  • libavformat,容器的庫

136
2018-06-23 08:58



現在,這就是人們可以正確地回答問題的問題。做得好。 - Francesco
很好的答案,但你錯過了Ogg容器格式。 - Ignacio Vazquez-Abrams
這是我一段時間以來見過的最棒的答案。非常感謝您的精彩解釋! :) - Mehrdad
@Mehrdad很高興我可以對這個問題有所了解。謝謝 :) - slhck
有時你希望你可以在答案上做多個upvotes :) - Dolf Andringa


通常,媒體“格式”實際上是一個容器,包含(某些音頻編解碼器的)音頻流和(某些視頻編解碼器的)視頻流,有時還包含其他信息。大多數'文件'你有一個基於容器而不是編解碼器的文件類型

FFmpeg既不是容器也不是編解碼器 - 它是用於轉換文件的多功能庫,編解碼器和軟件套件,是許多轉換器和音樂播放器的基礎。

H.264 / AVC和xvid / divx是編解碼器

AVI(divx / xvid文件是),mp4,mpeg是容器。

我不確定quicktime mov - .mov是一個容器,quicktime是一個編解碼器。


3
2018-06-23 02:18



沒有“Quicktime”編解碼器。 Quicktime是一個多媒體框架,包括.mov容器,用於編碼,解碼和顯示一系列編解碼器的軟件,以及Quicktime VR等其他好奇心。 - stib


編解碼器s和 集裝箱 (文件格式)。編解碼器描述瞭如何編碼/解碼數據。另一個描述了編碼數據如何放在文件中。

大多數媒體播放器支持多種編解碼器和容器類型。這很令人困惑,所以我建議你閱讀我的參考資料以獲得更多信息


1
2018-06-23 02:20





格式是給定特定文件格式類型和壓縮類型的名稱(大多數視頻被壓縮以保持大小不變),編解碼器可以實際壓縮它,讀取它並將其轉換為您通過解壓縮看到的視頻。換句話說,一個是文件類型,但另一個是軟件。

我們通常按格式名稱引用大多數視頻,因此Quicktime MOV,MPEG和WMV是格式。

FFmpeg(我從未聽說過這個)似乎是將各種格式轉換為其他格式的軟件的名稱。

AVC和H.264是相同的,並且是用於編碼HD視頻的格式。

DivX是商業銷售的編解碼器。

Xvid是MPEG-4的編解碼器。


-1
2018-06-23 02:16



ffmpeg幾乎是99%FOSS轉換器的後端。 - Journeyman Geek♦
這個答案是對的。在7個句子中,只有數字6和7是正確的,即使那些缺乏細節。 - jiggunjer