LoginSignup
11
9

More than 5 years have passed since last update.

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

Posted at

はじめに

ラズパイカメラを使用して 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

11
9
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
11
9