Insta360 air와 Raspberry Pi 3B+로 전천구 감시 카메라 만들기

개요



Insta360 airRaspberry Pi 3B+로 전천구 감시 카메라를 만듭니다.
전천구라고 말하면서도, 어안이 좌우 2개 나와 있어 전천구로 하기 위한 처리는 하고 있지 않습니다.

RICHO의 THETA 등 다른 전천구 카메라라도 할 수 있습니다만, 비교적 저렴하다는 것, USB 툴 니들이 부속되어 있는 것, 케이스가 컴팩트하고 스마트하게 보이는 것으로부터 Insta360 air를 선택했습니다. (실제는 MicroUSB의 스마트 폰에서 TypeC의 스마트 폰으로 기종 변경했기 때문에 스마트 폰으로 부담없이 사용할 수 없게 되었기 때문에)

사양



우선 라즈파이의 사양
pi@rpi3bp:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

insta360 air 정보
$ v4l2-ctl -d /dev/video1 --info
Driver Info:
        Driver name      : uvcvideo
        Card type        : Insta360 Air: Video Control
        Bus info         : usb-3f980000.usb-1.1.3
        Driver version   : 4.19.66
        Capabilities     : 0x84a00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : uvcvideo
        Model            : Insta360 Air: Video Control
        Serial           :
        Bus info         : 1.1.3
        Media version    : 4.19.66
        Hardware revision: 0x00000100 (256)
        Driver version   : 4.19.66
Interface Info:
        ID               : 0x03000002
        Type             : V4L Video
Entity Info:
        ID               : 0x00000001 (1)
        Name             : Insta360 Air: Video Control
        Function         : V4L2 I/O
        Flags         : default
        Pad 0x01000007   : 0: Sink
          Link 0x02000016: from remote pad 0x100000a of entity 'Extension 2': Data, Enabled, Immutable
$ v4l2-ctl -d /dev/video1 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'MJPG' (Motion-JPEG, compressed)
                Size: Discrete 1472x736
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 2176x1088
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 3008x1504
                        Interval: Discrete 0.033s (30.000 fps)
        [1]: 'H264' (H.264, compressed)
                Size: Discrete 1920x960
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.042s (24.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                Size: Discrete 2560x1280
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.042s (24.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)

MJPG-streamer 도입



MJPG-streamer (htps : // 기주 b. 코 m / 그럼 ck 그래 m / mjpg-st Reame r)를 넣는다.
(motion에서도 시도했지만 촬영 형식상 잘못됐다.)
GitHub의 README를 읽고 그대로 명령을 친다.
$ sudo apt install cmake libjpeg8-dev
$ sudo apt install gcc g++
$ sudo apt install git
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
$ sudo make install
$ sudo cp -r www /var/www

시작 스크립트 만들기



시작 스크립트를 작성합니다.

~/mjpg-streamer/mjpg-streamer-experimental/run-8081.sh
#!/bin/sh
mjpg_streamer -i "/home/pi/mjpg-streamer/mjpg-streamer-experimental/input_uvc.so -f 5 -r 3008x1504 -d /dev/video0 -y -n" -o "/home/pi/mjpg-streamer/mjpg-streamer-experimental/output_http.so -w /home/pi/mjpg-streamer/mjpg-streamer-experimental/www -p 8081"

디바이스명(/dev/video0)과 화상 사이즈(3008x1504), 포트 번호(8081)는, 환경이나 어떻게 하는지에 따라 다르므로 요 확인.
절대 패스로 쓰고 있지만, 상대라도 좋을지도 모른다.

데몬화



라즈파이라고 하면 전원을 USB로부터 뽑아내는 운용이 대부분이므로, 데몬화해 두고 전원 투입으로 자동적으로 일어나게 한다.
$ sudo nano /etc/systemd/system/mjpg-streamer.service

/etc/systemd/system/mjpg-streamer.service
[Unit]
Description = mjpg-streamer

[Service]
ExecStart = /home/pi/workspace-git/mjpg-streamer/mjpg-streamer-experimental/run-8081.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
$ sudo systemctl enable mjpg-streamer.service
$ sudo systemctl start mjpg-streamer.service
$ sudo systemctl status mjpg-streamer.service

확인


http://(ラズパイのアドレス)/8081를 참조하면 작동하고 있음을 알 수 있습니다.



일반 카메라도 마찬가지로 스크립트와 데몬을 만들고 움직입니다.
nginx에서 둘 다 동시에 볼 수 있습니다.

/var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>監視カメラ画像</title>
</head>

<body>
        <p>image</p>
        <img src="http://192.168.1.1:8081/?action=stream" width="100%" style="transform: scale(-1, -1);">
        <img src="http://192.168.1.1:8082/?action=stream" width="100%">
</body>
</html>

완성도



모자이크 넣는 것이 귀찮았기 때문에, 천으로 덮고 있습니다만, 어안이 2개 보이고 있는 것이 나옵니다.

좋은 웹페이지 즐겨찾기