コーデック(DivXなど)とは何ですか?また、ファイル形式(MPGなど)との違いは何ですか?


95

私はとても混乱しています...オーディオ/ビデオコーデック(明らかに「エンコーダ/デコーダ」の短縮形で、「モデム」が実際に「変調器/復調器」であるようなもの)とオーディオ/ビデオコーデックの違いは何ですか?ビデオフォーマット?
(正しい用語を使用していますか?)

すなわち:「MPEG-4」と言うことと「DivX」コーデックを使用することを言うことの違いは何ですか?Windows Media Playerが.mpgファイルを実行する場合と実行しない場合があるのはなぜですか?

また、次のうちどれがコーデックで、どれがファイル形式で、どれがどちらでもありませんか?

  • Quicktime MOV
  • MPEG(1、2、3、4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX(回文、Xvidとの違いは?)
  • H.264

2
6年後の自分の質問を見て、私が考えることができるのは「どうやってこれを知らないのか!」
Mehrdad

1
私たちはどこかから始めました。;)
ハシム

回答:


146

主な定義:

  • コーデック(H.264、HEVC、VP9など)は、ビデオまたはオーディオ部分のみを担当し、1つ以上のコーデックをコンテナにマージできます。
  • コンテナ(MP4、MKVなど)は、それらをまとめて保持する責任があり、これは通常、選択したメディアプレーヤーで開くものです。
  • 特定のエンコーダー(x264、libvpxなど)は、入力ストリームをコーデック準拠のビットストリームに変換します。多くの場合、1つの特定のコーデックに対して複数のエンコーダーがあります。

ご覧のとおり、ここでいくつか説明する必要があります。

コーデックとは何ですか?

コーデックは、エンコーダによって生成されたデータは、常に適切なデコーダによってデコードすることができる。基本的には次のことを意味し、エンコーダ/デコーダの略です。これはたまたまビデオ、オーディオに有効ですが、暗号化について考えることもできます(暗号化されたメッセージを表示するには、エンコーダーに適切なデコーダーが必要です)。

最近では、ビデオコーデックが指定されると、それに参加する機関は通常、標準の構文のみを指定します。たとえば、「ビットストリーム形式はこのようにする必要があります」、「0x810429AABここにそれを変換する」など。フォーマットは完全にメーカー次第です。

これが、まったく同じコーデック用の非常に多くのエンコーダーを見つける理由であり、そのうちのいくつかは市販のものさえあります。

事例– H.264

用語を混同する前に、例を見てみましょう。H.264の場合を考えます。標準の名前はH.264です。これは実際のエンコーダーの名前ではありません。Mainconceptは非常に優れた商用エンコーダですが、x264は無料のオープンソースエンコーダです。もちろん、どちらも良質を提供すると主張しています。

エンコードを最適化できるという事実だけが、ここでの競争になります。両方のエンコーダーは、H.264準拠のデコーダーで常にデコードできる標準化されたビットストリームを提供します。

要約する

全体として、エンコーダーが次のことを行うとだけ言ってみましょう。

  • ビデオフレームを撮ります
  • 有効なビットストリームを生成します

その後、ビットストリームはコンテナに多重化されます。

デコーダーは:

  • その有効なビットストリームを取る
  • それからビデオフレームを再構築します

どちらもコーデック標準に準拠しています。それで全部です!


現在のコーデック

最近では、おそらく以下で説明するコーデックでエンコードされたビデオのみを見つけるでしょう。興味深いことに、それらのほとんどすべては、Motion Experts Group(MPEG)によって作成されました。ただし、GoogleやAlliance for Open Mediaが作成したMPEG標準の競合製品など、その他のロイヤリティフリーのコーデックもあります。

以下に示すように、「MPEG」はコーデックとコンテナの両方を参照できることに注意してください。これは混乱を助長しますが、「MPEG」だけでは意味がないことを知っておいてください。たとえば、「MPEG形式のファイルがある」というのは非常に曖昧です。

