🐙
[編集中]Raspberry Pi で Amazon Kinesis Video Streams WebRTC を利用する
はじめに
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
Discussion