はじめに
ATEM Streaming Bridgeと同じ機能をラズパイ(Raspberry Pi 4 Model B)で実現してみたメモです。
ATEM Streaming Bridgeとは
ATEM Mini製品(Pro/Pro ISO/Extreme/Extreme ISO)から映像をネットワーク経由(RTMP)でリモートのATEM Streaming Bridgeへ送信することができ、ATEM Streaming BridgeではHDMIで映像を出力することができます。3つの接続方法から選択することができます。
- 直接ネットワークケーブルで接続
- ローカルネットワークで接続(ストリームキーの設定の有/無を選択可)
- インターネット経由で接続
製品マニュアルはこちら。
https://documents.blackmagicdesign.com/UserManuals/ATEM_Mini_Manual.pdf
ラズパイで実現する方法
元ネタはこちら。
比較結果
Camera 1がオリジナルの映像で、Camera 2がATEM Streaming Bridgeから出力した映像、Camera 3はラズパイの画面です。
ATEM Streaming Bridgeは遅延がほとんどありませんが、ATEM Mini製品しか繋がらない制約があります。(OBS Studioからは繋がらない。)
ラズパイはATEM Mini製品、OBS Studioから繋がりますが、遅延が大きいです。(3〜5秒程度ありました。)
手順
0. /boot/config.txtの変更 (オプション)
元ネタではconfig.txtを変更していますが、既に問題なくディスプレイ表示できていれば変更しなくても問題ありません。
#disable_overscan=0
#hdmi_group=2
#hdmi_mode=16
1. アプリケーション(パッケージ)のインストール
ATEM Streaming Bridgeと同じ機能を実現するために必要なアプリケーション(パッケージ)をaptコマンドでインストールします。インストールが完了した時点でNginxは起動します。
- Nginx
- Nginx RTMP module
- OMXPlayer
$ sudo apt update
$ sudo apt install omxplayer
$ sudo apt install nginx libnginx-mod-rtmp
2. Nginxの設定変更
NginxがRTMPを受信できるようにし、RTMPを受信した際にOMXPlayerを起動する設定を追加します。
2-1. /etc/nginx/nginx.confの変更
Nginxの設定ファイル(nginx.conf)にRTMPを受信する設定を追加します。
$ sudo vi /etc/nginx/nginx.conf
rtmp {
server {
listen 1935;
application live {
live on;
record off;
allow play 127.0.0.1;
deny play all;
exec omxplayer -o hdmi rtmp://127.0.0.1/live/$name;
}
}
}
2-2. Nginxの設定を反映
-tオプションで設定内容に問題がないことを確認し、問題がなければ-sオプションで設定を反映(リロード)します。
$ sudo nginx -t
$ sudo nginx -s reload
3. HDMI出力する権限の追加
NginxがRTMPを受信してOMXPlayerを起動します。OMXPlayerが映像をHDMIへ出力させるために、www-dataユーザにvideoサブグループを追加します。
$ sudo usermod -aG video www-data
まとめ
現状ではどちらも一長一短ありますが、ニーズや利用シーンに合わせて手段を選択できるといいですね。
では、良き配信ライフを!