nginx
ffmpeg
RaspberryPi
rtmp

必ず成功する(はずの)Raspberry Piを使ったRTMPによるストリーミング配信の手順

はじめに

ストリーミングで動画を配信する必要がでてきて、テストしたら思いのほか簡単にできたのでその手順を以下にまとめます。

nginxでRTMPサーバを構築

以下のURLのとおり実行。

nginxでストリーミングサーバを立ててライブ配信する。

Raspberry Piの環境構築

  1. OSをインストール
  2. ネットワークに接続
  3. USBカメラを接続

以上。

FFMpegのインストール

以下のコマンドを実行。

sudo apt update
sudo apt install -y ffmpeg

もし気になる方は再起動。

sudo reboot

ストリーミング配信

音声なし

以下のコマンドを実行。
なお、「your ip」はRTMPサーバのIPアドレス、「your key」は任意の英数文字列に変更して下さい。

例:「your ip」は「192.168.1.10」、「your key」は「sample」など

/usr/bin/ffmpeg \
-f v4l2 -thread_queue_size 8192 -input_format yuyv422 -video_size 640x360 -framerate 8 -i /dev/video0 \
-c:v h264_omx  \
-f flv "rtmp://[your ip]/live1/[your key]"

音声あり

USBカメラにマイクが内臓されている場合、以下のコマンドで音声つきで配信できます。

/usr/bin/ffmpeg \
-f alsa -ac 1 -thread_queue_size 8192 -i hw:1 \
-f v4l2 -thread_queue_size 8192 -input_format yuyv422 -video_size 640x360 -framerate 8 -i /dev/video0 \
-c:v h264_omx -b:v 768k -bufsize 768k -vsync 1 -g 16  \
-c:a aac -b:a 128k -ar 44100 \
-f flv "rtmp://[your ip]/live1/[your key]"

できた!

備考

USBカメラの機種によっては、コマンドを終了させた後に再度実行するとエラーになるものがあるようです。その場合はUSBカメラを取り外し、再度取り付けてからコマンドを実行すると配信できるようになります。