Posted at

enebular で YouTubeLive 配信の呪文を唱えてみた。


はじめに

ラズパイカメラを使用して raspivid コマンドと ffmpeg コマンドを組み合わせた 呪文 を唱えて YouTubeLive 配信を行ってみた。

ORG_DSC04855.JPG


Wi-Fi 接続環境の問題

社外勉強会へ行くと Wi-Fi 接続環境が提供されることがあるが、セキュリティ上の都合で YouTubeLive 配信ができない場合があるので注意が必要。

パターン①は自宅等では一般的で全く問題ないケースだが、社外勉強会や公衆無線 LAN 等ではほとんど見かけない。



パターン②は社外勉強会や公衆無線 LAN でよく見かけるケース。NDI 等で映像・音声を共有し、OBS 等で Picture in Picture 形式で配信することはできない。



解決案として、Wireless WAN 機能の付いた Wi-Fi ルーター (WMR-433W-WH など) を使用することでパターン①と同じ環境を作ることができる。



パターン③はストリーミングプロトコルで使用するポート番号も制限されているため、配信することはできない。


ラズパイからの配信環境

Raspberry Pi 3 Model B / B+、Raspberry Pi Zero W は無線 LAN 機能を持っているため Wi-Fi 環境へ接続できる。


ストリームキー

YouTubeLive 配信にはストリームキーが必要になる。ストリームキーを取得するためにチャンネルを有効化する必要があるが、有効になるまで 24時間 程度掛かるため注意。(事前に準備しておく必要がある。)

スクリーンショット 2019-02-02 19.35.20.png

スクリーンショット 2019-02-02 19.35.33.png


必要な機材


  • Raspberry Pi 3 Model B+ (Raspberry Pi 3 Model B、Raspberry Pi Zero W でも可)

  • Raspberry Pi カメラモジュール (カメラモジュール V2 でも可)

  • HDMI 3.5 インチ LCD ディスプレイモニター (MPI3508 を使用。無くても可。)


呪文

raspivid コマンドと ffmpeg コマンドを組み合わせて ラズパイカメラ の映像を YouTubeLive 配信することができる。コマンドの最後にストリームキーを指定する必要がある。ストリームキーを変更すれば異なるチャンネルに配信することが可能。

$ raspivid -o - -rot 90 -t 0 -vf -hf -fps 25 -b 500000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy 

-acodec aac -ab 128k -g 50 -strict experimental -s 640x320 -f flv rtmp://a.rtmp.youtube.com/live2/[ストリームキー]

enebular (Node-RED の exec ノード) から 呪文 を唱える場合、"|" (パイプ) が含まれるとエラーになるため、シェルスクリプト化する。(例えば、live.sh という名前で保存する。)


live.sh

#!/bin/sh

ARG=$1
raspivid -o - -rot 90 -t 0 -vf -hf -fps 25 -b 500000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy
-acodec aac -ab 128k -g 50 -strict experimental -s 640x320 -f flv rtmp://a.rtmp.youtube.com/live2/$ARG

live.sh の後ろにストリームキーを指定してコマンドを実行する。

$ live.sh [ストリームキー]


enebular から 呪文 を唱える

enebular でフローを作成し、exec ノードから 呪文 (シェルスクリプト) を 唱える (実行する)。inject ノードから配信の開始と終了をすることができる。配信開始の場合は、既に配信している ffmpeg プロセスを終了してから開始するフローにしている。

スクリーンショット 2019-02-01 23.27.23.png


exec ノード

配信開始

配信終了

また、ブラウザから特定の URL へアクセスすることで配信の開始と終了をすることもできる。(192.168.13.4 はラズパイの IP アドレス)

ON.png

OFF.png

※ ニーズがあるかどうか分かりませんが、enebular でフローを公開しておきます。(´・ω・`)

https://enebular.com/discover/flow/47b455f5-f4c1-4ca4-94af-267ae9b61705


NDI 送信の呪文

以前記事に書いた「ラズパイから NDI 送信してみた」も同じように enebular から 呪文 (シェルスクリプト) を唱える (実行する) ことができる。


NDI 送信環境

Wi-Fi 接続環境パターン①は問題無いが、パターン②では Wireless WAN 機能の付いた Wi-Fi ルーターを使用することでラズパイカメラの映像を PC へ送信することが可能。


NDI 送信開始フロー

exec ノードから NDI 送信スクリプト (ndi.sh) を実行する。

スクリーンショット 2019-02-02 11.25.35.png


ndi.sh

#!/bin/sh

raspivid -o - -rot 90 -t 0 -vf -hf -fps 10 -b 500000 | /home/pi/NDI/ffmpeg/ffmpeg -re -f h264 -i - -vcodec wrapped_avframe -strict experimental -f libndi_newtek -pix_fmt uyvy422 -s 640x360 RPiCamera


OBS で NDI 受信

ラズパイカメラの映像を PC の OBS で受信し、テロップ等を加えて YouTubeLive 配信することができる。

スクリーンショット 2019-02-02 11.24.27.png


まとめ

enebular AWS IoT agent と enebular editor からラズパイを操作して YouTubeLive 配信をできるようにしてみました。ラズパイへ SSH でログインして 呪文 を唱える必要が無くなりました。

みなさんも 良き enebular ライフを!

IMG_6712.JPG