HTML5互換の「みんなのためのビデオ」を入手するには、どのようなffmpegスクリプトが必要ですか?


12

Video for Everybodyを使用するために適切な形式のビデオを取得するには、ffmpeg / mencoder / some_other_CLI_appでどのコマンドのリストを実行する必要がありますか?

すなわち、と言う機械的なチュートリアルがあることを妨げる微妙な点はありますか

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

次に、Video for Everybodyコードをコピーしてページに貼り付けますか?

私の目標は、私がホストする個人のWebページにビデオを埋め込むことです。Flashフォールバックを備えたHTML5が推奨されるため、最も簡単な方法はVideo for Everybodyのようです。しかし、そのページでは、ビデオをさまざまな形式にエンコードする最も複雑な部分が残り、読者はビデオ形式に関する長くて完全な記事を読んで理解することができます。確かにこれは必要ありません。ユーザーが音声ファイルをさまざまな形式に盲目的に変換するためのコマンドのリストを提供できます。うまくいけば、ffmpegの第一人者がビデオでも同じことができるようになります。


1
疑似コードの例へのマイナーなコメント:.movHTML5ビデオにはありませんし、h.264拡張子もありません。そこ .264 NALユニットのための生の附属書Bのバイトストリームです。ビデオエンコーディングはロケット科学ではありませんが、概念を理解するには少し時間をかける必要があります。
-slhck

回答:


21

注:この回答は、元の投稿以降大幅に編集されています。現在は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 faststart2番目のパスにオプションを追加して、ビデオの初期読み込みを高速化します。

オーディオオプションの設定については、AACエンコーディングガイドを参照してください


1
段落の2013-12-19バージョンは、文の途中で切れます。「128キロビット/ sの再び、しかし、あなたは、Qを設定することができますオーディオデフォルト:値は0から500に100の範囲で可変ビットレート、デフォルトより良い高い手段である場合は」
アラン・デスメット

@slhckは非常に理にかなっていますが、私の2つの利点は、Oggをドロップしてmpegts / m3u8に置き換え、すべてのiOSデバイスまたはHLSを受け入れるデバイスをサポートすることです。.mp4ファイルを再利用して、mpmp-ts処理をffmpegに追加するだけです。
ポールグレゴワール14

@Mondain実際、MPEG-TS / .m3u8は一般にHTML5互換のビデオではありません。HLSサーバーが必要であり、ストリーミングについてもう少し詳しく知る必要がありますが、実際にはこの質問の範囲内ではありません。
slhck 14

良い点ですが、これまでの経験から、単純なhttpサーバーはm3u8をビデオタグに提供できます。通常行う必要があるのは、m3u8とtsのMIMEタイプをそれぞれのサーバー構成に追加することだけです。
ポールグレゴワール14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.