概要
Raspberry pi にカメラモジュールをつなげて動画を取ります。
よくある使い方のサンプルはこんな感じ。
$ raspivid -t 10000 -o test.h264
これだと撮影開始して10秒後に自動的に撮影停止します。
でも、ビデオカメラとしてはこれは普通の使い方じゃないですよね。
録画を開始したら自分の好きなタイミングで録画を停止したいのです。
録画開始時に何秒録画したいかなど分からないのです。
調べてみたら raspivid
のオプションでしっかりできるようなのでメモとして残しておきます。
やり方
-
-k
オプションを使う(キー操作で止める) -
-s
オプションを使う(シグナルで止める)
の2通り分かったんですけど、とりあえず -t
オプションは 0 にしておきます。-t 0
で無限時間の録画ができるらしい(メモリの許す限り)。最大記録時間を決めたい場合は -t
オプションを付けるのもいいと思います。
-k
オプションを使う方法
ヘルプを見てみると出てくるのがこれ。
$ raspivid --help
(略)
-k, --keypress : Cycle between capture and pause on ENTER
(略)
要するに ENTER
キーを押すごとに録画と一時停止を繰り返すのですね。
ここには停止方法が書いていないのですが、あちこち調べてみたところ、X
キーを押してから ENTER
キーを押すと録画停止するようです。
実行した様子はこんな感じ。
$ raspivid -t 0 -o test.h264 -k (録画開始)
[ENTER] (一時停止)
[ENTER] (録画再開)
x[ENTER] (録画終了)
$
これで録画を開始してから好きなタイミングで録画を止めることができる。
-s
オプションを使う方法
録画用のスクリプトとかを作るならこちらの方が使いやすそう。
$ raspivid --help
(略)
-s, --signal : Cycle between capture and pause on Signal
(略)
説明が分かりにくい。Signal
って何ですか?
これは要するに kill -USR1 <プロセスID>
で録画一時停止/再開、kill -USR2 <プロセスID>
で録画停止ができるってことのようです。
raspivid で録画中のプロセスIDは pgrep raspivid
で確認できます。
実行時の様子をまとめるとこんな感じ。
$ raspivid -t 0 -o test.h264 & (録画開始)
[1] 7018 (ここでプロセスIDが返ってきてる)
$ pgrep raspivid (プロセスID確認)
7018
$ kill -USR1 7018 (一時停止)
$ kill -USR1 7018 (録画再開)
$ kill -USR2 7018 (録画停止)
録画開始としたのと別のウインドウ開いて kill
してやっても録画が止まります。
kill -USR2 `pgrep rasivid/`
みたいに一気に書いちゃってもよさそうです。
しかし、kill --help
を見てもこんなオプション載ってないな。なんだこれ。
まとめ
以上の方法で録画開始時に録画時間を決めないで、録画開始してから任意のタイミングで raspivid
を止めることができます。一時停止もできるので色々活用できそうです。