Streamer sur une Apple TV à partir de Linux

Streamer sur une Apple TV à partir de Linux
Photo by Nicolas J Leclercq / Unsplash

Suite au passage d'Android TV (NVIDIA SHIELD 2019) à l'Apple TV 2022 128 go, le besoin de diffuser l'écran de mon Debian KDE(PC PORTABLE) ainsi que de mon Fedora KDE(PC FIXE) s'est fait ressentir.

Pour rappel, l'Apple TV utilise le système d'exploitation tvOS qui repose donc sur l'écosystème Apple. Seul ainsi Airplay le protocole de "Cast" officiel d'Apple, est accepté. Aucun soucis de ce fait pour les MAC(s), iPhone(s), iPad(s) ... ⁣

De ce fait une solution me vient à l'esprit, l'utilisation de la suite de Streaming Gaming gratuite Moonlight + Sunshine !

Un schéma vaut 1000 mots pour vous expliquer sont fonctionnement.

En quelques mots, Moonlight est un client qui se connecte à un serveur, dans notre cas ici le serveur est Sunshine.

Sunshine va fournir à Moonlight le flux vidéo de l'écran sur lequel il se trouve avec une fluidité exceptionnelle ainsi qu'un contrôle du PC cible via la télécommande de l'Apple TV !

Avant cela, quelques étapes à suivre.

Installation du client Moonlight depuis l'Apple Store

Téléchargement du paquet Sunshine correspondant à notre système depuis le projet github

https://github.com/LizardByte/Sunshine/releases

Une fois effectué, on passe à l'installation

→ sudo dpkg -i sunshine-debian-bullseye-amd64.deb 
Sélection du paquet sunshine précédemment désélectionné.
(Lecture de la base de données... 461954 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de sunshine-debian-bullseye-amd64.deb ...
Dépaquetage de sunshine (0.19.1) ...
dpkg: des problèmes de dépendances empêchent la configuration de sunshine :
 sunshine dépend de libboost-log1.74.0 ; cependant :
  Le paquet libboost-log1.74.0 n'est pas installé.
 sunshine dépend de libboost-program-options1.74.0 ; cependant :
  Le paquet libboost-program-options1.74.0 n'est pas installé.

dpkg: erreur de traitement du paquet sunshine (--install) :
 problèmes de dépendances - laissé non configuré
Des erreurs ont été rencontrées pendant l'exécution :
 sunshine
 
 
mabed@P-MPL-SADIR ~ → sudo apt --fix-broken install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait      
Correction des dépendances... Fait
Les paquets supplémentaires suivants seront installés : 
  libboost-log1.74.0 libboost-program-options1.74.0
Les NOUVEAUX paquets suivants seront installés :
  libboost-log1.74.0 libboost-program-options1.74.0
0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Il est nécessaire de prendre 975 ko dans les archives.
Après cette opération, 6 204 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 http://deb.debian.org/debian bullseye/main amd64 libboost-log1.74.0 amd64 1.74.0-9 [619 kB]
Réception de :2 http://deb.debian.org/debian bullseye/main amd64 libboost-program-options1.74.0 amd64 1.74.0-9 [356 kB]
975 ko réceptionnés en 0s (5 458 ko/s)                  
Sélection du paquet libboost-log1.74.0 précédemment désélectionné.
(Lecture de la base de données... 464913 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libboost-log1.74.0_1.74.0-9_amd64.deb ...
Dépaquetage de libboost-log1.74.0 (1.74.0-9) ...
Sélection du paquet libboost-program-options1.74.0:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../libboost-program-options1.74.0_1.74.0-9_amd64.deb ...
Dépaquetage de libboost-program-options1.74.0:amd64 (1.74.0-9) ...
Paramétrage de libboost-log1.74.0 (1.74.0-9) ...
Paramétrage de libboost-program-options1.74.0:amd64 (1.74.0-9) ...
Paramétrage de sunshine (0.19.1) ...
/usr/sbin/setcap cap_sys_admin+p /usr/bin/sunshine
Traitement des actions différées (« triggers ») pour libc-bin (2.31-13+deb11u6) ...
needrestart is being skipped since dpkg has failed
mabed@P-MPL-SADIR ~ → sudo dpkg -i sunshine-debian-bullseye-amd64.deb 
(Lecture de la base de données... 464926 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de sunshine-debian-bullseye-amd64.deb ...
Dépaquetage de sunshine (0.19.1) sur (0.19.1) ...
Paramétrage de sunshine (0.19.1)

Vous êtes maintenant prêt à utiliser sunshine !

Nous allons donc ouvrir un terminal et lancer cette commande :

→ sudo sunshine --creds mathieu bedos
→ sudo sunshine -0

Votre serveur est en écoute, vous pouvez ouvrir l'application.

Une fois ouverte, si votre réseau n'empêche pas la découverte, le nom de votre PC doit apparaitre.

Cliquez dessus.

La première fois, un code vous sera affiché sur votre Apple TV, ce code doit etre rentré dans votre terminal.

[2023:05:21:17:24:16]: Info: 
[2023:05:21:17:24:16]: Info: // Ignore any errors mentioned above, they are not relevant. //
[2023:05:21:17:24:16]: Info: 
[2023:05:21:17:24:16]: Info: Found encoder vaapi: [h264_vaapi]
[2023:05:21:17:24:16]: Info: Configuration UI available at [https://localhost:47990]
[2023:05:21:17:24:16]: Info: Adding avahi service Sunshine
[2023:05:21:17:24:17]: Info: Avahi service Sunshine successfully established.
Please insert pin:

Une fois rentré, il vous suffit maintenant de sélectionner l'écran à afficher depuis votre Apple TV.

Pour les curieux, vous pouvez accéder à une interface graphique depuis l'ordinateur à l'aide des "creds" plus haut.(https://localhost:47990)