FFmpegで動画を高速化しようとしていますか?FFmpegは動画を含むマルチメディアデータを扱うオープンソースのクロスプラットフォームソフトウェアです。しかし、コマンドラインインターフェースに不慣れな場合、動画の高速化のような簡単な操作でさえも戸惑うことがあります。
そこでこのチュートリアルでは、手順を簡単なステップに分けることで、より簡単に操作できるようにしました。FFmpegを初めて使う方でも、このソフトの正しいコマンドを理解することで、動画映像を高速化したり、タイムラプス効果を作ったり、再生時間を短くしたりすることができるようになります。
FFmpegで動画を高速化する方法
FFmpegを使用して動画を高速化するには、各動画フレームのプレゼンテーションタイムスタンプ(PTS)を操作する必要があります。PTSは、再生中に各フレームが表示されるタイミングを決定し、これらのタイムスタンプを変更することで、動画の速度を制御することができます。
これを行うには、主に2つの方法があります。Setpts動画フィルターを使用するか、動画をrawビットストリームフォーマットにエクスポートし、新しいタイムスタンプを使用して再マックスします。
方法1:Setpts動画フィルター
FFmpegでは、setpts(set presentation timestamp)フィルターは、動画フレームのPTS値を調整することができるツールです。PTSを設定することで、FFmpegで動画を効率的にスピードアップまたはスローダウンすることができます。これは、あなたが提供する数式に基づいてフレームのタイムスタンプを変更します。
例えば、動画の速度を2倍にするには、PTSを元の値の半分にスケーリングします:
ffmpeg -i input.mp4 -vf “setpts=0.5PTS” output.mp4
コマンドの各要素は、次のことを示します:
- -i input.mp4は入力動画の名前です。
- -vf “setpts=0.5PTS”は、setptsフィルターを使用してPTSを元の値の0.5倍に設定し、再生速度を2倍にします。
- output.mp4は出力動画を指定します。
- setpts=0.5PTS式は、PTSを0.5倍に設定します。つまり、すべてのフレームが2倍の速さで表示され、動画ファイルは2倍速で再生されます。
しかし、setptsフィルターを適用すると、動画の速度が変更されるだけで、オーディオは変更されないことを覚えておくことが重要です。(加速された動画と同期しないので)オーディオトラックも削除したい場合は、以下のように-anオプションを使うことができます:
ffmpeg -i input.mp4 -vf “setpts=0.5PTS” -an output.mp4
一方、動画の速度を元のレートの60倍など大幅に上げるには、“setpts=PTS/60”コマンドを入力すればよいです。このコマンドはPTSを60で割るので、動画は60倍の速さで再生されます:
ffmpeg -i input.mp4 -filter:v “setpts=PTS/60” -an output.mp4
FFmpegで動画を60倍にスピードアップし、特定のFPS(この場合は24FPS)で再生するために再サンプルするには、次のようにコマンドに“fps=24”を含めることができます:
ffmpeg -I input.mp4 -filter:v “setpts=PTS/60,fps=24” -an output.mp4
MiniTool MovieMakerクリックしてダウンロード100%クリーン&セーフ
方法2:Rawビットストリーム
FFmpegで動画を高速化するもう一つの方法は、rawビットストリームを使うことです。これは、動画ストリームをそのままに、動画フレームのタイムスタンプのみを変更するロスレスプロセスです。この方法は、動画の品質やコンテンツに他の変更を加えることなく、再生速度を変更する必要がある場合に最適です。次の操作を行ってください:
ステップ1. 動画をrawビットストリーム形式にコピーする
まず、動画ストリームをrawビットストリーム形式にコピーします。このプロセスでは、新しいタイムスタンプを作成しながら、動画ファイルをFFmpegが簡単に作業できる形式に変換します。
例えば、H.264でエンコードされた動画の場合、以下のコマンドを入力します:
ffmpeg -i input.mp4 -map 0:v -c:v copy -bsf:v h264_mp4toannexb raw.h264
このコマンドは、入力ファイル(input.mp4)から動画ストリームを抽出し、rawビットストリーム形式(この例ではraw.h264)に変換するので、動画の内容は変更されません。
ステップ2. 新しいタイムスタンプをコンテナにマキシングして作成する
動画をrawビットストリームに変換した後、rawストリームをMP4などのコンテナ形式にマキシングして戻すことで、新しいタイムスタンプを作成することができます。このステップでは、希望の再生フレームレートを指定し、出力動画の速度を決定します。例えば:
ffmpeg -fflags +genpts -r 30 -i raw.h264 -c:v copy output.mp4
このコマンドでは:
- -fflags +genptsはFFmpegに新しいPTS値を作成させます。
- -r 30は、再生フレームレートを30 FPSに調整します。出力動画の速度を制御するために値を設定することができます。
- -c:v copyは、動画ストリームが再エンコードされずにコピーされ、元の品質を保持するようにします。
-rの値を変更することで、希望する再生速度を実現できます。フレームレートを上げると動画が速くなり、フレームレートを下げると遅くなります。
結論
FFmpegで動画を高速化する方法は?上記のように、setpts動画フィルターまたはrawビットストリームを使用することで実現できます。