大きなビデオファイルをさまざまな形式(avi、mp4、mkv、flv)でアップロードできるサイトがあります。アップロードされた大きなファイルから1分間の「サンプル」を生成する必要があります。サンプルは、元のファイルと同じ形式、同じフレームサイズ、ビットレートである必要があります。ファイルの一部を新しいファイルに単純に切り取る方法はありますか?できればffmpeg(またはffmpegが不可能な場合は他のツール)で。
4 に答える
まず、ビデオファイルが実際にどのように機能するかを理解する必要があります。これを説明する一連のチュートリアルは次のとおりです。インターネットビデオの過度に単純化されたガイド。
次に、サンプルのスライスに役立つさまざまなツールを試すことができます。1つはflvtool(入力がFLVの場合)またはFFmpegです。FFmpegを使用すると、開始時間と停止時間を指定でき、要求したものだけを切り取ろうとします(ただし、スライスを開始するには、最も近いキーフレームを見つける必要があります)。
これは、input.flvというファイルを読み取り、ビデオの15秒後に開始し、次の60秒を切り取るFFmpegコマンドですが、それ以外の場合は、オーディオコードとビデオコーデックのパラメーターを同じにして、出力ファイルに書き込みます。 :
ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv
最後に、必要に応じて、CまたはC ++(FFmpegのlibavライブラリを使用)またはJava(Xugglerを使用)でコンピューターコードを記述してプログラムでこれを行うことができますが、これはユースケースとしてはかなり高度です。
自動とビデオの同期を維持するのに問題がある場合は、次のことが役立つ場合があります(別のWebサイトにあります)。
ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv
Evanが指摘しているように、受け入れられた回答のアプローチでは、A/V同期が失われる可能性があります。ただし、-sameq
削除されたため、彼の解決策は正しくありません。
https://trac.ffmpeg.org/wiki/で述べられているように、-ss
オプションを探すこと-i
は後ではなく前に来るべきです。これで問題が解決しました。
次のオプションは、-fs
スイッチを使用することです。例:
ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv
選択したソースから500メガバイト(500×1000×1000バイト+「多重化オーバーヘッド」)を抽出します。–お分かりのように、ファイルサイズに基づく
一つの愛。そして尊重しなさい。