どのように変換できますかsome.flv
またはsome.avi
またはsome.wmv
この動画がJW Playerで再生およびシークできるようにするために、FFmpegを使用しますか?
これは@abrahabによる最後のコメントへの回答です。
Nginxを介してファイルを疑似ストリーミングできるようにするために、ファイルをmp4box
する必要はありません。 MP4ストリーミングモジュールは、moovアトムの配置に関係なく処理します(mp4box
はmoov atomをファイルの先頭に移動します)。
500サーバーエラーの場合、mp4boxで「-frag」オプションを使用していますか? MP4ストリーミングモジュールは、断片化されたMP4ファイルを読み取ることができません。疑似ストリーミングでのmp4box
の良い使い方は、ビデオをインターリーブしてシークを向上させることです。 Moov atomシフトは追加の利点です。
私はいつもFFmpegでエンコードされたファイルをmp4box
に対して実行します
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
これにより、デフォルトで500ミリ秒のチャンクでMP4ファイルがインターリーブされます。
通常、MP4コンテナ内でx264ビデオを作成します。このオプションは、基本的にすべてのデバイスとブラウザでサポートされています。
以下で十分です。入力名とCRFオプションを必ず置き換えてください。後者は品質を設定します。正味の値の範囲は19〜25です。値が低いほど品質は高くなりますが、ビットレートも高くなります。
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
GUIの方法が好きな場合は、エンコーディングに Handbrake を使用することもできます。
faststart
オプションの使用次に、MP4コンテナのMOOVアトムを先頭に移動する必要があります。このatom(本質的には、MP4コンテナー内のデータの単位)には、ビデオ/オーディオストリーム自体に関する重要なメタデータが含まれます。-movflags faststart
はまさにそれを行うべきです。
FFmpegバージョンにこのオプションがない場合は、アップグレードを検討してください。アップグレードできない場合は、以下のツールのいずれかを使用して同じことを達成できます。
QTIndexSwapper 、Adobe AIRアプリケーション
MP4Box 、フリーでオープンソース、次のようなコマンドを実行します。ここで、間隔(ここでは500)を変更できます。
mp4box -inter 500 input.mp4
Pythonのqt-faststart 、Pythonがインストールされているすべての場所で機能します。
qtfaststart input.mp4
それだけです。
もちろん、ストリーミングの場合、実際にはビットレートを特定の範囲内に制限する必要があります。詳しくは レート制御方法に関する私のブログ投稿 を参照してください。
たとえば、-maxrate 2M -bufsize 2M
エンコードオプションに対して、エンコードを2 Mbit/sに制限します。これは720pビデオに十分な場合があります。もちろん、必要なビットレートはコンテンツの複雑さに依存します。これには試行錯誤が必要です。
これを行うことで、ストリーミングできないAVIまたはMP4を、すべてを再エンコードせずに単純に変換できます。
ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4
Moov atomを移動するだけなので、何も再エンコードする必要はありません。