リモート飲み会をするため、Webカメラを購入しました。
買ったWebカメラは、店頭でフルHDで安かった『UB-UCAM200』です。
Webカメラを手に入れたので、リモート飲み会を開けばいいものを面倒臭くて、そのまま1年が経過してしまいました。
このままでは勿体ないので、ATOM CAMに続き、2台目のペット監視用カメラとして余生を過ごしてもらうことにしました。
■物理サーバ環境
CPU:Intel Celeron N3150
メモリ:8GB
CentOS 8.4.2105
docker-ce:20.10.7
USBカメラの注意点
事前にWindowsで動作を確認しましたが、映像にチラつきがありました。
結局の所、カメラが悪い訳では無く、USBハブの問題でした。
ディスプレイに付いているUSBハブ経由で、PCのUSBポートに接続していましたが、これが原因でした。
別のUSBハブで経由したところ、チラつきが無くなりました。
出来る限り、USBハブや延長ケーブルを使用せず、直接接続した方がいいのかもしれません。
Webカメラ
認識確認
サーバに接続して、認識するかを確認します。
# dmesg [1640904.139091] usb 1-5.1: USB disconnect, device number 3 [1640926.917106] usb 1-5.1: new high-speed USB device number 6 using xhci_hcd [1640926.995697] usb 1-5.1: config 1 interface 0 altsetting 0 endpoint 0x83 has an invalid bInterval 32, changing to 9 [1640926.996382] usb 1-5.1: New USB device found, idVendor=1b3f, idProduct=2247, bcdDevice= 1.00 [1640926.996386] usb 1-5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=5 [1640926.996388] usb 1-5.1: Product: GENERAL WEBCAM [1640926.996390] usb 1-5.1: Manufacturer: GENERAL [1640926.996392] usb 1-5.1: SerialNumber: JH0319_20200710_v012 [1640926.997404] uvcvideo: Found UVC 1.00 device GENERAL WEBCAM (1b3f:2247) [1640926.997560] uvcvideo: Failed to query (GET_INFO) UVC control 2 on unit 1: -32 (exp. 1). [1640927.007186] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround. [1640927.007577] input: GENERAL WEBCAM: GENERAL WEBCAM as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.1/1-5.1:1.0/input/input12 [1640927.009670] usb 1-5.1: Warning! Unlikely big volume range (=5120), cval->res is probably wrong. [1640927.009676] usb 1-5.1: [5] FU [Mic Capture Volume] ch = 1, val = 7680/12800/1
認識しました。
仕様確認
v4l-utilsを使用して仕様を確認します。
v4l-utilsは、ビルドして実行しました。
# wget https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.20.0.tar.bz2 # tar xf v4l-utils-1.20.0.tar.bz2 # cd v4l-utils-1.20.0 # ./congfigure # make
# ./utils/v4l2-ctl/v4l2-ctl --list-devices GENERAL WEBCAM: GENERAL WEBCAM (usb-0000:00:14.0-5.1): /dev/video0 /dev/video1
# ./utils/v4l2-ctl/v4l2-ctl -d /dev/video0 --info Driver Info: Driver name : uvcvideo Card type : GENERAL WEBCAM: GENERAL WEBCAM Bus info : usb-0000:00:14.0-5.1 Driver version : 4.18.0 Capabilities : 0x84a00001 Video Capture Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format
# ./utils/v4l2-ctl/v4l2-ctl -d /dev/video0 --list-formats-ext ioctl: VIDIOC_ENUM_FMT Type: Video Capture [0]: 'MJPG' (Motion-JPEG, compressed) Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.033s (30.000 fps) Size: Discrete 1280x720 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 800x480 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 640x480 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 640x360 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 320x240 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 176x144 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 800x600 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.033s (30.000 fps) [1]: 'YUYV' (YUYV 4:2:2) Size: Discrete 640x480 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.033s (30.000 fps) Size: Discrete 640x360 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 320x240 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 176x144 Interval: Discrete 0.033s (30.000 fps) Size: Discrete 640x480 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.033s (30.000 fps)
フルHDに対応しているようです。
Docker
監視を行うには、色々とソフトウェアを入れる必要がありますが、ホストの環境を汚したくないので、Docker上で使うことにしました。
Docker HubにMotionがありましたので、それを使用します。
設定ファイルなどの準備
設定ファイルを一応落としておきます。(あとで上書きしてしまうのですが…)
作成したディレクトリは、設定ファイルを置くディレクトリと、動画ファイルを保存するディレクトリです。
# mkdir /home/docker/motion # cd /home/docker/motion/ # wget https://github.com/Motion-Project/motion/raw/master/data/motion-dist.conf.in # mv motion-dist.conf.in motion.conf # mkdir /home/samba/atomcam/WebCAM
Docker起動
ポート8080はMotionの管理画面、8081はカメラのストリーミング用です。
# docker run -d --name=motion \ --device=/dev/video0:/dev/video0 \ -p 8080:8080 \ -p 8081:8081 \ -e TZ="Asia/Tokyo" \ -v /home/docker/motion:/usr/local/etc/motion \ -v /home/samba/atomcam/WebCAM:/var/lib/motion \ --restart=always \ motionproject/motion:latest
管理画面にアクセス
これで、以下のURLでアクセスできるようになるはずです。
http://サーバのIP:8080/
私は、ここでWrite Configurationを押したため、motion.confが書き換わってしまいました。
カメラの設定もmotion.conf内にあります。
motion.confを編集
#vi /home/docker/motion/motion.conf 以下に変更。 # Parameters to control video device. See motion_guide.html ; video_params value v4l2_palette 8 # Image width in pixels. width 1920 # Image height in pixels. height 1080 # Maximum number of frames to be captured per second. framerate 30
# docker restart motion
v4l2_paletteで、MJPG(8)を指定します。
これを入れないと、YUYV(14)になってしまい、640x480になります。
動体が検知されると、以下にmkvファイルが保存されていきます。
/home/samba/atomcam/WebCAM
最後に
ペットを監視できるようになりました。
カメラ自体は、安く良い物ではありませんでしたが、ペット監視としては、まあまあ使えると思います。
良い画質で、暗い所でも撮れるカメラが良いのなら、AtomCAMを買った方がコスパが高いです。
格安ネットワークカメラATOM Camで猫を撮影してみました。色々な使い方が出来そうで面白いです。