# Sous-titres en direct : support par plateforme

> **Périmètre** — Sous-titres sur flux live poussé depuis un encodeur (RTMP/RTMPS, SRT, HLS ingest).
> Le cas du VOD posté après coup est signalé séparément quand il diffère.
>
> **Dernière vérification** — 3 septembre 2026. Les plateformes sociales font évoluer ces
> mécanismes sans préavis : revalider avant tout engagement client.

---

## 1. Les quatre mécanismes possibles

Avant le tableau par plateforme, il faut distinguer les voies de transport, parce que
« supporter les sous-titres » ne veut pas dire la même chose selon la plateforme.

| Mécanisme | Description | Transport |
|---|---|---|
| **In-band SEI** | CEA-608 / CEA-708 encodés dans le flux vidéo élémentaire H.264, dans le user_data SEI (ATSC A/53 ou A/72). Standard historique broadcast. | RTMP, SRT/TS, HLS ingest |
| **Tag script RTMP** | `onCaptionInfo`, tag script AMF0 transportant une matrice ECMA. Format courant chez les encodeurs et media servers internet. | RTMP uniquement |
| **Canal hors bande** | URL d'ingestion HTTP dédiée, alimentée en parallèle du flux vidéo. | HTTP, hors du flux |
| **Burn-in (open captions)** | Texte incrusté dans l'image. Fonctionne partout, non désactivable par le spectateur, invisible pour les lecteurs d'écran. | Tous |

À quoi s'ajoute l'**ASR plateforme** : auto-captions générés côté plateforme depuis la piste
audio. Ne demande rien à l'encodeur, mais on ne le contrôle pas.

---

## 2. Tableau de synthèse

| Plateforme | In-band 608/708 | onCaptionInfo | Canal dédié | ASR plateforme | Multi-langue live |
|---|---|---|---|---|---|
| **YouTube Live** | Oui | Non documenté | Oui, URL signée | Oui | Non, une piste |
| **LinkedIn Live** | Oui (pass-through) | Non documenté | Non | Oui, anglais seul | Non |
| **Facebook Live** | Oui, via Live API | Non documenté | Non | À vérifier | Non documenté |
| **Twitch** | Oui (ATSC A/72) | Oui | Non | Non | Non documenté |
| **X / Twitter** | Non documenté | Non documenté | Non | Non | — |
| **Instagram Live** | Non applicable | — | — | Oui | Non |

---

## 3. YouTube Live

### In-band

Dans les réglages d'encodeur, choisir les sous-titres EIA-608 / CEA-708, parfois appelés
« embedded ». Selon le setup, ils sont lus depuis un format de fichier ou encodés en temps réel.

**Limitation importante** : le standard 608/708 supporte jusqu'à quatre pistes de langue,
mais YouTube n'en prend en charge qu'une seule.

### Canal dédié

En bas de l'onglet *Setup* des paramètres, une section *Closed Caption* permet d'activer les
sous-titres et d'exposer une **Captions Ingestion URL**, qui est une URL HTTP signée.
Chaque point d'entrée de flux ne peut avoir qu'un seul feed de sous-titres.

C'est la voie utilisée par les logiciels de sténotypie et les prestataires CART
(Eclipse/AccuCap, Case CATalyst BCS, CaptionMaker, etc.).

### Contrainte de délai

Avec les logiciels supportés, ajouter un délai de diffusion de **30 ou 60 secondes** dans
l'onglet *Advanced settings* avant l'événement.

### HLS ingest

Les sous-titres embarqués passent dans le conteneur M2TS comme n'importe quel flux TS.
Voie à privilégier si on est déjà en HLS ingest pour du HEVC ou du HDR.

---

## 4. LinkedIn Live

### Deux sources, avec priorité

Le sous-titrage peut venir soit du **pass-through closed captioning**, soit des
**auto-captions**, ces derniers étant uniquement en anglais. Si les deux sont disponibles
sur un même flux, le lecteur n'affiche **que les auto-captions**. Le bouton CC apparaît en
bas à droite du lecteur.

### Point de scéno à ne pas rater

Les sous-titres sont **toujours affichés en bas de l'écran**, et LinkedIn demande
explicitement de ne placer aucun titrage, bandeau ou sticker en bas de l'image pour éviter
le chevauchement.

→ À intégrer dans les gabarits de lower-thirds **dès la conception graphique**.

### Périmètre de l'ASR

L'auto-captioning LinkedIn Live a été lancé via l'API, avec une technologie Microsoft, pour
les diffuseurs passant par les partenaires API (Restream, StreamYard, Switcher, Socialive),
**en anglais uniquement**.

