web-dev-qa-db-ja.com

FFMPEG-ビデオをタイムラプスに変換します

Flashビルダー(アクションスクリプト3)でffmpegを使用して、ビデオをビデオのタイムラプスに変換しています。これを行うためにsetptsを使用する方法を考え出しましたが、結果の出力ファイルは入力と同じ長さです(時間の経過後に最後のフレームのみが表示されます)。渡された設定に基づいて期間を変更しますffmpegへ。

私は最初にコマンドラインから以下を試しています:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

どんな助けでも大歓迎です!

15
Sandwich

問題が解決しました。私はオーディオを削除していなかったので、おそらくビデオのフルタイムのほぼ空のオーディオファイルを再生していました。

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-anは、ビデオからオーディオを削除します。

21
Sandwich

オーディオの高速化に関する詳細については、こちらをご覧ください。あなたは2倍まで行うことができますが、あなたはそれをさらにスピードアップするようにだますことができます( source ):

オーディオのスピードアップ/スローダウン

アテンポオーディオフィルターを使用すると、audioを加速または減速できます。オーディオの速度を2倍にするには:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

アテンポフィルターは、0.5〜2.0の値の使用に制限されています(そのため、元の速度の半分以上に遅くなり、入力の2倍以下に高速化できます)。必要に応じて、複数のアテンポフィルターをつなぎ合わせることで、この制限を回避できます。以下は、オーディオ速度を4倍にします。

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

複雑なフィルターグラフを使用すると、ビデオとオーディオを同時に高速化できます。

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

2
Sun