7.12. Comment gérer le téléciné et le désentrelacement avec les DVDs NTSC
Précédent | Chapitre 7. Encodage avec MEncoder | Suivant

## 7.12. Comment gérer le téléciné et le désentrelacement avec les DVDs NTSC

Introduction. Je vous suggère de visiter cette page si vous ne comprenez pas la plupart de ce qui est écrit dans ce document: http://www.divx.com/support/guides/guide.php?gid=10 Cette adresse mène à une description relativemement simple et complète de ce qu'est le téléciné.

Pour des raisons techniques imputables aux limitations des premiers postes de télévision, toute vidéo destinée à être joué sur un poste de télévision NTSC doit être à 59.94 champs par seconde. Les téléfilms et les émissions sont souvent filmés directement à 59.94 champs par seconde, alors que la majorité les films de cinéma sont filmés à 24 ou 23.976 trames par seconde. Quand le DVD d'un film est masterisé, la vidéo est convertie pour la télévision en utilisant un procédé appelé téléciné.

Sur un DVD, la vidéo n'est en fait jamais stockée à 59.94 champs par seconde. Pour une vidéo qui était à l'origine en 59.94, chaque paire de champs est combinée pour former une trame, donnant ainsi 29.97 trames par seconde. Les lecteurs DVD lisent ensuite un drapeau contenu dans le flux vidéo pour déterminer si les lignes paires -ou impaires- doivent former le premier champ.

En général, le contenu à 23.976 trames par seconde reste tel quel quand il est encodé pour un DVD, et le lecteur DVD doit "téléciner" à la volée. Parfois, cependant, la vidéo est téléciné avant d'être stockée sur le DVD; même si elle était à l'origine à 23.976 trames par seconde, elle passe à 59.94 champs par seconde, et est stockée sur le disque à 29.97 trames par seconde.

Quand on regarde des trames individuelles formées à partir d'une vidéo en 59.94 champs par seconde, téléciné ou similaire, l'entrelacement est clairement visible partout où il y a du mouvement, car un champ (disons, les lignes paires) affiche l'action se déroulant un 1/59.94 ème de seconde plus tard que le suivant. La lecture de vidéo entrelaçée sur un ordinateur est horrible parce que le moniteur a une résolution supérieure et parce que la vidéo est affichée trame-après-trame plutôt que champ-après-champ.

Notes:

- Cette section ne s'applique qu'aux DVDs NTSC, et non PAL.

- Les exemples de l'utilisation de MEncoder présents dans ce document ne sont pas destinés à un usage tel-quel. C'est juste le minimum requis pour encoder des vidéos de cette catégorie. Comment faire des bons rips DVD ou paramétrer `libavcodec` pour la meilleure qualité possible est en dehors du cadre de ce document.

- Il y a deux notes de bas de page spécifiques à ce guide, notée ainsi: [1]

### 7.12.1. Comment trouver quel type de vidéo vous avez

#### 7.12.1.1. Progressive

La vidéo progressive est filmé à l'origine en 23.976 fps, et stockée sur le DVD sans modification.

Quand vous jouez un DVD progressif avec MPlayer, MPlayer affiche la ligne suivante dès le début de la lecture du film:

     demux_mpg: 24fps progressive NTSC content detected, switching framerate.

À partir de maintenant, demux_mpg ne devrait jamais dire qu'il trouve du "30fps NTSC content."

Quand vous regardez une vidéo progressive, vous ne devriez jamais voir d'entrelacement. Attention, cependant, car il y est parfois mêlé un peu de téléciné, là où vous ne vous y attendriez pas. J'ai rencontré des DVDs de programmes TV qui avaient une seconde de téléciné à chaque changement de scène, ou dans des endroits apparemment aléatoires. J'ai vu une fois un DVD qui était en progressive durant la première moitié, et téléciné dans la seconde. Si vous voulez être vraiment certain, vous pouvez scanner tout le film:

    mplayer dvd://1 -nosound -vo null -benchmark

