このプロジェクトについて

polyemesisは、配信先ごとのマルチチャンネルオーディオルーティングを特徴とするセルフホスト型のリストリーミングサーバーです。1つのアップロードがオペレーターの設定した任意の数の配信先にファンアウトされ、各配信先はエンコーダーが送信したオーディオトラックから合算された独自のステレオミックスを受信します。ビデオは再エンコードされず、そのままコピーされます。 ターゲットとするユースケースは、オーディオトラックを分割したOBSセッションです。例えば、トラック1は著作権保護された音楽を含むフルミックス、トラック2はクリーンフィード、トラック3はマイクといった構成です。ライブプラットフォームは通常1つのステレオペアしか受け付けないため、単一のミックスで全員に対応するか、複数のエンコーダーとアップロードが必要になります。polyemesisを使用すると、配信先ごとにどのトラックをステレオフィードに合算するかを選択できます。ルーティングは、トラックごとのチェックボックスによるシンプルモードか、セルごとのゲインを設定できるチャンネル出力ミックスマトリクスとして設定されます。 インジェストはSRTマルチトラック(最大32のAACトラック、単一ポート上のトークンで指定)に対応しており、フォールバックとしてストリームキーで指定する単一トラックのRTMPも利用可能です。ライブオーディオメーターはすべてのトラックの全チャンネルに提供され、配信前のクリーンなトラックの確認に使用されます。ビデオレンディションは、低ティアが必要な配信先間で共有可能です。1つのエンコードが参照カウントされるため、未使用のティアにコストはかからず、レンディションはビデオのみを再エンコードし、オーディオルーティングは配信先ごとに維持されます。レンディション上のオーバーレイには、フレームのパーセンテージで位置とサイズを指定できる画像ウォーターマークと焼き付けテキストが含まれます。 配信先はRTMP(S)、SRT、またはローカルファイルに対応し、それぞれ独立して開始でき、自動再接続と指数バックオフを備えています。YouTube、Twitch、Facebook、Kickのプラットフォームサインインが提供されており、APIが許可している場合はチャットとメタデータのプッシュが可能です。また、削除、BAN、タイムアウトを含む4プラットフォーム共通のチャットモデレーション機能や、1人のユーザーのメッセージをプラットフォーム横断的に集約するモデレーターカードも搭載しています。その他の運用機能には、スタンバイインジェストによるフェイルオーバー、生成されたスレートとソースセレクター、PrometheusメトリクスとWebhook配信によるプロセス内アラートルール、ストリームおよび配信先の遷移に関する署名付きライフサイクルWebhook、Home Assistantディスカバリを備えたMQTTテレメトリの保持、Let's EncryptまたはローカルCAによる自己設定TLSなどが含まれます。ポストプロダクショングループでは、保持期間付きのセグメント化マルチトラック録画、ジョブキュー、全文検索付きのWhisper文字起こし、クリッパーが提供されます。多くの設定はストリームを停止せずに適用でき、保存アクションによってどの設定が有効になったかが示されます。 本ソフトウェアは、UIを内蔵した単一の静的バイナリとして提供され、純粋なGo製SQLiteを使用しcgoは不要です。libsrtでビルドされたFFmpeg 6.0以降が必要です。FFmpeg 6.0未満では起動せず、SRTが欠落している場合は警告が表示されます。Dockerイメージも公開されています。クローンからビルドする場合は、Go 1.27.0+、Node 20.19+/22.12+、およびFFmpegが必要です。 READMEでは制限事項が明記されています。本プロジェクトはプレリリース段階であり、メンテナーは1名で、互換性の保証はありません。RTMPマルチトラックは標準的な運用パスではなく、ソースごとのポートは存在しません。ユーザーは1名のみで、ロールや配信先ごとの権限設定はありません。Instagram Liveはサポート外としてリストされており、ソースビデオの適合性はオペレーターの責任となります。プラットフォームの成熟度は異なり、LinuxとDockerがプライマリであり、Windowsは未検証(サービス停止時の録画切断に関する未解決の欠陥を含む)とされています。比較表ではdatarhei/Restreamerおよびrestream.ioと対比されており、プラットフォームごとに異なるオーディオが不要な場合はRestreamerの方が成熟していると記載されています。ライセンスはMITです。