はじめに
ストリーミングで動画を配信する必要がでてきて、テストしたら思いのほか簡単にできたのでその手順を以下にまとめます。
nginxでRTMPサーバを構築
以下のURLのとおり実行。
ちなみに、nginxの設定ファイルの中にあるhttpのserverのlocationの場所に以下の項目を追加しないと外部からの読み出しができず、Windowsのブラウザでストリーミングを再生できません。
add_header Access-Control-Allow-Origin *;
...これがわかるまでに何時間もかかってしまった(-_-;)
Raspberry Piの環境構築
- OSをインストール
- ネットワークに接続
- 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カメラを取り外し、再度取り付けてからコマンドを実行すると配信できるようになります。