L'utilisation de `-benchmark` indique à MPlayer de jouer le film aussi rapidement qu'il le peut; cependant, suivant votre matériel, cela peut prendre un certain temps. Chaque fois que demux_mpg signale un changement de débit, la ligne suivante indiquera l'heure à laquelle le changement s'est produit.

Parfois la vidéo progressive est appelé "soft-telecine" parce qu'elle est destinée à être téléciné par le lecteur DVD.

#### 7.12.1.2. Télécinée

La vidéo télécinée a été filmée en 23.976, mais a été téléciné avant d'être gravée sur DVD.

MPlayer ne signale pas (toujours) les changements de débit quand il joue de la vidéo téléciné.

En regardant de la vidéo téléciné, vous verrez des artefacts d'entrelacement qui semblent "clignoter": ils apparaissent et disparaissent rapidement. Vous pouvez les regarder plus attentivement avec par exemple

1.     mplayer dvd://1 -speed 0.1

2. Sautez à une partie avec du mouvement.

3. Regardez le motif des trames à l'apparence entrelacées et progressives. Si le motif que vous voyez est PPPII,PPPII,PPPII,... alors la vidéo est téléciné. Si vous voyez un autre motif, alors la vidéo a été téléciné en utilisant une méthode non-standard et MEncoder ne peut pas la convertir en progressive sans perte. Si vous ne voyez aucun motif, c'est certainement que la vidéo est entrelaçée.

Parfois la vidéo téléciné est appelée "hard-telecine".

#### 7.12.1.3. Entrelaçée

La vidéo entrelaçée a été filmé à 59.94 champs par seconde, et stockée sur DVD à 29.97 trames par seconde. L'entrelacement est le résultat de la combinaison des paires de champs dans des trames, car dans chaque trame, chaque champ est séparé du suivant par 1/59.94 secondes.

Comme pour la vidéo téléciné, MPlayer ne devrait jamais signaler les changements de débit pendant la lecture de contenu entrelaçé.

Si vous regardez attentivement une vidéo entrelaçée avec `-speed 0.1`, vous verriez que chaque trame est entrelaçée.

#### 7.12.1.4. Progressive et télécinée mélangées

Toute la vidéo "progressive et téléciné mélangées" était à l'origine en 23.976 trames par seconde, mais certaines parties ont fini en téléciné.

Quand MPlayer joue cette catégorie, il oscillera (de manière répetée) entre "30fps NTSC" et "24fps progressive NTSC". Regardez le bas de la sortie texte de MPlayer pour voir ces messages.

Vous devriez regarder les sections "30fps NTSC" pour vérifier que c'est effectivement du téléciné, et pas juste de l'entrelaçé.

#### 7.12.1.5. Progressive et entrelacée mélangées

Dans ce type de vidéo, le contenu progressif et entrelaçé, ont été collés l'un après l'autre.

Cette catégorie ressemble tout à fait à "progressive et télécinée mélangées", jusqu'à ce que vous examiniez les sections 30fps et voyez qu'elles n'ont pas de motif de téléciné.

### 7.12.2. Comment encoder chaque catégorie

Comme mentionné au début, les exemples d'utilisation de MEncoder ne sont pas destinés a être utilisé directement; ils démontrent juste les paramètres minimum pour encoder chaque catégorie.

#### 7.12.2.1. Progressive

La vidéo progressive ne requiert aucun filtrage spécial pour l'encodage. Le seul paramètre que vous devez utiliser est `-ofps 23.976`. Sinon, MEncoder essaiera d'encoder en 29.97 fps et dupliquera des trames.

    mencoder dvd://1 -nosound -ovc lavc -ofps 23.976

#### 7.12.2.2. Télécinée

