RHL: Streaming et enregistrement

Bonjour à toutes et tous,

Comme discuté lors de la réunion de préparation des Rencontres Hivernales du Libre le 25.10.2019, nous fournissons comme à notre habitude le réseau Internet filaire + WLAN aux RHL et en plus nous prévoyons également de streamer les conférences ainsi que d’améliorer l’enregistrement audio et vidéo de celles-ci. Ici je ne parlerai que de la partie streaming/enregistrement, je ferai un autre sujet pour la partie réseau qui a quelques particularités.

Donc il nous faut préparer plusieurs éléments:

  • [OK] Les scènes et paramètres sur OBS Studio
  • Un serveur de streaming avec Nginx, RTMP et HLS
  • Le setup vidéo (caméras, trépieds, carte d’acquisition vidéo, etc)
  • Le setup audio (micros, haut-parleurs, table de mixage, casque d’écoute…)
  • Le setup réseau (réservation bande passante en somme)
  • Un lecteur vidéo web sur une page HTML
  • Le staff nécessaire

Les scènes et paramètres sur OBS Studio

Ce point-là était le plus simple, j’ai donc préparé plusieurs scènes:

  1. Scène speaker plan large/plan serré
  2. Scène slide + speaker en coin d’écran
  3. Scène audience ou speaker latéral
  4. Scène de pause, indiquant l’heure de la prochaine conférence
  5. Scène de problème technique
  6. Retard de conférence
  7. Timer (inutile donc indispensable, avant de lancer la conf)
  8. Écran noir

1. Scène speaker

Cette scène est simplement l’image montrant le/la conférencier·ère en grand, plan zoomé sur la personne en vue directe. Peut aussi être en plan large, à choisir sur la caméra.

Au choix de cette scène le son est automatiquement réactivé.

2. Scène slide + speaker en coin d’écran

Scène avec la slide, pour ceci on doit reprendre l’image de sortie du PC de présentation, à faire attention aux connecteurs toujours différents HDMI, mini HDMI, DP, VGA, etc… et le/la speaker en petit en coin d’écran.

Au choix de cette scène le son est automatiquement réactivé.

3. Scène audience ou speaker latéral

Scène de la caméra qui filmera les gens présents depuis le côté de la scène, proche du/de la speaker, pour les questions en particulier, et qui peut aussi être pointée sur le/la speaker.

Au choix de cette scène le son est automatiquement réactivé.

4. Scène de pause, indiquant l’heure de la prochaine conférence

Scène avec le logo des RHL et de l’heure de la prochaine conférence, peut-être avec une webcam en filigrane sur l’extérieur du bâtiment comme à PSES, ça peut être sympa si il neige. :stuck_out_tongue:

Cette scène comporte plusieurs sources de texte sur OBS, une par conférence, qu’on choisit d’afficher en fonction du déroulement des conférences. Cela peut se faire en mode Studio pour faire plus “pro” afin que ce soit prêt au moment du changement de scène, ça permet aussi d’éditer les textes en cours de route. J’ai également mis une horloge, notamment pour les personnes qui n’ont pas le même fuseau horaire qui voudrait regarder, même si c’est peu probable.

Au choix de cette scène le son est coupé.

5. Scène de problème technique

Juste un texte indiquant qu’il y a un problème technique, si quelqu’un a renversé une caméra. :smiley:

Au choix de cette scène le son est coupé.

6. Retard de conférence

Scène avec une horloge analogique indiquant qu’une conférence a été déplacée de son horaire prévu. Elle peut remplacer la scène 4. Il y a également la webcam en filigrane.

Au choix de cette scène le son est coupé.

7. Timer

Un compte à rebours d’une minute juste avant de lancer la conférence, qui donnera le top au Monsieur ou Madame Talk qui introduira la conférence et indiquera au/à la speaker de commencer sa conférence. Le compte à rebours fonctionne grâce au script fourni de base avec OBS Studio.

