Symposium sur la sécurité des technologies de l'information et des communications

Journal du comité d'organisation

Live streaming SSTIC - Capture

· par le comité d'organisation
Première étape du livestreaming : la capture vidéo. Nous vous proposons ici de passer en revue la configuration matérielle utilisée au SSTIC en 2019 et la partie logicielle de la composition et de l’encodage.

Ce billet est le troisième d’une série de 5 :

  1. introduction et considérations pour le SSTIC ;
  2. l’architecture de streaming ;
  3. la chaîne de capture audio/vidéo sur place ;
  4. le transcodage des flux en différentes qualités ;
  5. les serveurs frontaux accédés par les internautes.

Matériel

En régie, on retrouve 3 catégories de matériel. Ils participent à l’un des trois volets suivants :

  • la captation vidéo ;
  • la capture des sources vidéo et audio ;
  • la composition, l’encodage et la diffusion vers Internet.
Répartition du matériel en régie en 2018.

Répartition du matériel en régie en 2018. (pleine taille)

Captation vidéo

La configuration suivante est utilisée :

  • appareil Canon 5D Mark III, firmware 1.2.3
    • firmware Magic Lantern 1.2.3-ml-Nightly.2 ;
  • objectif Canon EF 70-200mm f/4 L IS USM ;
  • trépied Manfrotto MT190GOA4 ;
  • rotule vidéo Sirui VA-5.

L’appareil avec capteur full frame permet d’assurer une qualité vidéo excellente en basse voire très basse luminosité. L’éclairage de la scène est variable et généralement bas, pour minimiser la gêne ressentie par les orateurs qui ne sont pas des professionnels du spectacle habitués aux projecteurs.

Le 5D Mark III permet en plus d’obtenir une sortie HDMI propre, dépourvue de menus, et qui n’est pas réencodée. En effet, de nombreux camescopes proposent une sortie HDMI «live» soit qui inclut les overlays, soit qui est réencodée «à la truelle» et génère des effets d’aplat de couleurs. Il est facile de trouver une caméra 4K performante pour enregistrer sur un support. Il est plus difficile de trouver quelque chose qui sort un flux impeccable en HDMI ou en SDI sans se ruiner.

Autre bonus : Magic Lantern permet d’utiliser l’appareil en mode vidéo crop 3x qui utilisera les pixels du centre du capteur au lieu d’une répartition sur toute sa surface, c’est-à-dire que l’on aura un zoom équivalent à 210-600mm f/4. Par exemple, en 2018 il était fait usage d’un 70-200mm f/2.8 avec un doubleur de focale, pour un zoom effectif de 140-400mm f/5.6. Le mode crop 3x permet ici de gagner en ouverture par rapport à cette configuration. La régie étant très loin de la scène, il est nécessaire de pouvoir atteindre 400mm de focale. Dans les salles précédentes, 200mm suffisaient. Magic Lantern permet également d’utiliser l’appareil en mode vidéo pendant plus de 30 minutes.

Avec quelques batteries et une carte SD, l’ensemble est revenu à 2700€ TTC (dont 1440€ pour l’appareil d’occasion et 984€ pour l’objectif d’occasion également). Il est conseillé d’investir dans un stock de batteries suffisant et même dans une alimentation électrique externe.

Pour ceux qui auraient peur d’acheter un appareil avec un firmware incompatible : il est possible de downgrade vers la version 1.2.3 en suivant cette méthode (elle n’utilise que les logiciels officiels, et a été effectuée pour notre propre matériel).

Capture des sources audio et vidéo

En 2018, l’association a investi dans deux racks de capture Blackmagic Ultrastudio 4K II (environ 950€ TTC l’unité). Chacun permet de gérer de multiples sources, mais n’en sortira qu’une seule simultanément. S’il n’est pas possible de faire du picture-in-picture avec différentes sources branchées sur le même rack, il est en revanche possible de passer de l’une à l’autre depuis la façade du rack lui-même sans rupture de flux.

Pour notre configuration, il nous faut deux racks :

  • le premier gère le flux vidéo provenant du 5D Mark III, et le flux audio provenant des micros de la scène ;
  • le second gère les flux vidéo et audio provenant de l’ordinateur de présentation.