Le téléciné peut être inversé pour retrouver le contenu original en 23.976, en utilisant un procédé appelé inverse-téléciné. MPlayer contient deux filtres pour accomplir cela: `detc` et `ivtc`. Vous pouvez lire la page de man pour voir leurs différences, mais pour les DVDs je n'ai jamais eu de problèmes avec `ivtc`. Notez que vous devriez toujours appliquer l'inverse-telecine avant tout redimensionnement; à moins que vous ne sachiez vraiment ce que vous faites, appliquez l'inverse-téléciné également avant tout découpage [1]. De nouveau, `-ofps 23.976` est également requis.

    mencoder dvd://1 -nosound -vf ivtc=1 -ovc lavc -ofps 23.976

#### 7.12.2.3. Entrelaçée

Dans la plupart des cas pratiques, il n'est pas possible d'extraire une vidéo progressive complète à partir de contenu entrelaçé. La seule manière d'y parvenir sans perdre la moitié de la résolution verticale est de doubler le débit et d'essayer de "deviner" ce qui est destiné a constituer les lignes correspondantes pour chaque champ (cela a des inconvénients - voir la méthode 3).

1. Encodez la vidéo sous forme entrelaçée. Normalement, l'entrelacement entre en conflit avec la qualité de compression de l'encodeur, mais `libavcodec` a deux paramètres spécifiques pour gérer un peut mieux le stockage de la vidéo entrelaçée: `ildct` et `ilme`. De plus, utiliser `mbd=2` est fortement recommandé [2] car il encodera les macroblocs en tant que non-entrelaçés là où il n'y a pas de mouvement. Notez que `-ofps` n'est PAS requis ici.

       mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=2

2. Utilisez un filtre de désentrelacement avant l'encodage. Il y a beaucoup de de choix parmi les filtres disponibles, chacun ayant ses avantages et ses inconvénients. Consultez `mplayer -pphelp` pour voir ce qui est disponible (recherche sur "deint"), et cherchez sur les listes de diffusion de MPlayer pour trouver des discussions à propos des divers filtres. De nouveau, le débit ne change pas, donc il n'y a pas de `-ofps`. De même, le désentrelacement devrait être appliqué après le découpage [1] et avant le redimensionnement.

       mencoder dvd://1 -nosound -vf pp=lb -ovc lavc

3. Malheureusement, cette option est boguée avec MEncoder; elle devrait bien fonctionner avec MEncoder G2, mais il n'est pas encore disponible. Vous pourrez avoir des plantages. De toute façon, le but de `-vf tfields` est de créer des trames complètes à partir de chaque champ, ce qui aboutit à un débit de 59.94. L'avantage de cette approche est qu'aucune donnée n'est perdue; par contre, puisque chaque trame provient d'un seul champ, les lignes manquantes doivent être remplies d'une manière ou d'une autre. Il n'y a pas vraiment de bonne méthode pour générer les données manquantes, et donc le résultat sera similaire à celui obtenu en utilisant certains filtres de désentrelacement. Générer les lignes manquantes créé d'autres problèmes, également, simplement parce que la quantité de données double. Donc, un débit d'encodage supérieur est requis pour maintenir la qualité, et plus de puissance CPU est utilisée pour l'encodage et le décodage. tflields a de nombreuses options différentes pour la création des lignes manquantes de chaque trame. Si vous utilisez cette méthode, alors référez vous à la page de manuel, et choisissez l'option qui donne le meilleur résultat avec votre matériel. Notez qu'en utilisant `tfields` vous devez spécifier `-fps` et `-ofps` en indiquant un débit double de celui de la source.

       mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 59.94 -ofps 59.94

4. Si vous comptez diminuer la taille de la vidéo énormément, vous pouvez extraire et encoder uniquement l'un des deux champs. Bien sûr, vous allez perdre la moitié de la résolution verticale, mais si vous prévoyez de réduire d'au plus 1/2 de l'original, la perte ne se vera pas trop. Le résultat sera un fichier progressif à 29.97 trames par seconde. La procédure est d'utiliser `-vf field`, et ensuite couper [1] et dimensionner correctement. Rappelez-vous que vous n'avez qu'à ajuster le redimensionnement pour compenser la réduction par deux de la résolution verticale.

       mencoder dvd://1 -nosound -vf field=0 -ovc lavc

