私はフラッシュ ビルダー (アクション スクリプト 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