Démarrage rapide
Avant de commencer
Section titled “Avant de commencer”Quatre conditions doivent être réunies. Si l’une d’elles ne l’est pas, réglez-la maintenant — chacune produit plus tard un symptôme qui ressemble à une panne de Castmux et n’en est pas une.
- Une URL de source que vous avez déjà lue. Ouvrez-la d’abord dans VLC sur votre portable. Si VLC ne peut pas la lire, Castmux non plus, et vous passerez l’heure suivante à lire des journaux sur un problème qui se situe au serveur d’origine.
- Un groupe multicast que vous avez le droit d’utiliser.
239.10.0.1:1234est un premier choix raisonnable :239.0.0.0/8est la plage à portée administrative, il n’entrera donc en collision avec rien de routé. Vérifiez auprès du responsable du réseau que le groupe et le port sont libres. - L’appareil sur le même segment de couche 2 que les téléviseurs. Le multicast ne traverse pas un routeur sans configuration PIM, ce qui sort du cadre de ce guide. Même VLAN, même infrastructure de commutation.
- Savoir quelle interface réseau est tournée vers les téléviseurs. Il vous faut son nom —
eth0,eth1,enp1s0— et pas seulement « celle de droite ». Presque tous les échecs en fin de page viennent d’une route multicast qui pointe vers l’autre interface.
Démarrer l’appareil
Section titled “Démarrer l’appareil”Créez sur l’hôte un répertoire pour la configuration, puis démarrez le conteneur :
# A plain host directory, so config.yaml stays readable and backup-ablesudo mkdir -p /opt/castmux/config
sudo docker run -d --name castmux --restart unless-stopped \ --network host \ --cap-add NET_RAW \ --cap-add NET_ADMIN \ -v /opt/castmux/config:/config \ -e CASTMUX_WEB_USERNAME=admin \ -e CASTMUX_WEB_PASSWORD=choose-something-better \ castmux/castmux:latestChaque option est indispensable :
—network host
Le multicast doit être émis sur le vrai réseau local. Sur un réseau Docker en mode bridge, les paquets sont parfaitement produits puis ne vont nulle part, car le bridge est un segment distinct de celui où se trouvent les téléviseurs. Aucun compteur ne le montre : tout semble simplement fonctionner, et personne ne reçoit rien.
—cap-add NET_RAW
Autorise la capture de paquets. Castmux utilise libpcap pour deux choses : détecter quels clients ont réellement rejoint un groupe, ce qui pilote la diffusion à la demande, et mesurer le débit réel qui sort de l’interface. Sans elle, ces deux fonctions sont aveugles.
—cap-add NET_ADMIN
Autorise l’inspection et la gestion de la route multicast. Castmux vérifie la table de routage depuis l’extérieur du processus de diffusion, car un flux envoyé vers une destination non routable signale un succès depuis l’intérieur.
-v /opt/castmux/config:/config
L’unique fichier YAML se trouve ici, sous /config/config.yaml. Montez un répertoire de l’hôte (bind mount) plutôt qu’un volume nommé : si l’interface web devient injoignable, vous pourrez toujours lire et modifier la configuration avec un éditeur de texte ordinaire.
Se connecter
Section titled “Se connecter”Ouvrez http://<appliance>:8080 dans un navigateur et connectez-vous avec les identifiants définis dans l’environnement. Le port 8080 est la valeur par défaut et peut être modifié avec --port.
Le pied de page doit afficher une chaîne de version, les chiffres CPU et mémoire, et les débits réseau par interface. Si c’est le cas, le processus est sain et vous pouvez commencer à ajouter des chaînes.
Ajouter votre première chaîne
Section titled “Ajouter votre première chaîne”Sur la page UDP channels, choisissez Add channel et renseignez :
| Champ | Que saisir pour ce premier test |
|---|---|
| Name | Un nom facilement reconnaissable. Il est utilisé dans la vue des journaux et, avec le moteur pass-through, comme nom de service dans le transport stream. |
| Source type | HLS. |
| Source URL | L'URL que vous avez lue dans VLC. Une master playlist convient. |
| Destination address | 239.10.0.1 |
| Destination port | 1234 |
| Engine | Laissez la valeur par défaut, le moteur pass-through. S'il s'avère que la source est en fMP4/CMAF plutôt qu'en segments MPEG-TS, passez au moteur de remultiplexage — voir Moteurs de diffusion. |
| Force always-on | Cochez-la. Voir la remarque ci-dessous. |
Vérifier qu’elle est réellement à l’antenne
Section titled “Vérifier qu’elle est réellement à l’antenne”Enregistrez la chaîne et patientez quelques secondes. Une chaîne pass-through produit généralement son premier paquet environ deux secondes après le démarrage ; le moteur de remultiplexage met environ quatre secondes et demie.
Vérifier la tuile UDP bitrate
Section titled “Vérifier la tuile UDP bitrate”Sur la carte de la chaîne, regardez la tuile UDP bitrate. Elle doit être non nulle.
C’est la tuile qui compte, et il vaut la peine de comprendre pourquoi. Les autres métriques — fréquence d’images, vitesse, débit de la source — proviennent du moteur qui rend compte de lui-même. Un moteur peut être tout à fait persuadé de diffuser alors que rien n’atteint le réseau. Le débit UDP est mesuré avec libpcap directement sur l’interface : il compte les paquets réellement sortis. C’est le seul signal qu’un processus qui vous ment ne peut pas produire, et c’est aussi le seul qui fonctionne de manière identique pour les deux moteurs.
Vérifier sur un client
Section titled “Vérifier sur un client”Depuis une machine située sur le même segment que les téléviseurs :
ffplay udp://@239.10.0.1:1234
# or, with VLCvlc udp://@239.10.0.1:1234Le @ n’est pas décoratif. Sans lui, le client tente d’envoyer vers le groupe au lieu de le rejoindre, et vous ne verrez rien alors que l’appareil semble en parfaite santé.
Réactiver la diffusion à la demande
Section titled “Réactiver la diffusion à la demande”Une fois la chaîne validée, modifiez-la et décochez force always-on. La chaîne s’arrêtera peu après le départ du dernier spectateur et redémarrera dès qu’un spectateur la rejoindra. Comptez environ deux secondes entre la jonction et la première image avec le moteur pass-through.
Un téléviseur passé sur une autre chaîne n’annonce pas toujours son départ immédiatement ; il y a donc un court délai de maintien avant que Castmux n’arrête le flux. C’est voulu : arrêter et redémarrer à chaque zapping serait pire pour le spectateur que de tourner quelques secondes de plus que strictement nécessaire.
Une réserve pendant les tests : l’aperçu dans le navigateur compte comme un spectateur. Une chaîne à la demande dont un aperçu est ouvert restera active, ce qui est pratique et parfois déroutant.
Et ensuite
Section titled “Et ensuite”Avant d’ajouter les autres chaînes, lisez Prérequis. Sur un petit appareil, la capacité est limitée par la mémoire, et la mémoire s’épuise brutalement plutôt que progressivement.