MPEG-2

MPEG-2はかなり古いです。1996年からの最初の公開リリースです。MPEG-2ビデオは、DVDとTV放送(DVB-Tや衛星など)、および互換性が重要なレガシーアプリケーションに主に使用されます。MPEG-2ビデオは、主に.MPGコンテナにあります。

MPEG-4パート2

これはおそらく、2000年代半ばにWeb向けのビデオをエンコードするために主に使用されていたものですが、その間に取って代わられました。実用的なファイルサイズで高品質を提供します。つまり、長さ90分の映画全体を600 MBのCDに書き込むことができます(MPEG-2ではDVDが必要だったので、こちらの回答を参照してください)。HDや4Kコンテンツではうまく機能しなくなりました。

MPEG-4 Part 2ビデオを出力するエンコーダーには、DivX、オープンソースのリップオフXviD、およびNero Digitalがあります。

MPEG-4パート2ビデオのほとんどはAVIコンテナに入っていますが、MP4もよく見られます。

MPEG-4 Part 10 / AVC / H.264

これは、MPEG-4 Advanced Video Coding(AVC)またはH.264とも呼ばれます。現在最も使用されているコーデックです。小さいファイルサイズで高品質を提供するため、インターネットまたはモバイルデバイス用のあらゆる種類のビデオに最適です。H.264は、携帯電話からカムコーダーまで、ほとんどすべての最新のアプリケーションにあります。Blu-rayディスクでは、ビデオはH.264でエンコードされるようになりました。

そのためのエンコーダーは、x264NVENC(NVIDIA製)、Mainconceptです。ビデオは主にMP4MKV、またはMOVコンテナーで提供されます。

HEVC / H.265

MPEG-Hパート2とも呼ばれ、MPEG-4パート10 / AVC / H.264の後継です。高解像度(最大8K)を目指しており、H.264と比較して(品質とビットレートの点で)最大50%高いエンコードパフォーマンスを提供できます(たとえば、このペーパーを参照)。

この規格は2013年に公開され、ゆっくりと、たとえばIPTVやオンラインビデオ送信などにコーデックがますます使用され始めています。HEVCは、iOSでビデオと画像を(HEIFを使用して)保存するためにもAppleによって使用されます。ただし、HEVCに関連する特許プールが複数あるという事実により、多くの企業(ほとんどAppleを除く)がロイヤリティフリーの代替に移行しています。また、HEVCはすべてのブラウザーでネイティブにサポートされているわけではないため、Webストリーミングには使用できません

最も有名なエンコーダはx265です。NVENCあります。通常、ビデオはMP4コンテナーに入っています。

VP9およびAV1

VP9(VP8の後継)は、主にGoogleが開発したコーデックです。オープンでロイヤルティフリーで、多くのブラウザに実装されています。その品質はHEVCとほぼ同等であり、時にはさらに優れています(Netflixによるこのペーパーを参照)。VP9は、それをサポートするブラウザーでYouTubeを視聴すると得られるものです。

VP9はlibvpxエンコーダーでエンコードでき、多くの場合WebMまたはMKVコンテナーに含まれています。

一部の企業は、HEVCに対してさらに強力な競争相手を形成するために集まったが、ロイヤリティフリーの代替手段として。AV1はVP9の後継であり、VP10になるはずであったものに基づいています。Alliance for Open Media(Amazon、Cisco、Google、Intel、Microsoft、Mozilla、およびNetflixが設立)が支援しています。詳細はこちらをご覧ください

libaomのエンコーダは、AV1ビットストリームを生成するために使用することができますが、それはまだ実験的なものです。


フォーマット(コンテナ)とは何ですか?

これまで、基本的には生のビデオデータである生の「ビットストリーム」についてのみ説明してきました。実際には、このような生のビットストリームを使用してビデオを見ることができます。しかし、ほとんどの場合、それは十分ではないか、実用的ではありません。