Les deux sont reliés en Thunderbolt, chaînés l’un à l’autre, puis connecté au portable de composition d’encodage.

Les racks gèrent des sources et connectiques variées :

  • vidéo :
    • HDMI, avec audio,
    • SDI coaxial jusqu’à 6 Gbits/s,
    • YcBcR coaxial, permettant éventuellement de capturer des sorties VGA avec un adaptateur VGA vers BNC (non testé),
    • NTSC/PAL coax ;
  • audio :
    • XLR3 audio + timecode,
    • AES coaxial,
    • RCA stéréo.

Chaque connectique d’entrée est doublée par une sortie au même format. Cela permet de rendre le flux source à un autre équipement en pass-through.

La connectique Thunderbolt 2 (mini-displayport) fonctionne sur un port USB type C avec un convertisseur adéquat et est utilisée dans cette configuration (daisy-chain des deux racks en Thunderbolt 2 mini-dp, puis connexion via convertisseur USB type C).

Câblage des racks de capture en 2019.

Câblage des racks de capture en 2019. (pleine taille)

PC de composition, encodage et diffusion

En 2019, le SSTIC a acheté deux portables identiques pour assurer le streaming, dont l’un ne sert en remplacement du premier qu’en cas de problème majeur. Il peut donc être utilisé en temps normal pour les présentations des orateurs étourdis ou en cas de problème de paramétrage vidéo de leur ordinateur personnel.

La configuration est la suivante (1169€ neuf l’unité) :

  • Lenovo Thinkpad T480 :
    • Intel Core i5-8250U @ 1.8 Ghz,
    • 16 Go RAM 2400 Mhz,
    • SSD 256 Go.

Cette configuration permet de gérer le décodage h264 des flux provenant des racks Blackmagic et de réaliser l’encodage vers du 1080p. L’encodeur matériel QuickSync H.264 fonctionne correctement pour décharger le CPU.

Mise en place

Seuls deux logiciels sont strictement nécessaires :

  • le driver Blackmagic et son logiciel de paramétrage, téléchargeable en recherchant Blackmagic Desktop Video. Il est disponible pour Windows, macOS et Linux ;
  • OBS Studio (Open Broadcaster Software), qui gère nativement les cartes de capture Blackmagic sous les 3 systèmes d’exploitation. En revanche, ce n’est pas le cas pour le matériel de capture Elgato utilisé lors des éditions 2014-2017, qui ne sont gérées nativement que par OBS Studio sous Windows, via un driver DirectShow.

Le configurateur Blackmagic Desktop Video Setup permet de valider le bon fonctionnement des cartes, paramétrer les sorties et de nommer les cartes, ce qui s’avère utile pour les intégrer dans les scènes. Blackmagic Media Express permet également de tester la capture et les fichiers produits.

Par la suite, tout se fera dans OBS Studio. Pour le SSTIC, la connexion au serveur de transcodage se fait uniquement par l’intermédiaire d’un tunnel SSH relayant les ports TCP 1935 et 80.

Prise de vue continue avec le Canon 5D Mark III et Magic Lantern

Premièrement, assurez-vous d’avoir installé Magic Lantern avec le module crop_rec (crop mode recording). Sauvegardez une copie complète des fichiers de la carte SD, afin de pouvoir les restaurer en cas de problème (une copie bit-à-bit est inutile). Attention, sans ces fichiers, votre 5D Mark III ne bootera plus après une veille prolongée. Il arrive de supprimer accidentellement les fichiers à la racine, comme l’autoexec.bin. La sauvegarde est votre seul salut, et il sera possible de la remettre sur une autre carte.

Réglage prise de vue et sortie HDMI

Placez l’appareil en mode vidéo.

  • Dans le menu Canon SHOOT4:Movie, réglez l’option Movie rec. size à la résolution désirée. Le type d’encodage n’aura aucun effet (IPB / ALL-I) sur le flux HDMI, mais affectera les fichiers que vous enregistrerez éventuellement sur la carte. Il n’est pas nécessaire, voire indésirable, d’enregistrer sur la carte.
  • Dans le menu SHOOT5:Movie, réglez l’option HDMI output + LCD en mode Mirroring, afin de pouvoir suivre votre sujet à l’écran de l’appareil.