**Conséquence pour les clients francophones** : l'ASR LinkedIn ne couvre pas le français.
Pour du sous-titrage FR sur LinkedIn Live, il faut passer par du pass-through 608 injecté en
amont par un prestataire, ou par du burn-in.

### VOD LinkedIn (hors live)

Ajout de sous-titres avec un fichier **SRT** attaché à la vidéo avant publication, depuis le
desktop uniquement, pour les comptes personnels comme pour les Pages. Les auto-captions à
l'upload sont réservés aux vidéos en anglais, avec une option de relecture avant publication.

---

## 5. Facebook Live

Le support repose sur les sous-titres **CEA-608 injectés dans le flux**, pour les éditeurs
utilisant la Live API, éventuellement via un prestataire tiers qui les insère en temps réel.

Au lancement, Facebook ne proposait **pas** de sous-titrage automatique pour le live,
contrairement aux vidéos de Page enregistrées. Seuls les éditeurs passant par la Live API et
générant du CEA-608 pouvaient ajouter des sous-titres.

> ⚠️ Ces éléments sont anciens et l'API Meta a beaucoup bougé depuis.
> À revalider dans la doc développeur Meta avant tout engagement client.

---

## 6. Twitch

Twitch documente plusieurs méthodes de transmission, dont deux clairement identifiées :

1. **CEA-708/EIA-608 embarqués dans le flux vidéo élémentaire**, comme décrit dans ATSC A/72
   (SEI user_data). Format courant des encodeurs broadcast.
2. **CEA-708/EIA-608 transmis via un tag script/AMF0 RTMP `onCaptionInfo`**, format le plus
   répandu chez les encodeurs internet et media servers, dont Elemental et Wowza. Le payload
   doit contenir une matrice ECMA avec deux paires d'éléments :
   - une chaîne nommée `type` contenant les caractères `708`
   - une chaîne nommée `data` contenant le payload CEA-708/EIA-608 encodé en base64

En pratique, l'écosystème Twitch grand public passe surtout par des **extensions d'overlay**
installables depuis le dashboard, activables en panel, composant ou overlay. Ce n'est pas une
piste CC dans le lecteur, c'est une surcouche.

---

## 7. X / Twitter et Instagram Live

**X** — Aucun mécanisme d'ingestion de sous-titres live documenté. Burn-in ou rien.

**Instagram Live** — Pas de chaîne d'ingestion tierce pertinente : l'ASR plateforme est la
seule voie, et il n'y a pas de piste CC contrôlable depuis l'encodeur.

---

## 8. Règles opérationnelles à retenir

### Le multilingue live ne passe pas par 608

Le standard offre quatre canaux, mais YouTube n'en lit qu'un et LinkedIn ne fait de l'ASR
qu'en anglais. Pour un événement multilingue, les trois options réalistes sont :

- un flux et un événement **par langue**
- du **burn-in** par langue
- une **application de sous-titres déportée**, hors du lecteur

### Le 608 est un tunnel étroit

Positionnement, casse et polices sont figés, sans personnalisation possible.

### Le passthrough se casse silencieusement

OBS ne fait pas passer les 608 embarqués dans une source média : le passthrough de flux média
n'est pas dans le périmètre des développeurs. Toute chaîne avec un mixeur logiciel au milieu
doit être **testée bout en bout**, jamais supposée.

### Toujours répéter en unlisted

Le sous-titrage est la fonction la plus fragile de la chaîne : elle dépend de l'encodeur, du
transcodeur, du transport et du lecteur, et elle échoue **sans alarme**.

### Prestataires à connaître

Pour industrialiser : SyncWords, AI-Media, EEG/Falcon, 3Play, Verbit, StreamText, Videolinq.
Tous parlent 608, la plupart s'insèrent en relais RTMP(S) ou SRT sans matériel dédié.

---

## Sources

| Sujet | Référence |
|---|---|
| YouTube — prérequis sous-titres live | `support.google.com/youtube/answer/3068031` |
| YouTube — HLS ingest | `support.google.com/youtube/answer/10349430` |
| YouTube — comparaison protocoles d'ingest | `developers.google.com/youtube/v3/live/guides/ingestion-protocol-comparison` |
| LinkedIn — côté spectateur | `linkedin.com/help/linkedin/answer/a554237` |
| LinkedIn — côté diffuseur | `linkedin.com/help/linkedin/answer/a569473` |
| LinkedIn — sous-titres VOD (SRT) | `linkedin.com/help/linkedin/answer/a552177` |
| LinkedIn — auto-captions à l'upload | `linkedin.com/help/linkedin/answer/a1327025` |
| Twitch — méthodes de transport | doc Twitch sous-titres / ATSC A/72, `onCaptionInfo` |
| Facebook Live — CEA-608 via Live API | annonce 2017, à revalider dans la doc Meta |