Problème de diffusion native

Le bouton Broadcast du PS5 ne propose que YouTube et Twitch. Les solutions classiques – carte de capture HDMI ou Remote Play – impliquent un coût matériel ou une latence supplémentaire. De plus, Remote Play oblige à connecter manuellement manette, casque et autres périphériques, ce qui complique l’usage quotidien.

Mécanisme de diffusion RTMP du PS5

Lors d’un lancement de diffusion, la console interroge le DNS pour ingest.global-contribute.live-video.net. La réponse indique un sous‑domaine régional, par exemple aps30.contribute.live-video.net, qui correspond au serveur RTMP réel. Pour Twitch, le flux est envoyé via RTMPS (RTMP sur TLS, port 443) et la console vérifie le certificat contre les autorités de certification intégrées. YouTube, à l’inverse, accepte le RTMP non chiffré sur le port 1935, mais interroge périodiquement son API ; l’absence de confirmation entraîne l’arrêt du stream après ~60 s.

Contournement DNS et serveur nginx‑rtmp

Le principe consiste à contrôler la résolution DNS afin que le PS5 pointe vers une machine locale. Le fichier de configuration dnsmasq suivant redirige tous les sous‑domaines de contribute.live-video.net vers l’adresse LAN du Mac (192.168.8.175) :

server = 1.1.1.1
server = 8.8.8.8
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
# … autres points d’entrée Twitch …
log-queries
log-facility = /tmp/dnsmasq.log
listen-address = 0.0.0.0

Le routeur OpenWRT attribue ce DNS uniquement au PS5 via l’option DHCP 6 :

uci add_list dhcp.lan.dhcp_option="tag:PS5,6,192.168.8.175"
uci commit dhcp
/etc/init.d/dnsmasq restart

Sur le Mac, nginx‑rtmp accepte le flux en écoute sur le port 1935 :

worker_processes 1;
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; }
    }
}

L’appel on_publish notifie l’application macOS qui génère l’URL RTMP complète, prête à être consommée.

Utilisation du flux

Le flux reçu est en 1080p60, codec H.264 avec audio AAC stéréo. Il peut être redirigé vers OBS, enregistré ou simplement lu avec mpv :

mpv --profile=low-latency --audio-buffer=0.3 rtmp://127.0.0.1/ps5/stream-key

Le profil low‑latency maintient le retard sous une seconde, ce qui rend la diffusion sur Discord fluide. L’ensemble du système fonctionne sans modification du firmware du PS5, uniquement grâce à la manipulation du DNS et à un serveur RTMP local, offrant une alternative économique et réversible aux solutions matérielles classiques.