Paramètres de prise de vue du 5D Mark III.

Paramètres de prise de vue du 5D Mark III. (pleine taille)

  • Dans le menu SET UP 2, désactivez l’auto power off, et choisissez le HDMI frame rate désiré.
  • Dans le menu SET UP 3, choisissez le Video system désiré, cela n’a un impact que sur les FPS possibles (25/50 pour PAL, 30/60 pour NTSC).
Paramètres de veille et de frame rate du 5D Mark III.

Paramètres de veille et de frame rate du 5D Mark III. (pleine taille)

Faites vos réglages de sensibilité, ouverture et obturateur. Il est recommandé d’ouvrir au maximum, de régler l’obturateur à un multiple du framerate visé pour éviter les effets de clignotement des lampes, et d’ajuster ensuite la luminosité avec le réglage de la sensibilité du capteur (ISO). Le 5D Mark III montera facilement à 3200 ISO et même plus si besoin, sans bruit gênant en mode vidéo.

Au couvent des Jacobins, la prise de vue s’effectue principalement à 600mm effectifs, f/4 (maximum possible), 1/100 et ISO 1600. En 2018, elle était prise à 400mm effectifs, f/5.6 (maximum possible avec un doubleur), 1/30, ISO 3200 ; l’éclairage des orateurs était beaucoup plus sombre cepdendant.

Enfin, faites le point sur votre sujet ou une «doublure» pour les essais, puis passez l’autofocus en mode manuel. Cela évitera les déréglages intempestifs.

Crop mode 3x (tripler sa focale gratuitement)

Dans le menu Magic Lantern (accessible via bouton de suppression sur l’écran d’information principal), accédez au menu Movie, puis activez le Crop mode 1:1 (3x).

Activation du crop mode 3x sous Magic Lantern.

Activation du crop mode 3x sous Magic Lantern. (pleine taille)

Pour activer le crop 3x, quittez le menu Magic Lantern, puis appuyez le bouton play deux fois. Un bug peut nécessiter de passer en mode live view, puis d’entrer et de quitter le menu Magic Lantern. Parfois il faudra aussi quitter puis revenir en mode vidéo, voire redémarrer l’appareil.

Une fois le mode 3x engagé, ne touchez plus aux réglages Magic Lantern.

Enregistrer plus de 30 minutes

C’est possible de tricher en activant une option pour maintenir virtuellement le déclencheur à moitié enfoncé. Cela a pour effet de réinitialiser continuellement la mise en veille de l’appareil.

Dans le menu Magic Lantern, accédez au menu Prefs, choisissez Misc key settings, puis activez l’option Sticky HalfShutter.

Activation du sticky half shutter sous Magic Lantern.

Activation du sticky half shutter sous Magic Lantern. (pleine taille)

Ensuite, préparez vos réglages de prise de vue, passez le focus en mode manuel, et pressez le déclencher à moitié : un témoin rouge «HS» doit appaître à l’écran pour indiquer que le bouton half shutter est pressé. Ne touchez plus au déclencheur pour continuer à fournir un flux à la sortie HDMI continuellement.

Témoin d'engagement du sticky half shutter.

Témoin d'engagement du sticky half shutter. (pleine taille)

Si vous devez changer des réglages, comme l’ouverture ou la sensibilité, vous devrez désengager le half shutter. N’oubliez-pas de le remettre après.

OBS Studio

Il est donc possible de définir ses scènes avec les différents éléments graphiques. Des PNG transparents sont préparés à l’avance pour les différents éléments des visuels : fonds et masques avec logos et bandeaux. Pour faciliter la composition, toutes les images sont produites en résolution native de la vidéo, même s’il ne s’agit que de la watermark en bas à droite.

Scènes paramétrées dans OBS Studio

Scènes paramétrées dans OBS Studio (pleine taille)

