必要があってWebカメラを監視カメラとして使用したので、手順をメモしておきます。変化の少ない場所向け。VLCとFFmpegだけでなく、GPACも使用しているので注意。
キャプチャ
Webカメラを接続したら、VLCを実行し、メニューから「メディア (M)->変換/保存 (R)...」を開き、タブからキャプチャーデバイスを選択、入力デバイスを設定して、「変換/保存 (o)」ボタンを選択、新しいダイアログが開いたら出力先ファイルを設定して「開始 (S)」ボタンを押します。終了するときは停止してからVLCを閉じてください。
変化検出 (change detection)
撮影した動画は数時間に及ぶので、変化が起きたところを抽出する必要があります。FFmpegだと、以下のような感じで可能です。
change_detection.sh
ffmpeg -nostats -i test.mp4 -vf 'select=gt(scene\,0.1),showinfo' -vsync vfr -f image2 thumbnails-%02d.jpeg 2>&1 | grep Parsed_showinfo_1 > frame.txt
チャプターへの変換/埋め込み
FFmpegのshowinfoの出力形式は使いにくいので、チャプターに変換して動画に埋め込みます。
showinfo2chapter.sh
cat frame.txt | grep pts_time\: | sed -e s/^.*pts_time\:// | sed -e s/\\s.*$// | for c in `cat`;do i=`echo $c|sed -e "s/\..*$//"`;((i/=60, min=i%60, hrs=i/60));sec=`echo "$c%60"|bc`;printf "%02d:%02d:%02.3f %s\n" $hrs $min $sec $c;done > chapter_nero.txt
MP4Box test.mp4 -chap chapter_nero.txt
TODO: チャプタージャンプが上手く動く動画プレイヤーを探す。いや、エンコーダのパラメータを弄る必要があるかも。