reverse, areverse
フィルタを使って逆再生にエンコードする。長時間逆再生にすると大量にメモリを消費するのであらかじめ時間を区切った方が処理が速く済む。
基本コマンド
ffmpeg -i input -filter_complex reverse;areverse output
最初は普通再生で次に逆再生をつなげる。
ffmpeg -i input -filter_complex "[0:v]reverse,fifo[r];[0:a]areverse,afifo[ar];[0:v][0:a][r][ar]concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output
動画の途中から逆再生にする場合は時間指定してあらかじめコピー出力する。
ffmpeg -ss [start_sec] -i input -t [duration] -c copy output
ffmpeg -ss 5 -i input -t 5 -c copy output
ffmpeg で指定時間でカットするまとめ
【ffmpeg】動画・音声を連結する concat の使い方
5秒から10秒までを逆再生にする。カット開始時間が早い場合は予めカットしなくてもこちらのコマンドでもよい。setpts, asetpts
フィルタで5秒を指定し忘れないこと。
ffmpeg -i input -filter_complex "trim=5:10,setpts=PTS-STARTPTS,reverse;atrim=5:10,asetpts=PTS-STARTPTS,areverse" output
trim フィルタの使い方
映像と音声の pts を扱う setpts, asetpts
追記
trim
フィルタを使うと PTS がおかしくなるので予め動画をカットするように文章を直した。2018年2月21日
trim
フィルタを使う例を追加し直した。2019年2月13日
PTSがずれて意図した出力になっていないのを直した。2019年8月13日
公式ドキュメント