Quelques points d’attention sur les différentes scènes :

  • les sources audio sont liées aux sources vidéo des racks Blackmagic. Pour une scène disposant que des slides, sans la caméra, la source de la caméra doit tout de même être présente (masquée, ou en arrière plan) dans la scène pour obtenir le flux audio ;
  • il est possible de rogner une vidéo pour la faire se confomer à un ratio différent de 16/9 ;
  • prévoyez des scènes pour gérer des slides dans au moins deux aspect-ratio différents : 16/9 et 4/3. Il est plus joli d’intégrer proprement les slides plutôt que de laisser de grosses bandes noires sur les côtés ;
  • éviter d’avoir trop de scènes : le multiview n’est réellement utilisable qu’avec 8 scènes, et vous vous perdrez dans ce qu’elles représentent. Nommez-les de manière explicite.

Une fois les scènes paramétrées, il ne reste plus qu’à régler les paramètres d’encodage, de diffusion (serveur RTMP) et d’enregistrement local.

Pour le SSTIC 2019, les paramètres d’encodage sont les suivants :

  • encodeur QuickSync H.264 ;
  • profil: baseline ;
  • intervalle keyframe: 2 secondes ;
  • mode: CBR ;
  • bitrate: 6144 ;
  • résolution 1920x1080, 30 FPS, sans rescaling.

Lors de la diffusion, il est possible de voir le rendu des différentes scènes en temps réel avec le multiview :

Multiview dans OBS Studio

Multiview dans OBS Studio (pleine taille)

Vous pouvez ainsi vous rendre compte visuellement des éléments graphiques gênant, par exemple le picture-in-picture qui peut recouvrir un schéma important de la présentation en cours et choisir la meilleure alternative.

Scripting

Il est possible de scripter les changements de scène, le début de l’enregistrement et de la diffusion. Il suffit pour cela d’installer l’extension OBS Websocket, qui exposera une API web pour contrôler la diffusion. Il est alors possible d’utiliser une implémentation en python pour scripter sa diffusion avec obs-websocket-py (disponible avec pip).

Pour le SSTIC, le scripting sert :

  • à modifier les noms de la présentation et des orateurs ;
  • à découper la vidéo sur le poste d’encodage en déclenchant l’arrêt et le démarrage de l’enregistrement local ;
  • à découper la vidéo sur le serveur de transcodage en appelant l’API web du recorder au travers du tunnel SSH.

obs-websocket-py contient quelques scripts d’exemple vous permettant de faire ce qui vous plait.

Problèmes

Le premier problème sera la gestion des changements de ratio sur les slides de vos orateurs. Si vous n’avez pas prévu une scène adaptée pour chaque ratio, vous perdrez du temps à le configurer en direct, et ce sera visible.

Le «studio mode» d’OBS permet de prévisualiser une scène sans l’utiliser pour la diffusion, mais nécessite une machine puissante pour ne pas perdre en débit d’image. Sous macOS ce mode est buggé et aura des performances misérables à cause de problèmes de vsync. Le workaround consiste à désactiver la preview de la fenêtre principale et d’utiliser le multiview à la place pour choisir ses scènes, parfois en réduisant la fenêtre principale.

Ensuite, les problèmes réseau seront vos premiers vrais ennemis. Il est arrivé que certains routeurs ou switchs se mettent subitement à temporiser tous les paquets durant de nombreuses secondes, générant des ruptures de flux. L’enregistrement local est primordial pour garantir l’obtention d’une vidéo ininterrompue.

Pour le reste, nous ne pouvons que vous conseiller de tester votre configuration de nombreuses heures, dans diverses conditions, et d’envisager des solutions de repli : 4G, changement de PC, encodeur matériel ou logiciel, caméra de secours…

Surveillez vos serveurs de transcodage et frontaux également, pour être sûr que nginx ne plante pas, mais aussi pour vérifier la charge CPU et réseau en temps réel. Vous ne devez jamais stagner à 100% CPU, sans quoi le flux en direct souffrira de saccades. C’est généralement le signe que vous demandez trop au transcodage.

Pour le débit, il s’agit d’anticiper les besoins en nouveaux frontaux. Si vous sentez que vous êtes limite en bande passante, il peut-être utile de rajouter un serveur frontal rapidement, en cas d’afflux inattendu de spectateurs.