#### 7.12.2.4. Progressive et téléciné mélangées

De façon à transformer la vidéo progressive et télécinée mélangée en vidéo entièrement progressive, l'inverse-telecine doit être appliquée sur les parties télécinées. Il y a deux filtres qui accomplissent nativement cette tâche, mais la plupart du temps la meilleure solution est d'utiliser deux filtres en conjonction (lire la suite pour plus de détails).

- Actuellement la méthode la plus fiable pour traiter ce type de vidéo est, plutôt que d'appliquer un inverse-téléciné sur les parties télécinées, de téléciner les parties non-télécinées et d'ensuite appliquer l'inverse-téléciné sur la vidéo entière. Cela vous semble confus ? softpulldown est un filtre qui parcoure une vidéo et la rend entièrement télécinée. Si vous faites suivre softpulldown de soit `detc`, soit `ivtc`, le résultat final sera entièrement progressif. Le découpage et le redimensionnement devrait être fait après les opérations d'inverse-téléciné, et `-ofps 23.976` est requis.

      mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 23.976

- `-vf pullup` est conçu pour appliquer un inverse-telecine sur la vidéo télécinée tout en laissant les données progressives intactes. Pullup ne fonctionne pas vraiment avec l'actuel MEncoder, cependant, il est vraiment prévu pour l'utilisation avec MEncoder G2 (quand celui-ci sera prêt). Il fonctionne bien sans `-ofps`, mais `-ofps` est requis pour empêcher un affichage haché. Avec `-ofps`, cela échoue parfois. Le problème provient du comportement de MEncoder qui saute des trames pour maintenir la synchronisation entre l'audio et la vidéo: il saute des trames avant de les envoyer dans la chaine de filtres, plutôt qu'après. Résultat, `pullup` est parfois privé des données dont il a besoin.

  Si MEncoder saute trop de trames consécutives, il vide les tampons de `pullup` et le fait planter.

  Même si MEncoder ne saute qu'une seule trame, `pullup` ne pourra toujours pas la voir, et finira par opérer sur une séquence incorrecte de trames. Même si cela ne provoque pas de plantage, `pullup` ne sera pas capable de prendre les bonnes décisions pour ré-assembler les trames progressives, et va soit mal faire correspondre les champs, soit sauter plusieurs champs pour compenser.

- Je n'ai jamais utilisé `-vf filmdint` moi-même, mais voici ce qu'en dit D Richard Felker III:

  > Il est bon, mais AMA il essaie de désentrelacer plutôt que de faire de l'inverse-téléciné trop souvent (tout comme les lecteurs DVD & et les TVs progressives), ce qui donne un scintillement horrible et d'autres artefacts. Si vous voulez l'utiliser, vous devrez au moins passer un peu de temps à régler les options et à regarder le résultat pour vous assurer que tout va bien.

#### 7.12.2.5. Progressive et entrelaçée mélangées

Il y a deux options pour gérer cette catégorie, chacune d'elle étant un compromis. Vous devriez décider suivant la durée/position de chaque type.

- Traitez-la en tant que progressive. Les parties entrelaçées apparaîtront comme entrelacées, et certains champs devront être sautés, donnant une lecture un peu saccadée. Vous pouvez utiliser un filtre de post-traitement si vous le voulez, mais celui-ci pourrait légèrement dégrader les parties progressives.

  Cette option ne devrait vraiment pas être utilisée si vous comptez afficher la vidéo sur un périphérique entrelaçé (avec une carte TV, par exemple). Si vous avez des trames entrelaçées dans une vidéo de 23.976 trames par secondes, elles seront télécinées avec les trames progressives. La moitié des "trames" sera affichée durant trois champs (3/59.94 secondes), provoquant un effet tremblotant "saut dans le temps" qui rend particulièrement mauvais. Si vous essayez cela, vous devez utiliser un filtre de désentrelacement comme `lb` ou `l5`.

  Cela peut être aussi une mauvaise idée pour l'affichage progressif. Des paires de champs consécutifs seront sautés, provoquant une discontinuité qui peut être plus visible avec la seconde méthode, qui montre certaines trames progressives deux fois. La vidéo en 29.97 trames par seconde est déjà un peu hachée car elle devrait être lue en 59.94 champs par seconde, donc les trames dupliquées ne se voient pas trop.

  De toutes manières, il vaut mieux prendre en compte autant votre contenu que comment vous comptez l'afficher. Si votre vidéo est 90% progressive et que vous ne comptez pas l'afficher sur une TV, vous devriez préférer une approche progressive. Si c'est seulement à moitié progressif, vous voudrez probablement l'encoder comme si elle était complètement entrelaçée.

