こんにちは、szkです。
前回紹介したのは主流かつ、従来式というべき「Nginx」を用いたサーバ構築でした。
記事を記載している中でFAIOさんからこのようなリプライを頂きました。
SRTというプロトコルを試しているところですね!
ただ上手いことOBSのメディアソースで受け取れず、苦戦している段階になります…
(ちなみにサーバー用ソフトウェアですが、のちに記事を書くつもりですがSRSというソフトウェアが今もメンテされていておすすめですよ!うまくいくとRTMPで4秒です)— DJ FAIO (@FAIO1230) April 27, 2020
リプライでは「ほぇ~そうなんですねぇ」といった感じで話を合わせたものの
ぶっちゃけて言うと「なんだそのワード!?」って感じだったのでこっそり調べてみました。
SRT
次世代映像伝送プロトコル「SRT」とは何かー株式会社エクスプローラ
どうやらRTMPの後釜を狙って作られており、IT視点で話すのであればUDPでストリームするけど最初の段階でネゴシエーションは発生させるという規格。
動きそのものはIPパケットじゃないけど、HDMIのそれに近しい気がします。
何を中身でやってるのかはさっぱりだけどUDPのくせに再送があるというのも興味深い。
ちなみにOBSのフォーラムに一連の取り扱い方が記載されていますので、興味ある方は見ておくと良いと思います。
つまるところ通信規約の名称です。
SLS(SRT Livestream Sever)
SRTサーバプロダクトでOpensource。
上記のOBSのリファレンスにはこれがサーバとして紹介されています。
今回は使用しません。
つまるところ、SRTを扱えるソフトウェアの製品名です。
SRS
Simple RTMP Server(かな?)という名前のサーバーソフト。
SLSと名前がそっくりで間際らしいが別物。
ちなみにこの子もSRTを扱えるようすです。
SLSもそうですが、前回の記事でいう「Nginx」に当たるポジションのワードですね。
つまるところ、RTMPをはじめとするストリーミングサーバ、でSRTも扱えるソフトウェアの製品名です。
・・・と、ここまで書いてSRTのサーバ構築を書くんだろうな、と皆さんお思いかもしれませんが
使ってみた結果思った以上にSRSが速攻構築終わる良プロダクトでしたのでそっちから紹介します。
SRSの構築
まず、前提として「前回のCentOS7の構築まで」が終わっている想定となります。
1935ポートを使う場合はポートがバッティングしますのでnginxのポートを変更し、サービスを停止しておいた方が良いと思います。
手順については正直公式gitの手順通りなのでそちらを見て頂いた方が良いと思います。
必要なパッケージのインストール
yum install wget gcc pcre-devel openssl openssl-devel git make unzip tar
gitでSRSをダウンロード&インストール
git clone https://gitee.com/winlinvip/srs.oschina.git srs && cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull
./configure && make
以上で完了です。
起動
cd ./srs/trunk/ ./objs/srs -c conf/rtmp.conf
起動は上のコマンドで一発起動します。
この状態ですでにRTMPの待ち受けが開始されている状態です。
[2020-04-29 00:16:20.061][Trace][1468][0] XCORE-SRS/3.0.140(OuXuli) [2020-04-29 00:16:20.062][Trace][1468][0] config parse complete [2020-04-29 00:16:20.063][Trace][1468][0] write log to console [2020-04-29 00:16:20.063][Trace][1468][0] SRS/3.0.140(OuXuli), The MIT License (MIT) ~中略~ [2020-04-29 00:16:20.063][Trace][1468][0] srs checking config... [2020-04-29 00:16:20.063][Trace][1468][0] ips, iface[0] eth0 ipv4 0x11043 192.168.1.247, iface[1] eth0 ipv6 0x11043 240d:1a:37e:7500:ab8a:36e4:9302:2ab2, iface[2] eth0 ipv6 0x11043 fe80::7447:7537:4072:6d451.574037e-316th0 [2020-04-29 00:16:20.063][Trace][1468][0] devices, intranet eth0 192.168.1.247, internet eth0 240d:1a:37e:7500:ab8a:36e4:9302:2ab2, intranet eth0 fe80::7447:7537:4072:6d451.574037e-316th0 [2020-04-29 00:16:20.063][Warn][1468][0][0] stats network use index=0, ip=192.168.1.247 [2020-04-29 00:16:20.063][Warn][1468][0][0] stats disk not configed, disk iops disabled.
このようなログが出力され待機状態になります。
OBSからの出力
構成図
OBSから上のような構成で配信を行います。
今回はのっけからグローバルサイトでのテストです。
ポート開放などが必要になりますので適宜サーバ側、及び管理されているネットワークのルータ設定等で行ってください。
肝心の出力設定は次の通り。
サーバー | rtmp://{SRSサーバのグローバルIP}/live |
ストリームキー | 任意の文字列 |
ポートを変更していない場合、ポート番号の入力は不要なので注意。
出力が開始されるとコンソール側に上のような表示がされることを確認します。
ここまで確認できれば「サーバまで来ている」状態となります。
RTMPでの視聴(OBS)
メディアソースを利用して実際に配信を受信してみます。
この操作は配信集約PCにて行います。
ここでの入力は配信集約PC→LAN内のSRSへアクセスを行いますからローカルIPをします。
一方でこちらはポートの指定が必要となりますのでご注意下さい。
live/より後ろにはストリームキーの値が入ります。
結果
流石RTMPは早いですね。
ノーチューニングで1秒のラグでした。
手っ取り早くラグが少ない配信をしたい場合は前回の方法よりもこちらの方が楽かつ精度も高められそうかと思います。
コメントを残す