概要
- PS5の画面共有 をDiscordで行うための非公式な方法の紹介
- 公式サービス外での配信 は制限が多く、工夫が必要
- DNSとnginx-rtmpを使ったストリーム受信方法 の詳細解説
- 物理キャプチャカード不要 でPCへ映像を転送する手法
- 実際に 安定して運用できた経験 をもとにしたノウハウ共有
PS5の画面共有制限と課題
- SonyはPS5の機能制限 を徐々に強化
- 公式サポート外の配信サービス利用不可
- サードパーティBluetooth機器のペアリング不可
- Discordへの画面共有非対応
- 友人とプレイ画面を共有できず不便
- キャプチャカードのコスト問題
- 高品質なカードは1万円以上必要
Remote Playの限界
- Remote Play経由の配信
- MacBookでPS5画面を受信し、Discordへ画面共有
- 課題点
- コントローラーやイヤホンもMac側に接続が必要
- 入力遅延や画質制御の自由度が低い
- 毎回物理的な接続構成変更が面倒
PS5のストリーミング仕組み
- PS5は標準でYouTube/TwitchへRTMP配信対応
- RTMP(Real-Time Messaging Protocol)利用
- 配信開始時の流れ
- PS5がTwitchのDNSを参照し、配信先サーバーを決定
- 独自のRTMPサーバーに配信できる可能性
適切なホスト名の特定
- 最初の試行:ingest.twitch.tvの偽装
- 実際はRTMPサーバーではなく、地域サーバー選択用エンドポイント
- 証明書検証問題
- TwitchはRTMPS(TLS付きRTMP)を利用し、自己署名証明書は不可
- PS5に独自CAをインストールできない
- YouTube経由の試行
- 通常のRTMP利用で一時的に成功するも、APIチェックで強制終了
- 最終的な解決策
- DNSログからcontribute.live-video.net系列のサーバーを特定
- サブドメイン全体を偽装し、証明書問題を回避
DNSトリックによる配信先の書き換え
- dnsmasqとnginx-rtmpの導入
- Macでdnsmasqを起動し、Twitch関連ドメインをMacのIPへ解決
- PS5はMacをTwitchサーバーと誤認し配信
- DHCP設定の工夫
- OpenWRTルーターでPS5のDHCPリースに特定DNSを自動割当
- PS5側でDNS設定不要、ネットワーク経由で自動適用
ストリームの受信・取扱い
- nginx-rtmpの設定
- 1935ポートでRTMP受信
- on_publishフックで配信開始を検知し、RTMP URLをアプリに通知
- ストリーム仕様
- 映像:1080p60、H.264
- 音声:AACステレオ
- 用途に応じた利用
- OBSで再配信・録画
- mpvで直接再生しDiscordへウィンドウ共有
実際の視聴・配信方法
- mpvでの低遅延再生
- mpv --profile=low-latency --audio-buffer=0.3 rtmp://127.0.0.1/ps5/stream-key
- Discordへのウィンドウ共有
- 1秒未満の低遅延で安定運用
まとめ
- キャプチャカード不要 でPS5の画面をPCへ配信可能
- DNSとnginx-rtmpを活用 した柔軟な配信先制御
- 安定した運用実績 と、公式サービス外での自由な配信環境構築ノウハウ
- 全ソースコードは著者GitHub等で公開
なんか見落としてるかもしれないけど、「本当のホスト名を特定する」ってのと「YouTubeにストリームが表示されなくなる心配がなくなる」ってのの間にギャップがある気がする。