Ingress
Ingress は、配信ソフトや放送機器のストリームを RTMP、RTMPS、SRT で受け、それぞれをパスに出します。ストリームキーは Tablebox のトークンです。Ingress は変換するだけで、自分のキー、設定、状態を持ちません。
ストリームを送る
| プロトコル | アドレス | キー |
|---|---|---|
| RTMP | rtmp://{ingress host}/{app} |
ストリームキー: トークン。アプリ名は自由 |
| RTMPS | rtmps://{ingress host}/{app} |
同じ |
| SRT | srt://{ingress host}:{port} |
ストリーム ID #!::r={token},m=publish |
Ingress のホストとその SRT のポートはリファレンスにあります。OBS では、サーバーを rtmp://{ingress host}/live、ストリームキーをトークンにします。ffmpeg では rtmp://{ingress host}/live/{token} へ送るか、srt://{ingress host}:{port}?streamid= の後にパーセントエンコードしたストリーム ID を付けて送ります。
ストリームキー
キーは接続するのとおりのトークンで、publish がちょうど一つのパターン、ワイルドカードのないそのままのパスです。ストリームはそのパスに、トークンのルートからの相対で出ます。SRT では、ストリーム ID が SRT の 512 バイトに収まるよう、トークンは 496 バイトまでです。root、sub、パスを短くすれば収まります。
// A stream key for Ingress: a token whose publish is one literal path, here studio/main.
import { sign } from './token.ts';
console.log(await sign('studio', { publish: ['studio/main'] }));出るもの
ストリームが続く間、トークンのパスには hang のブロードキャストがあります。catalog.json と、送り手が送るレンディションごとのトラックで、送られたとおり再エンコードしません。公式のプレーヤーで見るブラウザーは、OBS が既定で送る H.264 の映像と AAC の音声を復号でき、Egress はそのブロードキャストをそのまま配信サービスへ送ります。
ストリームはトークンのセッションとして動きます。その sub、ルート、権利、使用量はトークンのものです。トークンの exp はストリームの開始時に確かめ、ストリームは、送り手が止めるか Relay がセッションを終える(取り外し、閉鎖、上限)まで続き、そのときストリームの接続を閉じます。Ingress のどのインスタンスも、どのストリームでも受けます。
失敗
- キーがトークンでない、Relay が拒む、または
publishが一つのそのままのパスでない: メディアが流れる前にストリームの接続を閉じます。RTMP の送り手には理由の名前が見え(ffmpeg が表示する)、SRT の送り手には理由のない拒否が見えます。 - Ingress は、セッションが Relay に閉じられずに 1 秒開いていたらストリームを受け入れるので、どのストリームも、送り手が求めてから最低 1 秒後に始まります。
- Relay に届かない、またはセッションが終わる: ストリームの接続を閉じ、送り手自身の再接続が同じキーでやり直します。
- 同じキーで二つのストリームを同時に送る: どちらも出て、読み手は最初のものが終わるまでそちらにとどまります。
- Ingress のインスタンスが止まる: そのストリームは終わり、送り手は同じアドレスの後ろのインスタンスにつなぎ直します。