この記事では、コンテナの概念や、ストリーミングで使用できる多くのコーデック形式の一部など、メディア ファイルの基本について説明します。また、適応型ストリーミング、ビットレート、解像度などのトピックについても簡単に説明します。これらのトピックについては、後のセクションで詳しく説明します。
動画ファイルの提供
ビデオカメラから RAW ファイルを取得して、そのままウェブにアップロードできると思われるかもしれません。実際、YouTube や Vimeo などの動画ストリーミング サイトでは、まさにそのように行えます。また、ライブ配信機能も提供されています。通常は、カメラの HDMI ポートに接続し、キャプチャカードで処理します。これらのサービスを使用すると、動画の処理とアップロードが大幅に簡素化されます。たとえば、アダプティブ ストリーミングやさまざまな解像度に必要な多数のファイルやマニフェストの生成が不要になります。さらに、セルフホストを面倒なものにしている、複雑で微妙な要件が他にもたくさんあります。ユーザーのサイト利用状況を重視する場合、独自のサイト(または別のメディア サーバー)から動画を準備して配信することは、カメラの元のファイルをアップロードするよりも少し複雑です。
動画ファイルにはさまざまな形式があります。カメラから出力される形式は通常 .mov
ファイルですが、最新のミラーレス カメラを使用している場合は .mp4
です。ただし、.mov
は録画や編集などの初期のポストプロダクション プロセスには適していますが、ファイルサイズが大きいため、ウェブ経由のストリーミングには適していません。また、4K の未加工 .mp4
のファイルサイズは、モバイルでそのファイルを再生することを非常に困難にします。ブラウザは異なるファイル形式をサポートしているため、アダプティブ ストリーミングをサポートする場合は、最適化された複数のファイルと、必要に応じてマニフェストを作成する必要があります。ファイルを変換する前に、ファイルとその特性に関する基本事項を理解しておく必要があります。
コンテナ、コーデック、ストリーム
オペレーティング システムのシェルに表示されるファイルはコンテナであり、ファイル拡張子(.mp4
、.webm
、.ogg
など)で識別されます。コンテナには 1 つ以上のストリームが格納されます。メディア ファイルには、ここで説明するよりもはるかに多くの形式のストリームを任意の数だけ含めることができます。
このセクションの後半で使用するサンプルファイルには、音声ストリームと動画ストリームの 2 つのストリームが最大で含まれています。その他のタイプには、字幕とデータがありますが、どちらもこの記事の範囲外です。音声ストリームと動画ストリームが別々に処理される場合があります。ほとんどのファイルには、1 つの音声ストリームと 1 つの動画ストリームのみが含まれます。
音声ストリームと動画ストリーム内で、実際のデータはコーデックを使用して圧縮されます。コーデック(コーダ/デコーダ)は、動画データまたは音声データの圧縮形式です。同じコンテナのファイルでも、コンテンツが異なるコーデックでエンコードされている可能性があるため、コンテナとコーデックの区別が重要です。
次の図は、この構造を示しています。左側は、2 つのストリームを含む基本的なコンテナ構造です。右側は、1 つの WebM ファイルの構造の詳細を示しています。

WebM コンテナ内のファイルは他の形式よりも数桁小さいため、モバイル サイトのストリーミングに適しています。ただし、最新のコンテナとコーデックをサポートしていないブラウザもあります。たとえば、WebM は高品質のオープンソース オプションとしてウェブ専用に作成されましたが、まだすべてのデバイスでサポートされているわけではありません。特に Safari は、使用できる記事の執筆時点では、埋め込み動画の WebM をサポートしていません。ただし、WebM は WebRTC で使用される VP8 コーデックと VP9 コーデックを部分的にサポートしています。そのため、フォールバック動画を提供する方法が最善です。
コーデック形式
多くのファイル形式は、同じコンテナ内で複数のコーデックをサポートしています。使用可能な動画コーデックとオーディオ コーデックの完全なリストは、ウェブサイト全体に相当します。先ほどお伝えしたリンクは、ウェブで使用できる機能に関する MDN のリストです。現在推奨されているファイル形式と、使用される可能性のあるコーデックは次のとおりです。ファイル形式のリンクをクリックすると、その形式をサポートしているブラウザを確認できます。
ファイル形式 | 動画コーデック | オーディオ コーデック |
---|---|---|
MP4 | AV1、AVC(H.264)*、VP9 | AAC |
WebM | AV1、VP9* | Vorbis、Opus |
* は、優先される動画コーデックを示します。
ビットレートと解像度
ビットレートは、1 秒間のストリームのエンコードに使用される最大ビット数です。1 秒のストリームのエンコードに使用されるビット数が多いほど、詳細と忠実度が高くなります。このコンセプトの詳細については、ビットレートをご覧ください。
解像度は、1 フレームの動画の情報量で、各ディメンションの論理ピクセル数で表されます。このコンセプトについて詳しくは、解決策をご覧ください。
次に、メディア アプリケーションの基本で、Shaka Packager と FFmpeg の 2 つのコマンドライン ツールを使用してこれらの特性を調べる方法について説明します。