したがって、ビデオをコンテナにラップする必要があります。いくつかの理由があります。

  • たぶん、あなたはビデオとともにいくつかのオーディオが欲しい
  • ビデオの特定の部分(「1:32:20.12に移動」など)にスキップしたい場合があります
  • オーディオとビデオの両方が完全に同期する必要があります
  • ビデオは、信頼できるネットワークを介して送信し、パケットに分割する必要がある場合があります
  • ビデオは損失の多いネットワーク(3Gなど)を介して送信され、パケットに分割される前に

これらのすべての理由から、コンテナ形式が発明されました。一部は単純なもので、一部はより高度なものです。それらはすべて、ビデオビットストリームを別のビットストリームに「ラップ」します。

コンテナは、プレゼンテーションタイムスタンプ(PTS)に従ってビデオフレームとオーディオフレームを同期します。これにより、正確に同時に表示されるようになります。また、必要に応じてストリーミングサーバーの情報を追加し、ストリーミングサーバーがファイルのどの部分をいつ送信するかを把握できるようにします。

人気のあるコンテナを見てみましょう。


人気のコンテナ

ほとんどの場合、ビデオは次のコンテナにラップされています。他にもあまり人気のないものがありますが、私が言ったように、主にそれは次のとおりです。

AVI

オーディオビデオインターリーブ—これは最も基本的なコンテナであり、オーディオとビデオをインターリーブするためだけにあります。1992年に作成され、現在も使用されていますが、レガシーと見なされているため、使用しないでください。

MP4

MPEG-4 Part 14とも呼ばれ、QuickTimeファイル形式に基づいています。これは、H.264ビデオに適した形式ですが、HEVC、MPEG-4 Part 2、およびMPEG-2もラップします。

このコンテナはオーディオのみをラップする場合もあります。そのため、ビデオではなくAACエンコードオーディオである.mp4ファイルが.m4aファイル(拡張子が異なる)でも非常に多く見つかります。通常、拡張子.m4vはビデオビットストリームに使用されます。

MKVおよびWebM

Matroska Video(MKV)は、H.264からVP9までの基本的にすべてのコーデック、そしてもちろん多くのオーディオコーデックをサポートしているため、最近よく見られるオープンソースの無料ファイル形式です。

WebMはMKVに基づいており、主にVP9ビデオとOpusオーディオに使用されます。これらのコーデックが使用される場合、Webストリーミングビデオに最適なコンテナです。

オッグ

Oggコンテナは、同じくXiph.Org Foundationによって作成されたTheoraビデオコーデック(およびVorbisオーディオコーデック)に最適なコンテナです。また、無料のオープンソース(コーデックと同様)です。

FLV

Flashビデオ形式は、ストリーミングアプリケーションで使用するためにAdobeによって作成されました。ストリーミングが行われる方法が過去数年間で大幅に変更されたため、これはあまり使用されていません。


一般的なコーデックとフォーマット

また、次のうちどれがコーデックで、どれがファイル形式で、どれがどちらでもありませんか?

  • Quicktime MOV.movは、Appleが作成したコンテナであるQuickTime File Formatのファイル拡張子です。このコンテナは後にMP4に適合しました。あらゆる種類のコーデックを伝送できます。Quicktimeは実際にはメディアフレームワーク全体であり、実際にはコーデック自体を指定するものではありません。
  • MPEG(1、2、3、4):Motion Picture Experts Groupによって定義された標準。詳細については、上記の私の投稿を参照してください。
  • WMV:Windows Mediaビデオ。実際には、Advanced Systems Formatコンテナにラップされたコーデックであり、.wmv拡張子を再び使用します。奇妙なことですが、それはそうです。
  • FFmpeg:これはコーデックでもコンテナでもありません。また、異なるコーデックとコンテナ間の変換を可能にするビデオツールのライブラリです。FFmpegは、コーデックとコンテナをそれぞれ作成するために、オープンソースlibavcodeclibavformatライブラリに依存しています。あなたが今日見つけるビデオツールのほとんどはそれに基づいています。
  • AVC:MPEG-4 Part 10またはH.264の同義語。
  • DivX:MPEG-4パート2ビデオ用の別のタイプのエンコーダ。
  • Xvid:MPEG-4パート2ビデオ用のエンコーダーの1つのタイプ。それはただのオープンソースであり、DivXの無料版であり、もちろん論争を巻き起こしました。
  • H.264:MPEG-4 Part 10またはAVCの同義語。

