私はとても混乱しています…オーディオ/ビデオコーデック(これは明らかに「エンコーダ/デコーダ」の略語で、「モデム」が本当は「変調器/復調器」であるようなものです)とオーディオ/ビデオフォーマットの違いは何ですか? (私は正しい用語を使っているのでしょうか?)
例:何かが「MPEG-4」であると言うことと、何かが「DivX」コーデックを使用していると言うことの違いは何ですか?なぜWindows Media Playerは.mpg
ファイルを実行したり、しなかったりするのですか?
また、以下のうちどれがコーデックで、どれがファイル形式で、どれがどちらでもないのでしょうか?
- Quicktime MOV
- エムペグ
- WMV
- FFmpeg
- AVC
- Xvid
- DivX(その回文であるXvidとどう違うのか?
- H.264
96 user541686 2011-06-23
主な定義をいくつか紹介します
- コーデック(例えば、H.264、HEVC、VP9)は、ビデオまたはオーディオ部分のみを担当し、1つまたは複数のコーデックは、コンテナにマージすることができます
- コンテナ(例えば、MP4、MKV)は、それらを一緒に維持するための責任があり、これはまた、通常、あなたが選択したあなたのメディアプレーヤーで開くものです
- 特定のエンコーダ (x264、libvpx など) は、入力ストリームをコーデックに準拠したビットストリームに変換する役割を果たします。1 つの特定のコーデックに対して複数のエンコーダーが存在することがよくあります
ご覧のように、ここで少し説明しなければならないことがあります
コーデックとは?
コーデックとは、エンコーダ/デコーダの略で、基本的には以下のような意味になります。エンコーダによって生成されたデータは、常に適切なデコーダによってデコードされる。これはビデオやオーディオにも当てはまりますが、暗号化についても考えることができます(エンコーダーは暗号化されたメッセージを表示するために適切なデコーダーを必要とします)
現在では、ビデオコーデックが指定されると、それに参加する機関は、通常、標準の構文を指定するだけです。例えば、彼らは言うだろう。”ビットストリームのフォーマットはこうでなければならない」、「ここにある0x810429AAB
はそれに変換される」などと言います。多くの場合、参照用のエンコーダとデコーダが提供されますが、そのようなフォーマットに完全に一致するようにエンコーダをどのように書くかはメーカー次第です
これは、あなたが非常に同じコーデックのために非常に多くのエンコーダを見つける理由であり、それらのいくつかは、さらに商業的なものです
事例-H.264
用語をごちゃまぜにする前に、例を挙げてみましょう。H.264 の場合を考えてみましょう。標準の名前は H.264 であり、実際のエンコーダの名前ではありません。Mainconcept は非常に優れた商用エンコーダですが、x264 はフリーでオープンソースのものです。もちろん、どちらも良い品質を提供すると主張しています
エンコーディングを最適化できるという事実だけで、ここでは競争になります。どちらのエンコーダーも、H.264に準拠したデコーダーで常にデコードできる標準化されたビットストリームを提供します
To summarize
ということで、全体的に言えば、エンコーダーがそうなります
- ビデオを撮る
- は有効なビットストリームを生成します
その後、ビットストリームはコンテナに多重化されます
デコーダーが
- はその有効なビットストリームを取ります
- からビデオフレームを再構築します
どちらもコーデック規格に準拠しています。それだけだ!
Current Codecs
最近では、おそらく以下に挙げるコーデックでエンコードされた動画しか見かけることがありません。興味深いことに、それらのほとんどすべてがMotion Picture Experts Group (MPEG)によって作成されました。しかし、他にもいくつかのロイヤリティフリーのコーデックがあります。例えば、MPEG規格の競合相手であるGoogleやAlliance for Open Mediaによって作成されたコーデックなどです
MPEG」はコーデックとコンテナの両方を指すことができることに注意してください。これは混乱に追加されますが、単に “MPEG” だけでは何も意味がないことを知っています
MPEG-2
MPEG-2 はかなり古いものです。最初に公開されたのは 1996 年です。MPEG-2ビデオは主にDVDやテレビ放送、例えばDVB-Tや衛星放送、互換性が重要なレガシーアプリケーションに使用されています。MPEG-2ビデオは、ほとんどの場合、.MPGコンテナで発見されています
MPEG-4 Part 2
これはおそらく、2000年代半ばにウェブ用の動画をエンコードするために主に使われていたものだと思いますが、その間にそれに取って代わられてしまいました。これは実用的なファイルサイズで良質な品質を提供しており、600 MB の CD に 90 分の長さの映画全体を書き込むことができることを意味します (MPEG-2 では DVD が必要でしたが、私の答えはこちらを参照してください)。それはもうHDや4Kコンテンツのためにはあまりうまく機能しません
MPEG-4パート2ビデオを出力するいくつかのエンコーダは、DivX、そのオープンソースのリップオフXviD、およびネロデジタルです
MPEG-4パート2の動画はほとんどがAVIコンテナに入っていますが、MP4もよく見られます
これは、MPEG-4 Advanced Video Coding (AVC)またはH.264としても知られており、今日最も使用されているコーデックです。それは、小さなファイルサイズで良い品質を提供していますので、完全にインターネットやモバイルデバイス用のビデオのすべての種類に適しています。あなたは、携帯電話からビデオカメラまで、ほぼすべての現代的なアプリケーションでH.264を見つけることができます。ブルーレイディスクでは、ビデオは現在、H.264でエンコードされています
それのためのいくつかのエンコーダーは、次のとおりです。x264、NVENC(NVIDIAから)、Mainconcept。ビデオは主にMP4、MKVまたはMOVコンテナで来る
MPEG-H Part 2 とも呼ばれ、MPEG-4 Part 10 / AVC / H.264 の後継となる。より高い解像度(8Kまで)を目指しており、H.264 に比べてエンコーディング性能(品質とビットレートの面で)が最大 50% 向上しています(本論文などを参照してください)
この規格は2013年に発表され、徐々に、IPTVやオンライン動画伝送などで利用され始めています。また、HEVCはAppleがiOS上で動画や画像を保存するために使用している(HEIFを使用)。しかし、HEVCに関連した複数の特許プールが存在することから、多くの企業(Appleを除くほぼすべての企業)がロイヤリティーフリーの代替品にシフトしている。また、HEVCはすべてのブラウザでネイティブにサポートされていないため、ウェブストリーミングには使えません
最もよく知られているエンコーダはx265です。NVENCもあります。動画は通常、MP4コンテナに入っています
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)に従って同期させ、それらが正確に同じ時間に表示されるようにします。また、必要に応じてストリーミングサーバのための情報を追加し、ストリーミングサーバがファイルのどの部分をいつ送信するかを知ることができるようにします
人気の容器を見てみましょう
Popular containers
動画はほとんどが以下のような容器に包まれています。他にもあまり人気のないものもありますが、私が言ったようにほとんどがそれらです
AVI
Audio Video Interleave – これは最も基本的なコンテナで、オーディオとビデオをインターリーブするためのものです。1992年に書かれたもので、現在も使われていますが、レガシーとみなされているので、もう使わないでください
は MPEG-4 Part 14 としても知られており、QuickTime ファイル形式をベースにしています。これはH.264ビデオのためのゴー・ツー・フォーマットですが、HEVC、MPEG-4 Part 2、MPEG-2もラップしています
このコンテナはまた、あなたがビデオではなく、むしろAACエンコードされたオーディオ、また、.m4aファイル(ちょうど異なる拡張子)ではないので、非常に多くの.mp4ファイルを見つける理由は、オーディオのみをラップする可能性があります。拡張子 .m4v は通常、ビデオのビットストリームのために取られます
Matroskaビデオ(MKV)は、それがH.264からVP9に基本的に任意のコーデックをサポートしているように、最近ではよく見られるオープンソースと無料のファイル形式であり、もちろん多くのオーディオコーデック
WebMはMKVをベースにしており、主にVP9ビデオとOpusオーディオに使用されます
Ogg コンテナは、同じく Xiph.Org 財団によって作成された Theora ビデオコーデック (および Vorbis オーディオ コーデック) のために選ばれたコンテナです。これもフリーでオープンソースです(コーデックと同様)
FLV
Flashビデオフォーマットは、彼らのストリーミングアプリケーションで使用するために、Adobeによって作成されました。ストリーミングが行われる方法は、過去数年間で大幅に変更されているので、それはもうあまり使用されていません
人気のあるコーデックとフォーマット
また、以下のうちどれがコーデックで、どれがファイル形式で、どれがどちらでもないのでしょうか?
- Quicktime MOV:.movは、QuickTime File Formatのファイル拡張子で、Appleが作成したコンテナです。このコンテナは後にMP4用に適応されました。それはあらゆる種類のコーデックを運ぶことができます。Quicktimeは実際にはメディア全体のフレームワークであり、私の知る限りではコーデックそのものを指定していません
- MPEG(1、2、3、4)。Motion Picture Experts Groupによって定義された規格。詳細については、上記の私の投稿を参照してください
- WMV:Windows Media Videoのこと。実際にはAdvanced Systems Formatコンテナに包まれたコーデックで、拡張子は再び.wmvを使用しています。変な話ですが、そういうものです
- FFmpegです。これはコーデックでもコンテナでもありません。異なるコーデックとコンテナ間の変換も可能なビデオツールのライブラリです。FFmpeg は、コーデックとコンテナを作成するために、それぞれオープンソースの
libavcodec
とlibavformat
ライブラリに依存しています。今日のビデオツールのほとんどはこれをベースにしています - AVC:MPEG-4 Part 10またはH.264の同義語
- DivX: MPEG-4 Part 2 ビデオ用の別のタイプのエンコーダ
- Xvid: MPEG-4 Part2ビデオ用のエンコーダの一種。これはDivXのオープンソースのフリーバージョンで、もちろんいくつかの論争を巻き起こしました
- H.264:MPEG-4 Part 10またはAVCの同義語
余談ですが
私は正しい用語を使っているのでしょうか?
私は一度、誤解を避けるために “フォーマット “の代わりに “コーデック “と “コンテナ “を具体的に使用することを好むだろうと思います。コーデックとコンテナの両方がフォーマット(データがどのように表現されるべきか)を指定するので、フォーマットは理論的には何でもよいのです
それは、FFmpegの用語は、コンテナに「フォーマット」を使用することだろう。と区別するためでもある
libavcodec
, エンコード/デコード用ライブラリlibavformat
, コンテナ用のライブラリ
153 slhck 2011-06-23
一般的にメディアの「フォーマット」は、実際にはコンテナであり、オーディオストリーム(いくつかのオーディオコーデックの)とビデオストリーム(いくつかのビデオコーデックの)と、時には追加情報を含んでいます
FFmpegはコンテナでもコーデックでもありません。多くのコンバータや音楽プレーヤーの基盤となっているファイル変換用のライブラリ、コーデック、ソフトウェアの多目的スイートです
H.264/AVCとxvid/divxはコーデックです
AVI (どの divx/xvid ファイルがあるか)、mp4、mpeg はコンテナです
Quicktimeのmovはよくわからない – .movはコンテナ、quicktimeはコーデックです
3 Journeyman Geek 2011-06-23
コーデックs と コンテナ (ファイルフォーマット) があります。コーデックは、データがどのようにエンコード/デコードされるかを記述します。もう一つは、エンコードされたデータがどのようにファイル内に配置されるかを記述しています
ほとんどのメディアプレーヤーは複数のコーデックとコンテナタイプをサポートしています。これは紛らわしいので、より多くの情報のために私の参考文献を読むことをお勧めします
1 uSlackr 2011-06-23
フォーマットとは、特定のファイル形式の種類と圧縮の種類に与えられた名前であり(ほとんどの動画はサイズを抑えるために圧縮されています)、コーデックとは、実際にそれを圧縮して読み込んで、それを解凍して見る動画に変換することができるものです。つまり、片方はファイル形式の種類ですが、もう片方はソフトウェアの一部ということになります
通常はフォーマット名でほとんどの動画を参照しているので、QuicktimeのMOV、MPEG、WMVがフォーマットです
FFmpeg(聞いたことがない)は、様々なフォーマットを他のフォーマットに変換するソフトの名前のようです
AVCとH.264は同じで、HD動画をエンコードするためのフォーマットです
DivXは市販されているコーデックです
XvidはMPEG-4のコーデックです
-1 KCotreau 2011-06-23