reverse を使って逆再生にエンコードする。ただし音声の逆再生は未対応なので別のアプリケーションを使う必要がある。trim 必須なので予めカットしておいた方が処理速度は速い。

2015年7月24日音声の逆再生フィルタも追加された
avfilter: add areverse filter :: git.videolan.org Git – ffmpeg.git/commitdiff

reverse は最近追加されたフィルタなので master を利用する。
avfilter: Add reverse filter :: git.videolan.org Git – ffmpeg.git/commitdiff

trim フィルタの使い方

基本コマンド

開始10秒から20秒までを取り込んで20秒から10秒にする
ffmpeg -i input -vf trim=10:20,reverse -an output

開始10秒から20秒までを取り込んで20秒から10秒にする(音声を含む)
ffmpeg -i input -filter_complex trim=10:20,reverse;atrim=10:20,areverse output

複数の時点を逆再生してつなげる場合は concat でつなげる後ろの PTS を 0 に変える。秒数で指定するとつなぎ目でシーンが重複するので映像ならフレーム単位、音声ならサンプリング単位でつなげるときれいにつながる。

30秒から 10秒まで
ffmpeg -i input -vf split[a][b];[a]trim=10:20,setpts=PTS-STARTPTS,reverse[a1];[b]trim=20:30,reverse[b1];[b1][a1]concat=2:1:0 -an output

30秒から 10秒まで(音声を含む)
ffmpeg -i input -filter_complex split[a][b];[a]trim=10:20,setpts=PTS-STARTPTS,reverse[a1];[b]trim=20:30,reverse[b1];asplit[c0][d];[c0]atrim=10:20,asetpts=PTS-STARTPTS,areverse[c1];[d]atrim=20:30,areverse[d1];[b1][d1][a1][c1]concat=2:1:1 output

20秒から 10秒まで、30秒から 20秒まで
ffmpeg -i input -vf split[a][b];[a]trim=10:20,reverse[a1];[b]trim=20:30,setpts=PTS-STARTPTS,reverse[b1];[a1][b1]concat=2:1:0 -an output

20秒から 10秒まで、30秒から 20秒まで(音声を含む)
ffmpeg -i input -filter_complex split[a][b];[a]trim=10:20,setpts=PTS-STARTPTS,reverse[a1];[b]trim=20:30,reverse[b1];asplit[c0][d];[c0]atrim=10:20,asetpts=PTS-STARTPTS,areverse[c1];[d]atrim=20:30,areverse[d1];[b1][d1][a1][c1]concat=2:1:1 output

【ffmpeg】動画・音声を連結する concat の使い方

公式ドキュメント

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)