サイドノート:

正しい用語を使用していますか?

誤解を避けるために、「フォーマット」ではなく「コーデック」と「コンテナ」を具体的に使用した方がいいと思います。コーデックコンテナの両方が形式(つまり、データの表現方法)を指定するため、形式は理論的には何でもかまいません。

そうは言っても、FFmpegの用語では、コンテナに「フォーマット」を使用します。これは、次の違いがあるためでもあります。

  • libavcodec、エンコード/デコード用のライブラリ
  • libavformat、コンテナのライブラリ

33
さて、それは、質問に答えることを正しく呼び出すことができるものです。よくやった。
フランチェスコ

1
すばらしい答えですが、Oggコンテナ形式を逃しました。
イグナシオバスケス-エイブラムス

7
これは私がしばらく見た中で最も素晴らしい答えです。素晴らしい説明をありがとう!:)
Mehrdad

@Mehrdad喜んで被写体に光を当てることができました。ありがとう:)
slhck

1
回答に対して複数の賛成票を投じることができることを望む場合があります:)
ドルフアンドリンガ

3

一般に、メディアの「フォーマット」は実際にはコンテナであり、オーディオストリーム(一部のオーディオコーデック)とビデオストリーム(一部のビデオコーデック)および場合によっては追加情報が含まれます。ほとんどの「ファイル」には、コーデックではなくコンテナに基づいたファイルタイプがあります

FFmpegはコンテナーでもコーデックでもありません。多くのコンバーターや音楽プレーヤーの基礎となるファイル変換用のライブラリ、コーデック、ソフトウェアの汎用スイートです。

H.264 / AVCおよびxvid / divxはコーデックです

AVI(divx / xvidファイル)、mp4、mpegはコンテナです。

quicktime movについてはわかりません-.movはコンテナであり、quicktimeはコーデックです。


「Quicktime」コーデックはありません。Quicktimeは、.movコンテナ、さまざまなコーデックのエンコード、デコード、表示用ソフトウェア、Quicktime VRなどのその他の好奇心を含むマルチメディアフレームワークです。
stib 14

1

あるコーデック sおよびコンテナ(ファイル形式)。コーデックは、データのエンコード/デコード方法を記述します。もう1つは、エンコードされたデータがファイル内に配置される方法を説明しています。

ほとんどのメディアプレーヤーは、複数のコーデックとコンテナータイプをサポートしています。これは混乱を招くので、詳細については参考文献を読むことをお勧めします


-1

形式とは、特定のファイル形式タイプと圧縮タイプに付けられた名前です(ほとんどのビデオはサイズを小さくするために圧縮されます)。コーデックは、実際に圧縮、読み取り、解凍して表示されるビデオに変換できるものです。 。つまり、1つはファイルタイプですが、もう1つはソフトウェアです。

通常、ほとんどのビデオは形式名で参照されるため、Quicktime MOV、MPEG、およびWMVは形式です。

FFmpeg(私はこれを聞いたことがありませんでした)は、さまざまな形式を他の形式に変換するソフトウェアの名前のようです。

AVCとH.264は同じもので、HDビデオをエンコードするための形式です。

DivXは市販のコーデックです。

XvidはMPEG-4のコーデックです。


1
ffmpegは、ほとんどのFOSSコンバーターのバックエンドです。
ジャーニーマンオタク

この答えは間違っています。7文のうち、数字の6と7だけが正確です。詳細が欠けていてもです。
ジグガンジャー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.