前回に続いてRaspberry PIのカメラを使いますが、これまでと違い今回使用するのは市販されている一般的なUSB接続できるカメラです。USB接続できるカメラは種類が多く用途に合わせて購入することができます。
・高画質HD対応200万画素Webカメラ(UCAM-C520FBBK)
https://www.elecom.co.jp/products/UCAM-C520FBBK.html
・高精細Full HD対応500万画素Webカメラ(UCAM-C750FBBK)
https://www.elecom.co.jp/products/UCAM-C750FBBK.html
前回と同様に撮影したデータはRaspberry PIのホームディレクトリにあるPicturesディレクトリに保存します。カレントディレクトリはこのPicturesディレクトリとします。コマンドならcd ~/Picturesです。映像もこのディレクトリに保存することとします。
○接続したUSBカメラの確認
まず、接続したUSBカメラがRaspberry PIで認識されているか確認します。以下のコマンドを入力します。USBカメラが接続され認識されていればカメラに関する情報(メーカー名やカメラ名など)が表示されます。
lsusb
次に以下のコマンドを入力します。
v4l2-ctl --list-devices
今回接続したカメラは以下のように認識されています。
ELECOM 2MP Webcam: ELECOM 2MP W (usb-xhci-hcd.0-1):
/dev/video8
/dev/video9
/dev/media4
カメラ情報は以下のコマンドで確認できます。
v4l2-ctl --all
○ソフトウェアのインストール
次にUSBカメラを制御するソフトウェア(fswebcam)をインストールします。(標準では入っていません)
以下のコマンドを入力します。
sudo apt install fswebcam
無事にインストールが終了したら以下のコマンドを入力してバージョンを確認します。
fswebcam --version
これで準備完了です。
○静止画の撮影
それでは静止画を撮影してみましょう。まず、以下のようにコマンドを入力するとカレントディレクトリに1.jpgという名前のJPEGファイルが保存されます。ただし、USBカメラが/dev/video0に接続されていない場合はエラーになり撮影は行われません。
fswebcam 1.jpg
今回接続したUSBカメラは「v4l2-ctl --list-devices」として確認できる内容から/dev/video8のようです。この場合、fswebcamのdオプションを指定し、その後に/dev/video8と指定します。
fswebcam -d /dev/video8 1.jpg
撮影された画像には下にバナー(赤い線や文字)が入っています。これを表示しないようにするには--no-bannerを指定します。
fswebcam -d /dev/video8 --no-banner 2.jpg
撮影する画像のサイズを指定するには-rの後に320x240や800x600のように横幅x縦幅の形式で指定します。
fswebcam -d /dev/video8 --no-banner -r 800x600 3.jpg
一定時間ごとに撮影するには-lの後に秒数(間隔)を指定します。3を指定すると3秒ごとに撮影されます。なお、短い間隔を指定すると処理が間に合わずにエラーで撮影されないことがあります。撮影されなかった場合でも、以後の撮影は継続されます。撮影を停止する場合はControlキーを押したままCキーを押します。
fswebcam -d /dev/video8 --no-banner -l 3 4.jpg
ファイル名を指定すると、そのファイル名で上書きされます。Webブラウザ等で監視するような場合には便利かもしれませんが、継続して撮影した画像を保存したい場合には困ります。このような場合は以下のようにファイル名を日時にすることができます。
while true; do fswebcam -d /dev/video8 --no-banner "$(date +%Y%m%d_%H%M%S).jpg"; sleep 3; done
上記の場合、撮影するごとにファイルが増加してしまいます。そうではなくて過去数枚だけ残しておけばよいということもあります。
i=0; while true; do fswebcam -d /dev/video8 --no-banner "$((i % 10)).jpg"; i=$(( (i + 1) % 10 )); sleep 3; done
100枚にしたい場合は以下のようになります。
i=0; while true; do fswebcam -d /dev/video8 --no-banner "$((i % 100)).jpg"; i=$(( (i + 1) % 100 )); sleep 3; done
○映像の撮影
次にUSBカメラで映像を撮影してみましょう。映像の撮影はfswebcamコマンドではできないため、ffmpegを使います。以下のようにすると10秒間撮影した後、カレントディレクトリに1.mp4という名前の映像ファイルが保存されます。
ffmpeg -f v4l2 -r 30 -i /dev/video8 -t 10 1.mp4
.











![[USBで録画や再生可能]Tinguポータブルテレビ テレビ小型 14.1インチ 高齢者向け 病院使用可能 大画面 大音量 簡単操作 車中泊 車載用バッグ付き 良い画質 HDMI端子搭載 録画機能 YouTube視聴可能 モバイルバッテリーに対応 AC電源・車載電源に対応 スタンド/吊り下げ/車載の3種類設置 リモコン付き 遠距離操作可能 タイムシフト機能付き 底部ボタン 軽量 (14.1インチ)](https://m.media-amazon.com/images/I/51-Yonm5vZL._SL500_.jpg)