注:この回答は、元の投稿以降大幅に編集されています。現在は2017年です。ストリーミングの動作は以前とは異なります。このガイドでは、1つの特定の解像度で1つのビデオストリームの単純なプログレッシブダウンロードを想定しています。適応型ストリーミングはありません。
必要条件
まず最初に、必ず最新ffmpeg
バージョンをダウンロードしてください(静的ビルドをダウンロードしてくださいapt-get install ffmpeg
。電話などをしないでください)。理想的には、自分でコンパイルしてください。それほど時間はかかりません。
ほとんどのブラウザでサポートされているビデオを生成するには、常に最新の互換性テーブルを確認してください。すべてのブラウザーで機能する単一のコーデック/フォーマットはありませんが、MP4でH.264、WebMでVP9をそれぞれのオーディオコーデックで生成すると、Chrome、Firefox、Safari、およびIEの一部のバージョンがサポートされます。
WebM(VP9 / Vorbis)
FFmpeg VP9ガイドの推奨事項に従い、レート制約のある2パスエンコーディングアプローチを使用します。
ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm
ターゲットビットレートは、解像度、フレームレート、コンテンツの種類、および必要な品質によって異なります。2.5 MBit / sは、30 fpsのHDビデオに適した妥協点です。推奨事項については、このGoogleガイドをご覧ください。
MP4(H.264 / AAC)
FFmpeg H.264ガイドの推奨事項に従い、レート制約のある2パスエンコーディングアプローチを使用します。
ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4
ここで、H.264はそれほど効率的ではないため、ターゲットのビットレートはVP9ビデオよりも約50%高くする必要があります。-movflags faststart
2番目のパスにオプションを追加して、ビデオの初期読み込みを高速化します。
オーディオオプションの設定については、AACエンコーディングガイドを参照してください。
.mov
HTML5ビデオにはありませんし、h.264
拡張子もありません。そこで.264
NALユニットのための生の附属書Bのバイトストリームです。ビデオエンコーディングはロケット科学ではありませんが、概念を理解するには少し時間をかける必要があります。