2
1

More than 1 year has passed since last update.

Raspberry Pi Zero2 W を使ってAmazon Kinesis Video Streams (1)

Last updated at Posted at 2022-12-09

1. 概要

前回の記事に試みにより、Pi Zero2 W+bullseye 64bit Lite(Debian 11)になんとかAmazon Kinesis Video Streams Producer SDKを導入できた。今回は本来の目的のビデオのアップロードを行う。

2. 使うもの

  • Pi Zero2 W+bullseye 64bit Lite(Debian 11)
    ユーザー名はpiとする。
  • UVCカメラ: Buffalo BSW500M

3. 準備

環境変数の設定

$ export GST_PLUGIN_PATH=/home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/downloads/local/lib:$GST_PLUGIN_PATH
$ export LD_LIBRARY_PATH=/home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/downloads/local/lib

Gstreamerがlibgstkvssink.soを参照できるようにする

$ mkdir -p /home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/downloads/local/lib/gstreamer-1.0/
$ cp -p /home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so /home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/downloads/local/lib/gstreamer-1.0/

4. 実行と確認

4.1. MJPEG->H.264

  • JPEGのハードウェアデコード
  • H.264のハードウェアエンコード

とりあえず小さな解像度(320x240)とフレームレート(10 fps)ではうまくいった。画像荒いけど。

gst-launch-1.0  v4l2src device=/dev/video0 ! "image/jpeg,width=320,height=240,framerate=10/1" ! queue ! jpegparse ! v4l2jpegdec ! v4l2h264enc ! 'video/x-h264,level=(string)4' ! h264parse ! kvssink stream-name="MyKinesisVideoStream" access-key="アクセスキー" secret-key="シークレットアクセスキー" aws-region="ap-northeast-1" 

※v4l2jpegdecをjpegdecにするとソフトウェアエンコードになる。動きは遅い。

解像度をHD(1280x720)にするとメモリ関係のエラーが出てアップロードに失敗した。
GPUの割り当てを増やしたらうまくいくかもと思い、128MBに設定したら成功した。

以下のコマンドでメニューを起動

sudo raspi-config

パフォーマンス系の変更
image.png
GPUメモリの変更
image.png
変更したい値にしてOKで抜けていく
image.png

尚、調子に乗ってFHD(1920x1080)を試してエラーが出たのでさらにGPU割り当てを増やしたら起動に影響がでた。
結果は以下。

GPU Mem 起動成否
default QVGAサイズのアップロードができた
128 HDサイズのアップロードができた
160 Wi-Fiはping応答あるがSSHで接続できず
192 起動できていないのかWi-Fi/SSHの応答が一切ない

(追記)
よくみたらカメラの1920x1080のときのフレームレートが5か30だった、フレームレートを10から5に変更したらアップロードできた。ついでにフレームレート安定用の「framerate=5 frame-timecodes=false」も入れておいた。

gst-launch-1.0  v4l2src device=/dev/video0 ! "image/jpeg,width=320,height=240,framerate=5/1" ! queue ! jpegparse ! v4l2jpegdec ! v4l2h264enc ! 'video/x-h264,level=(string)4' ! h264parse ! kvssink stream-name="MyKinesisVideoStream" framerate=5 frame-timecodes=false access-key="アクセスキー" secret-key="シークレットアクセスキー" aws-region="ap-northeast-1" 

カメラの性能は以下
$ v4l2-ctl -d /dev/video0 --list-formats-ext

~略~
[0]: 'MJPG' (Motion-JPEG, compressed)

Size: Discrete 1920x1080
         Interval: Discrete 0.033s (30.000 fps)
         Interval: Discrete 0.200s (5.000 fps)
         Interval: Discrete 0.033s (30.000 fps)
         Interval: Discrete 0.200s (5.000 fps)
~略~

4.2. YUV->H.264

(未)

5. その他AWSの下記の箇所で確認可能。

image.png

【参考】

6. まとめ

メモリを節約したり、映像のビットレートなどを絞ればFHDも可能かもしれない。
とりあえず安定して動きそうなのはHDサイズ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1