Au choix de cette scène le son est coupé.

8. Écran noir

Pour des besoins techniques éventuels.

Pas de modification du son au passage à cette scène.

Raccourcis clavier et petits paramètrages

J’ai défini les raccourcis clavier de manière très simple et efficace, chaque scène est atteignable par son numéro, scène 4 -> touche 4, etc.

L’audio se coupe en fonction des scènes choisies (uniquement si on utilise les raccourcis clavier, si on le fait via la souris cela ne se fait pas), on ne veut évidemment pas diffuser de son entre les conférences, si on doit le couper ou le réactiver sans changer de scène il suffit d’appuyer sur Espace.

Toute cette partie est OK pour moi, par contre je dois tester avec l’acquisition vidéo et le son, des tests sont prévus en situation réelle ces prochains temps.

Un serveur de streaming avec Nginx, RTMP et HLS

Pour streamer, je me réfère à la doc Debian et de OBS Studio:
https://debconf-video-team.pages.debian.net/docs/

J’ai déjà réussi à faire transiter un flux RTMP en IPv6:
OBS Studio machine 1 (PC portable) -> Nginx machine 2
Nginx machine 2 -> VLC PC portable

Point à avancer, si vous avez des connaissances c’est très apprécié.

Le setup vidéo (+ divers)

Le setup vidéo contient (pour le moment) le matériel suivant:

  • PC pour la récupération de l’acquisition HDMI de la caméra “audience” qui renverra via RJ45 (VLC) le flux au PC avec OBS Studio. Il a un disque SSD, USB 3, il est léger et petit, c’est un Intel NUC i5, à voir, je vais sûrement l’utiliser pour récupérer également l’image de la webcam (voir plus bas)
  • Je propose aussi d’amener un petit PC portable pour indiquer le temps écoulé/restant à la personne qui fait la conf, j’ai vu ça à la minidebconf, ils utilisent le timer sur le site web des TED events en plein écran
  • DSLR Canon 600D sortie mini HDMI 720p objectif 18-55mm ou 100mm, chose importante c’est qu’il faudrait une alim permanente, j’ai 2 accus, on peut tenir 60min par accus, pour le moment. Je n’ai pas le câble mini HDMI, il faut que j’en trouve un.
  • Cartes SD 32 Go pour Canon 600D (pas sûr de l’utilité, on n’utilise que la sortie HDMI)
  • Trépied 1m50-80 je sais plus, stable pour caméra arrière
  • 2 mini trépieds à poser sur une table (+ si nécessaire)
  • 1 webcam 1920x1080 (pas une qualité super, fonctionne mieux avec un bon éclairage), en cas de dépannage
  • Rallonges USB pour la webcam
  • Kit de nettoyage pour les objectifs
  • Panneau torche LED (° Kelvin + intensité réglable) si on a besoin d’éclairage additionnel, également je dois lui trouver un transfo plutôt que des accus

Caméras/entrées vidéo

  1. Une caméra arrière (speaker, plan large ou serré à choix) -> Canon 600D
  2. Une caméra latérale (audience + speaker en latéral) -> probablement un Nikon D800
  3. Une webcam qui filmera l’extérieur, la neige, etc pour avoir une image entre les conférences :slight_smile:
  4. Sortie vidéo du PC de présentation

