Désentrelacement vidéo et fusion de trames pour encodeurs broadcast
Désentrelacez les flux 1080i des encodeurs Nimbra, Ateme et Harmonic. Fusion de trames, filtrage bwdif, pipeline accéléré GPU.
Le problème de l’entrelacement dans les workflows IP
La vidéo entrelacée n’est pas près de disparaître. L’infrastructure SDI tourne en 1080i50 et 1080i59.94 en Europe et en Amérique du Nord. Quand les encodeurs broadcast convertissent le SDI en transport IP (SRT, UDP, HTTP), le signal entrelacé arrive à l’autre bout sous l’une de ces deux formes :
- Entrelacé standard : 1920x1080i à 25/29,97 fps. Chaque image contient deux trames entrelacées (trame haute, trame basse). C’est le format standard.
- Trame en demi-hauteur : 1920x540 à 50/59,94 fps. Chaque trame SDI est encodée comme une image progressive séparée à la moitié de la résolution verticale. C’est courant avec les encodeurs Nimbra, Ateme et Harmonic.
Le second format est le problématique. L’encodeur a séparé l’image entrelacée en ses trames constituantes et encodé chacune comme une image indépendante. Le récepteur reçoit un flux 540p au double de la fréquence d’images, qui apparaît incorrect sur n’importe quel moniteur — compressé verticalement, avec la moitié de la résolution.
Vajra Cast gère les deux cas. Le pipeline de traitement détecte le format et applique la chaîne de filtres appropriée automatiquement.
Fusion de trames (Field Merge)
La fusion de trames est la première étape pour traiter les flux en trames demi-hauteur. Elle recombine deux images 540p consécutives en une seule image 1080i.
Entrée : 1920x540 @ 50fps (deux trames encodées comme images séparées) Sortie : 1920x1080i @ 25fps (image entrelacée standard)
Le filtre FFmpeg est tinterlace=merge, qui prend des paires d’images consécutives et entrelace leurs lignes :
- Image 0 (540 lignes) → trame haute (lignes impaires de l’image 1080)
- Image 1 (540 lignes) → trame basse (lignes paires de l’image 1080)
Après la fusion, le flux est un signal entrelacé standard qui peut être traité davantage ou transmis tel quel vers des destinations entrelacées.
Quand la fusion de trames est-elle nécessaire ?
| Symptôme | Cause | Solution |
|---|---|---|
| Résolution 1920x540 au double de la fréquence | L’encodeur envoie les trames comme images | Fusion de trames |
| Image compressée verticalement | Idem — trames demi-hauteur | Fusion de trames |
| Flux 1080i normal | Déjà correctement entrelacé | Passer au désentrelacement |
Encodeurs qui produisent des trames séparées
| Encodeur | Sortie typique | Notes |
|---|---|---|
| Net Insight Nimbra | 1920x540 @ 50/59,94fps | Courant en contribution satellite. Les séries Nimbra VA 210/220 et les configurations de passerelle vidéo produisent souvent les trames comme images progressives sur IP. |
| Ateme Kyrion/Titan | 1920x540 @ 50/59,94fps | Les encodeurs Ateme en modes MPEG-2 et H.264 peuvent séparer les trames selon le profil d’encodage et les paramètres de transport. Vérifiez la configuration « field mode ». |
| Harmonic Ellipse/VOS | 1920x540 @ 50/59,94fps | Les encodeurs Harmonic dans certaines configurations MPEG-2 TS produisent des trames séparées. Particulièrement courant avec la série Ellipse en contribution. |
| MPEG-2 TS générique | Variable | Tout encodeur produisant un Transport Stream MPEG-2 avec encodage au niveau trame peut présenter ce comportement. |
Chaque unité de ces fabricants ne produira pas forcément des trames séparées. Cela dépend du profil d’encodage, de la configuration de transport et de la version firmware. Si vous recevez un flux 540p au double de la fréquence attendue de l’un de ces encodeurs, la fusion de trames est la solution.
Désentrelacement
Une fois que vous avez un signal 1080i correct (reçu directement ou reconstruit via fusion de trames), le désentrelacement le convertit en progressif :
Entrée : 1920x1080i @ 25fps (entrelacé, deux trames par image) Sortie : 1920x1080p @ 50fps (progressif, une image complète par trame)
Vajra Cast utilise l’algorithme bwdif (Bob Weave Deinterlacing Filter). bwdif produit une image de sortie par trame, doublant la fréquence d’images tout en maintenant la pleine résolution. Le résultat est une vidéo progressive fluide à 50fps.
Pourquoi bwdif plutôt que yadif ?
Les deux sont des désentrelaceurs adaptatifs au mouvement, mais bwdif produit de meilleurs résultats sur le contenu broadcast :
| Aspect | bwdif | yadif |
|---|---|---|
| Qualité des contours | Meilleure — interpolation gaussienne pondérée sur 3 lignes | Bonne — interpolation linéaire sur 2 lignes |
| Gestion du mouvement | Plus fluide — noyau de filtre plus large | Correct — noyau plus petit |
| Artefacts | Moins de dentelures sur les mouvements diagonaux | Plus visibles sur le contenu rapide |
| Coût CPU | Légèrement supérieur | Légèrement inférieur |
| Recommandation | Choix par défaut pour le broadcast | Solution de repli acceptable |
Pour la contribution broadcast où la qualité compte, bwdif est le bon choix. La différence CPU est négligeable et l’amélioration de qualité est visible sur n’importe quel moniteur de production.
Le pipeline complet
Pour traiter un flux en trames demi-hauteur vers une sortie progressive propre, Vajra Cast applique la chaîne de filtres suivante :
tinterlace=merge → setfield=tff → bwdif → setsar=1:1 → hwupload
Chaque étape :
| Filtre | Rôle |
|---|---|
tinterlace=merge | Recombine deux images 540p en une image 1080i |
setfield=tff | Définit l’ordre des trames en trame haute d’abord (standard pour le 1080i broadcast) |
bwdif | Désentrelace le 1080i en 1080p, doublant la fréquence d’images |
setsar=1:1 | Assure un rapport d’aspect pixel carré pour la sortie progressive |
hwupload | Transfère l’image en mémoire GPU pour l’encodage accéléré matériellement |
Le pipeline s’exécute en logiciel jusqu’à l’étape hwupload, puis délègue au GPU pour l’encodage (Intel QSV ou VAAPI). C’est délibéré : le désentrelacement est un filtre côté CPU qui nécessite l’accès aux données pixel brutes. Le GPU gère l’étape d’encodage la plus coûteuse en calcul.
Pour les flux déjà en 1080i standard (pas en trames séparées), le pipeline saute les deux premières étapes :
bwdif → setsar=1:1 → hwupload
Ordre des trames
L’ordre des trames est important. La plupart du contenu broadcast 1080i est en trame haute d’abord (TFF — Top Field First). Si l’ordre est incorrect, on obtient un effet caractéristique de « saccade » où le mouvement semble reculer d’une trame avant de se corriger. Vajra Cast utilise TFF par défaut mais peut être configuré en trame basse d’abord (BFF) si nécessaire.
Performance
Le désentrelacement est une opération côté CPU, mais elle est légère comparée à l’encodage :
| Opération | Coût CPU (1080i50 → 1080p50) |
|---|---|
| Fusion de trames (tinterlace) | ~2% d’un cœur |
| Désentrelacement (bwdif) | ~8-12% d’un cœur |
| setfield + setsar | Négligeable |
| Encodage matériel (QSV, 1080p50) | ~3% CPU (le GPU fait le travail) |
| Pipeline total | ~15% d’un cœur |
Un serveur moderne peut exécuter plusieurs pipelines de désentrelacement en parallèle sans difficulté. Le goulot d’étranglement est toujours le nombre de sessions de l’encodeur matériel, pas le filtre de désentrelacement.
Configuration dans Vajra Cast
Via l’interface web
- Ouvrez votre route dans le tableau de bord Vajra Cast.
- Accédez aux paramètres de Transcodage.
- Sous Traitement d’entrée, activez Désentrelacement.
- Si votre source est en trames séparées (540p au double de la fréquence), activez aussi Fusion de trames.
- Sélectionnez l’ordre des trames (TFF par défaut, correct pour la plupart du contenu broadcast).
- Appliquez. La chaîne de filtres est insérée avant l’encodeur.
Via l’API REST
curl -X POST -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deinterlace": {
"enabled": true,
"fieldMerge": true,
"fieldOrder": "tff",
"algorithm": "bwdif"
},
"encoder": "qsv",
"codec": "h264",
"width": 1920,
"height": 1080,
"bitrate": 8000,
"fps": 50
}' \
http://localhost:8080/api/v1/routes/1/transcode
Détection automatique
Vajra Cast peut détecter les trames séparées en analysant les métadonnées du flux (résolution et fréquence d’images). S’il détecte du 1920x540 à 50fps sur une route configurée pour une entrée 1080i, il active automatiquement la fusion de trames. Vous pouvez désactiver ce comportement dans les paramètres de la route si nécessaire.
Scénarios courants
Contribution Nimbra vers sortie progressive
Une liaison de contribution satellite utilisant des encodeurs Nimbra délivre du 1920x540@50fps via SRT. Vous avez besoin de 1080p50 propre pour votre workflow de production :
Nimbra (1920x540@50fps SRT) → Vajra Cast → Fusion + Désentrelacement → 1080p50 H.264 (sortie SRT)
Encodeur Ateme vers livraison HLS
Un Ateme Kyrion encode un flux caméra studio en trames séparées. Vous devez livrer du HLS progressif pour l’OTT :
Ateme (1920x540@50fps UDP) → Vajra Cast → Fusion + Désentrelacement → 1080p50 H.264 (sortie HLS)
1080i standard vers progressif
Un flux entrelacé standard (déjà en 1920x1080i) de n’importe quelle source nécessite une conversion progressive :
Toute source (1920x1080i@25fps SRT) → Vajra Cast → Désentrelacement → 1080p50 H.264 (sortie SRT)
Prochaines étapes
- Découvrez le Transcodage matériel pour l’encodage accéléré GPU après le désentrelacement
- Retournez au Guide Logiciel de Streaming Broadcast pour la vue d’ensemble complète
- Explorez les Métriques temps réel pour superviser votre pipeline de désentrelacement
Passerelle SRT, failover automatique, monitoring temps réel et routage multi-destinations. Gratuit pendant 30 jours.
30 jours gratuits · Sans carte bancaire · Accès direct à l'équipe