反面教師あり学習

*/

反面教師あり学習

Negative Supervised Learning

実験動画編集のためのffmpegコマンド集

モチベーション

  • 長時間の実験を記録した映像から興味のある部分だけを取り出して解析に使うとか,動画からフレームをいくつか抜き出してデータセットを作る,みたいなシチュエーションがあった
  • 生データから解析用の動画を作る過程をffmpegのコマンドとして記述しておくと,大量の動画を処理できるようになったり,編集ミスによる手戻りが発生したときの対処が楽になった
  • いちいちffmpegのオプションを調べるのがめんどくさいのでメモがてら記事としてまとめる

コマンド

以下,コマンド集. 出力先のファイル名が重複してるときに確認無しで上書きさせるならffmpeg -yのようにオプションをつけるとよい. Jupyter Notebook上からコマンドを実行するときなんかに便利.

MTS形式の動画をMP4に変換しつつ,特定の区間を切り出す. また,MTS動画のインターレースも解除する(-deinterlace).

ffmpeg -i video.mts -ss hh:mm:ss.xxx -to hh:mm:ss.xxx \
    -vcodec libx264 -crf 18 -pix_fmt yuv420p -an -qscale 0 -deinterlace \
    output.mp4

動画の各フレームを静止画として保存する.

ffmpeg -y -i video.mp4 -qscale 0 images/%05d.png

# 1秒あたりの画像の枚数を`-r`オプションで指定
ffmpeg -y -i video.mp4 -qscale 0 -r 30 images/%05d.png

複数のMTS形式の動画を連結する(Windowsでもcopy /bとかでいけたはず).

cat a.MTS b.MTS > c.MTS

バラバラになった画像をくっつけて動画にする.

# 24fpsで抜き出された画像を24fpsでくっつける
ffmpeg -r 24 -i %05d.png -vcodec libx264 -pix_fmt yuv420p -r 24 output.mp4

# +音声
ffmpeg -r 24 -i %05d.png -i audio.mp3 -shortest -acodec copy -vcodec libx264 -pix_fmt yuv420p -r 24 output.mp4

# Twitterにアップロードするときは音声のビットレートをいじる
ffmpeg -r 24 -i %05d.png -i audio.mp3 -shortest -acodec aac -b:a 5000k -vcodec libx264 -pix_fmt yuv420p -r 24 output.mp4

特定のタイミングのフレームを動画から抜き出す

ffmpeg -ss 00:00:08 -i video.mp4 -vframes 1 frame.png

2つの画像系列を横にくっつける

FFMPEG Merge two videos into one with side-by-side same quality output - Stack Overflow

ffmpeg -i left/%05d.png -i -i right/%05d.png \
    -filter_complex hstack \
    -vcodec libx264 -pix_fmt yuv420p -r 24 output.mp4