Sorties vidéo

  1. Sortie HDMI sur beamer depuis le PC de captation du PC de présentation (un F11/plein écran devrait faire l’affaire, étant donné qu’on n’a pas de sortie HDMI direct sur le stick d’acquisition HDMI, il faut donc faire afficher l’entrée vidéo sur le bureau du PC de captation

SwissLinux va probablement faire l’achat de deux cartes d’acquisition HDMI supplémentaires, une pour la caméra latérale et une pour la capture de la sortie du PC de présentation.

Divers

  • Il faudra compter le nombre de multiprises et rallonges nécessaires.
  • J’aimerai faire un système de Tally light, mais c’est vraiment du must have. :stuck_out_tongue:

Le setup audio

Le setup audio contient (pour le moment) le matériel suivant:

  • Micro-cravate filaire
  • Micro à main dynamique filaire + câble mâle-femelle XLR 10m
  • Écouteurs pour tester le retour
  • Zoom R16 (8 pistes) pour l’enregistrement et le mixage (on me le prête)
  • Carte SD 16 Go pour l’enregistrement sur le R16
  • Micro d’ambiance (pas sûr, à voir si on me le prête)
  • Divers adaptateurs et câbles audio

Les entrées

  1. Micro-cravate speaker 1, une entrée jack 3.5mm/6.3mm
  2. Micro-cravate speaker 2 (à voir)
  3. Micro dynamique 1 XLR Sennheiser pour les questions + talk meister
  4. Micro dynamique 2 XLR/sans-fil (à voir) pour les questions
  5. Micro d’ambiance avant
  6. Micro d’ambiance arrière
  7. PC de présentation, jack 3.5mm

Les sorties

  1. Une double sortie RCA sur OBS Studio, via l’entrée analogique jack 3.5mm, voir avec l’USB si c’est supporté
  2. Une sortie éventuelle sur le Canon 600D pour faciliter la synchronisation audio/vidéo si on peut utiliser l’USB sur le R16
  3. Sortie écouteur du Zoom R16, pour contrôler les niveaux
  4. Sortie pour amplification audio, à voir si c’est nécessaire, si on peut utiliser ceux de la pièce ou si on doit prendre notre matériel

A voir si on peut obtenir un 2ème micro-cravate et un 2ème micro à main dynamique.

Le setup réseau

Pas grand chose de spécial, hormis un switch Gigabit 8 ports, je pense à la connexion des appareils suivants:

  • PC OBS Studio
  • PC webcam/caméra latérale
  • Antenne WLAN
  • PC speaker (éventuellement)
  • PC indicateur du temps restant (éventuellement)

Il faudra prévoir un câble RJ45 depuis le routeur.

Un lecteur vidéo web sur une page HTML

J’en ai repéré plusieurs:

Video.js

VideoJS HLS (à priori deprecated)

videojs-http-streaming (VHS)

Le staff nécessaire

Plusieurs personnes sont nécessaires pour que tout se déroule au mieux, évidemment en fonction du nombre de personnes certaines seront multi-casquettes et prendront plusieurs rôles, après c’est aussi intéressant d’inclure d’autres personnes à participer.

Je suis conscient que ça paraît très “procédurier” au premier abord tout cela, le but est de ne rien oublier et de faire au mieux, pas d’être exigeant voir intransigeant, en fait c’est plutôt une liste de rappel pour moi. :slight_smile:

Monsieur ou Madame Talk

  • Devra introduire et terminer la conférence (bonne expression requise)
  • Gérer le temps, chercher les speakers suivants avant la fin de la prochaine conférence.
  • Attend le top départ de l’opérateur stream

Opérateur·trices caméra

  • Surveille l’état de la caméra (batterie si il y en a)
  • Contrôle la mise au point
  • Contrôle la direction, le déplacement, le zoom, uniquement avec l’accord de l’opérateur stream
  • A un contact visuel régulier avec l’opérateur stream

Opérateur·trice stream

  • Met en place les caméras et le setup vidéo, nettoie les optiques, règle les paramètres (balance des blancs, etc) avant les conférences
  • Gère les scènes avec OBS Studio, modifie les textes des prochaines conférences
  • Contrôle le retour audio de OBS Studio
  • Donne le départ de la conférence ( https://countdown.ted.com/ )
  • Assure l’enregistrement et le streaming
  • S’assure que le flux est bien transmis au serveur de broadcast

Opérateur·trice serveur upstream

  • Gère le broadcast son + vidéo, la bande passante, la charge due au nombre de personnes connectées
  • S’assure que les utilisateurs·trices finaux peuvent lire le stream et le son

Opérateur·trice son

  • Met en place le setup son, règle les niveaux, s’assure de la qualité sonore de l’ensemble
  • Dispose un code couleur sur les micros à main (pour identifier rapidement si un réglage de niveau est nécessaire)
  • Dispose le micro-cravate sur le/la speaker
  • Règle les niveaux en permanence
  • Gère l’amplification

Conclusion

Voilà, je pense ne pas avoir oublié grand chose, évidemment que je vais m’occuper d’une très grande partie de tout ça, comme dit c’est plutôt une liste de rappel pour moi qu’autre chose et aussi un moyen de partager les infos si quelqu’un voudrait faire le même setup. Le but étant d’améliorer la qualité d’enregistrement des conférences des RHL et de faire pour la première fois un streaming fonctionnel avec un setup testé et approuvé, contrairement à ce que j’ai pu rencontrer plusieurs fois (pas lors des RHL).

Dans l’idée, ce setup serait également utilisable pour d’autres conférences le reste de l’année.

1 J'aime

Hello,

Merci pour ce post intéressant et bien documenté. Je pense pas que je vais beaucoup m’invertir dans ce sujet donc je te laisse un peut gérer.

Donc QoS ?

Pour moi dans l’idée c’est OK. Ça serait intéressant de mesurer la bande passante que prends un flux (envoyé aux clients web), histoire de savoir quel début devra pouvoir envoyer notre serveur.

Ah oui aussi, si tu as besoin d’aide pour le setup des config de la VM dédiée à cela (sur git) dis moi.

Et comme l’année dernière vous pourrez mettre les vidéos sur peertube.ch

Hello,

Je suis en train de mettre à jours le schéma de l’infra. On
choisi quoi comme nom de machine ce service ?

Bonjour,

Merci de vos réponses.

@josue : oui QoS, je ferai des mesures de la place que prend un stream RTMP sur le réseau selon la résolution. L’idée c’est que le serveur effectue une compression avant d’envoyer aux clients, ce qui permet une optimisation de la bande passante disponible.

Oui je pense que j’aurai besoin d’un coup de main pour faire une VM propre, et notamment car cela fait un moment que je n’ai pas utilisé git.

@tursiops : oui merci de la proposition, je n’ai pas l’accès au compte qui a publié les vidéos, est-ce qu’une chaîne sur Peertube peut être gérée par plusieurs personnes ?

Également est-ce que on peut créer une chaîne pour SwissNeutralNet ?

Je ne sait pas si une chaine peut être gérée par plusieurs personnes, mais pour ta deuxième question, oui on peut créer un chaine pour SNN, donne moi simplement l’email et le pseudo que tu veux pour le compte et ensuite tu pourra toi créer autant de chaines que tu veux.

@tursiops Merci pour le compte !

1 J'aime

Hello,

Donc par rapport au setup initial prévu :

  • Le DSLR Canon 600D n’est pas utilisable, impossible de lui faire sortir une image sans un élément de paramètre affiché à l’écran, je ferai éventuellement encore une recherche avec Magic Lantern si c’est possible.
  • J’ai trouvé une caméra full HD qui fera l’affaire et qui n’affiche rien sur l’écran en mode photo. :stuck_out_tongue:
  • J’ai fait des essais avec des cartes d’acquisitions HDMI, un modèle pas cher à 10-15 CHF/pièce qui est une catastrophe (image noir et blanc au lieu de couleur, grain, parasites) et une autre à 50 CHF/pièce qui est 4K et qui permet de ressortir pour un beamer par exemple, c’est celle-là que je privilégierai, il m’en faudrait deux autres (2ème caméra, PC de présentation).
  • J’ai reçu une une mini formation sur Ardour pour gérer de l’audio multipistes en live

Je n’ai pas avancé comme voulu pour le setup, je ne sais pas si le streaming sera faisable, ou alors sur un serveur que nous ne maîtrisons pas.