🐙

[編集中]Raspberry Pi で Amazon Kinesis Video Streams WebRTC を利用する

2022/05/31に公開

はじめに

Raspberry Pi 、 WebRTC を理解しないまま色々試したところ見事にハマったため、その共有と記録です。
以下は2022/05/22現在の情報です。

Raspberry Pi セットアップ

Buster のインストール

  • Raspberry Pi Imager (v1.7.2) より Raspberry Pi OS (Other) を選択
  • Rspberry Pi OS Light (Legacy) を選択
  • 以下の設定⚙をする

Windows、MacなどからSSH接続

  • SDカード書込完了後、SDカードをラズパイに差し込み、起動後、WindowsやMacからSSH接続
# ここではユーザー名 kikudai でssh接続しています、適宜変更ください
ssh kikudai@raspberrypi.local

Gstreamer セットアップ

ラズパイカメラ有効化

  • カメラ確認
v4l2-ctl --list-devices
  • カメラデバイスがない(認識されていない)ので以降の作業でラズパイカメラを有効化します。
$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/video18

bcm2835-isp (platform:bcm2835-isp):
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16

Cannot open device /dev/video0, exiting.
  • カメラ有効化
sudo raspi-config
  • 3 Interface Options 選択

  • P1 Camera 選択 > Yes 選択 > OK 選択 > Finish 選択 > Yes 選択 (Reboot)

  • ラズパイ再起動後、カメラの確認

# /dev/video0 があることを確認
v4l2-ctl --list-devices

Gstreamer インストール

  • OS最新化
sudo apt update
sudo apt upgrade
sudo apt clean
sudo reboot
  • 必要ライブラリのインストール
sudo apt install \
    pkg-config \
    cmake \
    libcap2 \
    libcap-dev \
    libssl-dev \
    git
  • Gstreamer のインストール
sudo apt install \
    gstreamer1.0-tools \
    libgstreamer1.0-dev \
    libgstreamer-plugins-base1.0-dev \
    gstreamer1.0-omx \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-plugins-bad
  • 映像をファイル保存して確認
# movで保存
gst-launch-1.0 -e v4l2src device=/dev/video0 num-buffers=500 ! \
    video/x-h264,width=320,height=240,framerate=[30/1,10000000/333333] ! \
    h264parse ! \
    splitmuxsink location=video%02d.mov  \
    max-size-time=10000000000 max-size-bytes=1000000

# mp4で保存
gst-launch-1.0 -e v4l2src device=/dev/video0 num-buffers=10 ! \
    jpegenc ! \
    .video splitmuxsink muxer=qtmux muxer-pad-map=x-pad-map,video=video_1 location=test%05d.mp4 -v

Amazon Kinesis Video Streams WebRTC セットアップ

参考情報

Discussion