
2026/09/29 0:35
PS5 の RTMP ストリームの乗っ取り
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
PlayStation 5 ユーザーは、公式の共有機能や HDMI キャプチャーカードを使用するのではなく、DNS リダイレクションを用いてサードパーティ製プラットフォームにゲームプレイをストリーミング配信できます。ソニーは不明なサービスからの直接 RTMP インゲストをブロックし、発見エンドポイントで証明書の検証を実行しています。
ingest.twitch.tv のスプーフィングは失敗する这是因为、地域別の RTMPS サーバーを返すため、信頼された証明書が要求されます。一方、YouTube は API の活性チェックにより約 60 秒後に配信を停止します。contribute.live-video.net のスプーフィングは機能する这是因为、すべてのサブドメインをカバーし、トラフィックを転送する際に証明書問題を引き起こしません。この解決策では、macOS ホスト(IP: 192.168.8.175)上で dnsmasq を実行し、Twitch のインゲストドメイン(例:live.twitch.tv, ingest.global-contribute.live-video.net)を Mac にリダイレクトし、すべてのインタフェースで監聽し、アップストリーム DNS として 1.1.1.1 と 8.8.8.8 を使用します。OpenWRT を実行する GL.iNet ルーターは、DHCP オプション 6 を介して PS5 向けに Mac の IP アドレスを配信します。nginx-rtmp サーバーはアプリケーション「ps5」でポート 1935 でストリームを受け付け、その on_publish コールバックは localhost:9988 にポストし、メニューバーアプリが開始を検知して RTMP URL を表示できるようにしています。視聴には低レイテンシプロファイルを使用する mpv が用いられ、rtmp://127.0.0.1/ps5/stream-key で直接再生することで亚秒単位までの遅延を実現します。このアプローチは、PS5 ソフトウェアを変更したり新しいハードウェアを購入したりすることなく、低レイテンシのストリーミングを可能にしつつ、macOS ホストとサーバー設定が稼働している限り有効です。本文
PS5 を Discord へ画面共有する:DNS 迂回で実現した回り道方法
ソニー製 PS5 は公式に Discord への画面共有をサポートしていませんが、リモートプレイの制限や高価なキャプチャカードを買わずに、DNS のトリックと自己管理サーバー(Mac)を介して実現する方法があります。
この方法は、PS5 が Twitch に対して送るストリームデータを Mac で受け取り、それを Discord に映す仕組みです。
1. 背景と問題点
ソニーの制限
- PS5 の機能は段階的に制限されており、公式サポートしていないサービス(サードパーティ製 Bluetooth デバイスなど)への対応が悪化しています。
- Discord への直接画面共有は非対応です。
既存解決策の課題
- キャプチャカード + HDMI 出力:
- Mac の OBS を介して配信可能ですが、高品質な機材は**100 ドル以上(約 14,500 円)**必要で高額です。
- 物理的なセットアップ変更が毎回必要になります。
2. 試行錯誤:リモートプレイの限界
基本的な連携
- PS5 と Mac を接続し、Mac の画面を Discord に共有することは可能です。
- ただし、以下の問題が発生しました。
リモートプレイでの不便さ
- 周辺機器の制約: イヤホンやコントローラーなど、全ての入出力デバイスを MacBook 側に接続する必要があります。
- 入力遅延: タイミングによって操作への遅れが発生します。
- 品質制御の欠落: ストリーム品質は PS5 側で管理されており、Mac 側での調整ができません。
結論: 物理的なセットアップ変更を避けたい場合に不向きでした。
3. 核心:PS5 ストリーミングの仕組みを理解する
RTMP プロトコル
- PS5 は YouTube や Twitch への配信に RTMP (Real-Time Messaging Protocol) を使用します。
- 通常、ブロードキャスト開始時、PS5 は Twitch のインゲストサーバーへの接続先を取得します。
DNS による制御の鍵
- PS5 は Twitch の IP アドレスをハードコードしていません。
- ブロードキャスト時に DNS(ドメイン名解決)を行うことで、接続先に動的に決定しています。
- 戦略:
のような初期問い合わせに対して、Mac の IP アドレスを返すように DNS を偽装すれば、PS5 は Mac と見なしてストリームを送信します。ingest.twitch.tv
技術的な壁と突破
- Twitch (
) の失敗:ingest.twitch.tv- RTMPS (TLS 暗号化) が必要なため、自己署名証明書は拒否されました。
- YouTube の試行:
- TLS なし(ポート 1935)の RTMP で接続可能でしたが、「ライブか?」をチェックする API 検証に失敗し、約 60 秒後に配信が止まりました。
- 成功のポイント:
- DNS ログを監視した結果、実際の有効なサーバーは
でした。ingest.global-contribute.live-video.net - このドメイン全体に対する DNS レダイレクトが可能であれば、証明書問題も回避できました。
- DNS ログを監視した結果、実際の有効なサーバーは
4. 具体的な構成と設定手順
必要な環境
- Mac (ストリームを受け取るホスト)
(DNS サーバー)dnsmasq
(ストリーム処理サーバー)nginx-rtmp- ルーター (OpenWRT 等、DHCP 制御可能)
ステップ A: DNS のレダイレクト設定 (Mac 側)
dnsmasq を Mac で起動し、Twitch 関連のドメインを Mac の LAN IP へリダイレクトします。
※192.168.8.175 は Mac の IP アドレスに書き換えてください。
dnsmasq.conf
設定例
dnsmasq.confserver=1.1.1.1 server=8.8.8.8 # Twitch インゲストトラフィックを Mac の IP へリダイレクト address=/contribute.live-video.net/192.168.8.175 address=/ingest.global-contribute.live-video.net/192.168.8.175 address=/live.twitch.tv/192.168.8.175 address=/live-sin.twitch.tv/192.168.8.175 address=/live-nrt.twitch.tv/192.168.8.175 address=/live-syd.twitch.tv/192.168.8.175 address=/live-fra.twitch.tv/192.168.8.175 address=/live-ams.twitch.tv/192.168.8.175 address=/live-lhr.twitch.tv/192.168.8.175 address=/live-jfk.twitch.tv/192.168.8.175 address=/live-lax.twitch.tv/192.168.8.175 address=/live-sea.twitch.tv/192.168.8.175 log-queries log-facility=/tmp/dnsmasq.log no-hosts listen-address=0.0.0.0
動作原理
- PS5 が
を検索すると、Mac の IP (ingest.global-contribute.live-video.net
) を返されます。192.168.8.175 - PS5 はこれを Twitch サーバーだと思い込み接続を試みます。
ステップ B: ルーターでの DHCP 設定
PS5 が自動的に Mac の DNS サーバーを参照するようにルーター側で設定します(OpenWRT 例)。
SSH コマンド実行
uci add_list dhcp.lan.dhcp_option="tag:PS5,6,192.168.8.175" uci commit dhcp /etc/init.d/dnsmasq restart
: PS5 のリースアドレスに紐付くタグ。tag:PS5- オプション 6: DNS サーバーへの指示。
これにより、PS5 は DHCP リニュー時に自動的に Mac の DNS を取得します。
5. ストリームを受け取る (nginx-rtmp)
Mac 側で
nginx-rtmp を設定し、RTMP ストリームを処理します。
nginx-rtmp.conf 設定例
worker_processes 1; error_log /tmp/nginx-error.log warn; pid /tmp/nginx.pid; events { worker_connections 512; } rtmp { server { listen 1935; chunk_size 4096; application ps5 { live on; record off; sync 10ms; # ストリーム開始を通知するためのコールバック on_publish http://127.0.0.1:9988/on_publish; } } } http { server { listen 8080; location /stat { rtmp_stat all; } } }
仕組みの要約
- PS5 がブロードキャスト開始。
- DNS レダイレクトにより Mac に接続。
がポート 1935 で RTMP ストリーム (nginx-rtmp
, H.264, AAC) を受け取る。1080p60
コールバックにより、Mac の管理アプリケーションが「配信開始」を検知し、フル URL を取得可能になります。on_publish
6. 視聴と共有 (Discord)
OBS を経由せず、軽量なプレイヤーでストリームを再生・共有します。 ローラテンシー(低遅延)プロファイルを使用し、1 秒未満の遅延を実現しています。
mpv による直接再生コマンド
mpv --profile=low-latency --audio-buffer=0.3 rtmp://127.0.0.1/ps5/stream-key
: Mac 上の nginx-rtmp が管理するストリーム URL。rtmp://127.0.0.1/ps5/stream-key- mpv のウィンドウを Discord で共有することで、高品質なゲーム実況を友人と見ることができます。
まとめ
- 安定性: 数週間利用し、重大な問題は発生していません。
- コスト: ハードウェア購入費不要。
- コード: 完全なソースコードは公開されています(※記事元へ参照)。