コンテナとコーデック

Derek Herman
Derek Herman
Joe Medley
Joe Medley

複数のブラウザをサポートするには、FFmpeg を使用して .mov ファイルを MP4 コンテナと WebM コンテナの 2 つの異なるコンテナに変換する必要があります。実際の運用では、コーデックを同時に指定します。現時点では、FFmpeg にデフォルトを使用するようにしています。

これらのコンセプトを初めて使用する場合は、先に進む前にメディア ファイルの基本をご覧ください。また、FFmpeg がインストールされていない場合は、メディア アプリケーションの基本を読んで、Docker で設定してください。

ここでは、推奨される Docker インストールと、ウェブ用にメディア ファイルを準備するglocken.mov ファイルを media ディレクトリに追加しています。このセクションのすべてのコマンドでは FFmpeg バージョン 4.3.2 を使用しました。

コンテナ

まず、ファイル内に音声ストリームと動画ストリームの両方のストリームがある、.mp4.webm のファイル拡張子を持つ .mov ファイルから 2 つのコンテナを作成する必要があります。コンテナとストリームの違いがわからない場合は、メディア ファイルの基本をご覧ください。

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM の作成には MP4 よりも時間がかかります。これは結果を見ても不思議ではありませんMP4 は元のファイルのサイズの約 83% に圧縮されますが、WebM は元のサイズの 78% に圧縮されます。ただし、さらに小さくすることもできます。実際の結果は一定ではありません。FFmpeg 4.2.2 ではデフォルトの動画ビットレートを 200k に設定し、4.3.2 ではデフォルトのビットレートを設定しない点に注意してください。そのため、動画は元の動画の単なる4%ではなくなります。これは、メディア ファイルが保存されているフォルダで ls -a bash コマンドを使用して確認できます。

例:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

小さなファイルを取得するには、次のようにします。

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

実施したタスクを確認する

結果を確認するには、メディア アプリケーションの基本で説明したように、FFmpeg と Shaka Packager を使用します。

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

コーデック

次はコーデックです。メディア ファイルの基本で説明したように、コーデックはコンテナ(ファイル形式)と同じものではありません。同じコンテナタイプの 2 つのファイルで、異なるコーデックを使用して圧縮されたデータを保持できます。たとえば、WebM 形式では、Vorbis または Opus を使用して音声をエンコードできます。コーデックを変更するには FFmpeg を使用しますたとえば、次のコマンドは、vorbis オーディオ コーデックと av1 動画コーデックを含む .mkv ファイルを出力します。

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

この例では、-c:a フラグと -c:v は、それぞれオーディオ コーデックと動画コーデックを指定するためのものです。

[メディア変換] ページには、コーデックを変換するために必要なコマンドが一覧表示されます。次の表は、FFmpeg で WebM ファイルと MP4 ファイルのコーデック変換を実行するために使用されるライブラリをまとめたものです。これらはそれぞれ DASH と HLS で推奨される形式です。

動画

コーデック 広告表示オプション ライブラリ
av1 WebM、mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

音声

コーデック 広告表示オプション ライブラリ
AAC MP4 AAC
opus WebM libopus
vorbis WebM libvorbis

次に、新しく作成したファイルのビットレートを変更する方法を説明します。