reverse
を使って逆再生にエンコードする。ただし音声の逆再生は未対応なので別のアプリケーションを使う必要がある。trim
必須なので予めカットしておいた方が処理速度は速い。
2015年7月24日音声の逆再生フィルタも追加された
avfilter: add areverse filter :: git.videolan.org Git – ffmpeg.git/commitdiff
reverse
は最近追加されたフィルタなので最新Git を利用する。
avfilter: Add reverse filter :: git.videolan.org Git – ffmpeg.git/commitdiff
基本コマンド
開始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 の使い方
公式ドキュメント