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

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

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

まず、コマンドラインから以下を試します:

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

ご協力いただければ幸いです。

答え1

問題は解決しました。オーディオを削除していなかったため、ビデオの全時間にわたって、ほぼ空のオーディオ ファイルが再生されていたと考えられます。

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

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

答え2

オーディオのスピードアップについて、さらに詳しくはこちらをご覧ください。最大 2 倍までスピードアップできますが、さらにスピードアップするように設定することもできます (ソース):

オーディオのスピードを上げる/下げる

スピードを上げたり下げたりできますオーディオatempo オーディオ フィルターを使用します。オーディオの速度を 2 倍にするには:

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

atempo フィルターは、0.5 から 2.0 までの値しか使用できません (つまり、元の速度の半分以下には遅くできず、入力の 2 倍以下には速くできません)。必要な場合は、複数の atempo フィルターを連結してこの制限を回避できます。次の例では、オーディオ速度が 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

関連情報