- Traitez-la comme entrelaçée. Certaines trames des parties progressives devront être dupliquées, causant des saccades irrégulières. De nouveau, les filtres de désentrelacement peuvent légèrement dégrader les parties progressives.

### 7.12.3. Notes de bas-de-page

1. À propos du découpage: Les données vidéo des DVDs sont stockées dans un format appelé YUV 4:2:0. Dans la vidéo YUV, luma ("luminosité") et chroma ("couleur") sont stockés séparemment. Dans une image YUV 4:2:0 il n'y a qu'un pixel chroma pour quatre pixels luma, car l'oeil humain est plus sensible à la couleur qu'à la luminosité. Dans une image progressive, chaque carré de quatre pixels luma (deux de chaque coté) a un pixel chroma en commun. Vous devez découper l'YUV progressif en une résolution paire, et utiliser des offsets pairs. Par exemple, `crop=716:380:2:26` est correct mais `crop=716:380:3:26` ne l'est pas.

   Quand vous traitez de l'YUV 4:2:0 entrelaçé, la situation est un peu plus compliquée. Au lieu de quatre pixels luma dans une trame partageant un pixel chroma, chaque ensemble de quatre pixels luma dans un champ partage un pixel chroma. Quand les champs sont entrelaçés pour former une trame, chaque scanline est haute de un pixel. Maintenant, au lieu d'avoir quatre pixels dans un carré, il y a deux pixels cote-à-cote, et les deux autres pixels sont cote-à-cote deux scanlines plus bas. Les deux pixels luma des scanlines intérmédiaires proviennent de l'autre champ, et donc partagent un pixel chroma différent avec deux pixels luma deux scanlines après. Toute ce joyeux désordre fait qu'il est nécessaire d'avoir des dimensions de découpage et des offsets multiples de quatre. L'horizontal peut rester pair.

   Pour la vidéo télécinée, je recommande de découper après le procédé d'inverse-téléciné. Une fois la vidéo en progressive, vous n'aurez plus qu'à découper par nombres pairs. Si vous voulez vraiment profiter du léger gain de temps qu'offre le découpage en premier, vous devez couper verticalement par multiples de quatre ou sinon le fitre d'inverse-téléciné n'aura pas suffisemment de données.

   Pour la vidéo entrelaçée (non télécinée), vous devez toujours découper verticalement par multiples de quatre à moins d'utiliser `-vf field` avant le découpage.

2. À propos des paramètres d'encodage et de la qualité: Le fait que je recommande `mbd=2` ici ne signifie pas qu'il ne doit être utilisé ailleurs. Avec `trell`, `mbd=2` est une des deux options de `libavcodec` qui augmentent le plus la qualité, et vous devriez toujours au moins les utiliser toutes les deux à moins que la vitesse d'encodage soit primordiale (par ex. encodage temps-réel). Il y a beaucoup d'autres options qui augmentent la qualité (et diminuent la vitesse d'encodage) mais c'est en dehors du cadre de ce document.

Précédent | Niveau supérieur | Suivant
7.11. Créer un rip MPEG-4 ("DivX") de haute qualité à partir d'un DVD | Sommaire | Annexe A. Listes de diffusion