Qu'est ce que le téléciné ? Si vous ne comprenez pas grand-chose à ce qui est écrit dans le document présent, je vous suggère de visiter cette page (en anglais) : http://en.wikipedia.org/wiki/Telecine Ce lien pointe vers une documentation relativement claire et compréhensible sur ce qu'est le téléciné.
Une note à propos des nombres. Beaucoup de documents, incluant l'article pointé par le lien précédent, renvoient à un nombre de trames par secondes pour la vidéo NTSC de 59.94 ce qui correspond à 29.97 images complètes par secondes (pour le télécine et l'entrelacé) et à 23.976 (pour le progressif). Pour simplifier, certains documents arrondissent même à 60, 30 et 24.
En toute rigueur, tous ces nombres sont des approximations. Les vidéos NTSC en noir et blanc avaient exactement 60 trames par secondes, mais 60000/1001 a été choisi par la suite pour s'accomoder de la couleur en conservant la compatibilité avec les téléviseurs noir et blanc de l'époque. La vidéo numérique NTSC (par exemple sur un DVD) est aussi en 60000/1001 trames par seconde. A partir de là, la vidéo entrelacée et télécinée est faite pour être en 30000/1001 images par seconde; les vidéos progressives en 24000/1001 images par secondes.
De plus anciennes versions de la documentation MEncoder et plusieurs e-mails archivés de liste de diffusion font référence à 59.94, 29.97, et 23.976. Toute la documentation de MEncoder a été mise à jour pour utiliser les valeurs fractionnaires, et vous devriez aussi les utiliser.
-ofps 23.976
est incorrect.
-ofps 24000/1001
doit être utilisé à la place.
Comment le téléciné est-il utilisé ? Toutes les vidéos qui sont censées être affichées sur des téléviseurs NTSC doivent être en 60000/1001 trames par secondes. Les téléfilms sont souvent filmés directement en 60000/1001 trames par secondes, alors que la majorité des films pour le cinéma est en 24000/1001 images par seconde. Quand les DVD contenant des films faits pour le cinéma sont masterisés, la vidéo est alors convertie pour la télévision par un processus appelé le téléciné.
Sur un DVD, la vidéo n'est jamais vraiment stockée à 60000/1001 trames par seconde. Si la vidéo est d'origine en 60000/1001, chaque paire de trames est alors combinée pour former une image, ce qui donne 30000/1001 images par seconde. Les lecteurs de DVD de salon lisent alors les drapeaux incorporés au flux vidéo pour déterminer si la première ligne à afficher doit être paire ou impaire.
Normalement, les contenus à 24000/1001 images par seconde restent comme cela lorsqu'ils sont encodés pour un DVD, et le lecteur DVD doit alors faire la conversion du téléciné à la volée. Parfois, la vidéo est télécinée avant d'être stockée sur le DVD, même si c'était originalement du 24000/1001 images par seconde, cela devient du 60000/1001 trames par seconde. Quand elles sont stockées sur le DVD, les trames sont combinées par paires pour former 30000/1001 images par seconde.
Quand on regarde les images formées individuellement à partir de la vidéo en 60000/1001 trames par seconde, téléciné ou autre, l'entrelacement est clairement visible et ce, qu'il y ait un mouvement ou non car l'une des trames (disons les lignes impaires) représente un moment dans le temps 1/(60000/1001) seconde plus tard que les autres. Regarder une vidéo entrelacée sur un ordinateur semble laid parce que l'écran a une résolution plus élevée et parce que la vidéo est affichée image après image au lieu de trame après trame.
Notes :
Cette section ne s'appliquent qu'aux DVDs NTSC, pas aux PAL.
Les lignes de commande MEncoder données en exemple au long de ce
document ne sont pas à utiliser tel quels.
Elles représentent juste le minimum requis pour encoder la vidéo qui s'y rapportent.
La meilleure méthode pour faire un bon encodage de DVD ou procéder à des réglages avancés de
libavcodec
pour atteindre une qualité optimum sont des
questions en dehors des propos de cette section.
Référez-vous aux autres sections contenues dans
L'encodage avec
MPlayer.
Il y a quelques notes en bas de page spécifiques à ce guide, elles sont liées comme ceci : [1]
Les vidéos progressives ont été filmées initialement à 24000/1001 images par seconde et stockées sur le DVD sans altération.
Quand vous lisez un DVD en progressif dans MPlayer, la ligne suivante sera affichée dès le début de la lecture :
demux_mpg: 24000/1001 images par seconde progressive NTSC content detected, switching framerate.
Dorénavent, demux_mpg ne devrait jamais dire qu'il trouve "une vidéo NTSC à 30000/1001 images par secondes."
Quand vous regardez une vidéo progressive, vous ne devriez jamais voir d'entrelacement. Mais soyez attentif, il arrive parfois qu'un peu de téléciné se glisse sans prévenir. Il m'est arrivé de tomber sur des émissions de télévisions en DVD avec une seconde de téléciné à chaque changement de scène ou à d'autres emplacements au hasard. Une autre fois, la première moitié du DVD était en progressif et la seconde en téléciné. Si vous voulez en être vraiment sûr, vous pouvez scanner le film entier :
mplayer dvd://1 -nosound -vo null -benchmark
L'utilisation de l'option -benchmark
fait lire MPlayer
aussi vite qu'il le peut - en fonction du matériel, cela peut prendre un certain
temps. Chaque fois que demux_mpg signale un changement, la ligne immédiatement au dessus
vous donnera le temps auquel ce changement est arrivé.
Parfois, la vidéo progressive sur les DVDs est signalée en tant que "soft-telecine" parce qu'elle est censée être télécinée par le lecteur DVD.
Les vidéos télécinées ont été filmées en 24000/1001 et sont télécinées avant d'être gravées sur DVD.
MPlayer ne signale jamais une variation d'images par secondes quand il lit une vidéo télécinée.
Au visionnage d'une vidéo télécinée, vous verrez des artefacts d'entrelacement qui semblent "clignoter": ils apparaissent et disparaissent répététivement. Vous pouvez le voir plus précisément en suivant les indications ci-dessous :
mplayer dvd://1
Chercher une scène avec beaucoup de mouvements.
Utiliser la touche . pour avancer image par image.
Observer le schéma de répétition des images entrelacées et progressives. Si vous obtenez PPPII, PPPII, PPPII,... alors la vidéo est télécinée. Si vous observez d'autres schémas de répétition, alors la vidéo a peut-être été télécinée avec une méthode non-standard; MEncoder ne sait pas convertir un téléciné non-standard en progressif sans dégradation. Si aucun schéma n'est visible, c'est alors sûrement une vidéo entrelacée.
Parfois, la vidéo progressive sur les DVDs est signalée en tant que "soft-telecine" parce qu'elle est censée être télécinée par le lecteur DVD. Parfois, la vidéo télécinée sur les DVDs est signalée "hard-telecine". Le hard-teleciné étant à 60000/1001 images par seconde, le lecteur DVD lit la vidéo sans manipulation.
Une autre façon de savoir si la source est télécinée ou non, est de la lire avec
l'option -vf pullup
et -v
depuis une ligne de commande
et de voir comment l'option pullup
combine les trames.
Si la source est télécinée, vous devriez voir sur la console un schéma de répétition 3:2 avec des
alternances de 0+.1.+2
et 0++1
.
L'avantage de cette technique est que vous n'avez pas besoin de visionner la
source pour l'identifier, ce qui peut être utile pour automatiser la procédure d'encodage, ou
pour effectuer cette procédure à distance à travers une connexion lente.
Les vidéos entrelacées ont été filmées en 60000/1001 trames par seconde, puis stockées sur le DVD en tant que 30000/1001 images par seconde. L'effet est le résultat de la combinaison de paires de trames dans une image. Chaque trame est censée être décalée de 1/(60000/1001) de seconde les unes des autres. Quand elles sont affichées simultanément, la différence devient visible.
Comme pour la vidéo télécinée, MPlayer ne signale jamais une variation d'images par secondes quand il lit une vidéo entrelacée.
Si vous regardez attentivement une vidéo entrelacée image par image avec la touche ., vous verrez l'entrelacement de chaque trame.
Toutes les vidéos qui mélangent progressif et téléciné ont été filmées en 24000/1001 images par seconde, puis certaines parties ont été converties en téléciné.
Quand MPlayer lit ce type de fichier, il doit jongler (souvent répététivement) entre "le 30000/1001 images par seconde NTSC" et "le 24000/1001 images par secondes NTSC progressif". Regardez les messages de MPlayer pour voir ces messages.
Vous devriez aller voir la section "30000/1001 images par seconde NTSC" afin d'être sûr que c'est vraiment du téléciné, et pas seulement de l'entrelacé.
Dans les vidéos qui mélangent le progressif et le téléciné, les flux vidéos progressifs et entrelacés sont combinés l'un à l'autre.
Cette catégorie ressemble au "mélange de progressive et télécinée" jusqu'à ce que vous examiniez la partie en 30000/1001 images par seconde et que vous vous aperceviez qu'il n'y a pas de trace de téléciné.
Comme évoqué au départ, les exemples de lignes de commande MEncoder ne doivent pas être utilisés tels quels; ils fournissent uniquement les paramètres minimum pour encoder chaque catégorie.
La vidéo progressive ne nécessite pas de filtrage particulier pour l'encodage.
Le seul paramètre qui ne doit pas être omis est : -ofps
24000/1001
.
Sinon, MEncoder essayera d'encoder en
30000/1001 images par seconde et dupliquera certaines images.
mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001
Il n'est pas rare de se trouver avec une vidéo qui semble progressive mais qui contient en fait quelques courts passages en téléciné. A moins d'être vraiment sûr l'état de la vidéo, il est préférable de traiter la vidéo comme un mélange de progressive et télécinée. La perte en performance est faible [3].
A partir d'une video télécinée, il est possible de retrouver le format original en 24000/1001 avec
un processus appelé téléciné-inverse. Plusieurs filtres de
MPlayer permettent ce processus;
le meilleur d'entre eux, pullup
, est décrit à la section
Mélange de progressif et téléciné.
Dans la plupart des cas pratiques, il n'est pas possible de récupérer complètement une vidéo progressive depuis une entrelacée. Pour ce faire, la seule manière sans perdre la moitié de la résolution verticale est de doubler le nombre d'images par seconde et d'essayer de "deviner" ce que devraient être les lignes manquantes pour chacune des trames (ce qui a des inconvénients, voir méthode 3).
Encodez la vidéo sous forme entrelacée. Normalement, l'entrelacement
ruine la capacité de compression de l'encodeur, mais libavcodec
possède deux paramètres spécialement définis pour gérer le stockage de la vidéo entrelacée de manière
plus satisfaisante : ildct
et ilme
.
Aussi, l'utilisation de mbd=2
est-elle fortement
recommandée [2]
car cela encodera les macroblocs non-entrelacés à des endroits où il n'y
a pas de mouvements. Notez que -ofps
n'est pas nécessaire ici.
mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2
Utilisez un filtre de désentrelacement avant l'encodage. Plusieurs de
ces filtres sont disponibles, chacun avec ses avantages et inconvénients.
Consultez mplayer -pphelp
et mplayer -vf help
pour voir lesquels sont
disponibles (selectionnez les lignes contenant "deint" avec grep),
lisez comparaison des filtres de désentrelacement
de Michael Niedermayer,
et fouillez dans les
listes de diffusion MPlayer, vous trouverez nombres de discussions sur les
différents filtres.
Encore une fois, le nombre d'images par seconde ne change pas, donc l'option
-ofps
n'est pas nécessaire. Une dernière chose : le
désentrelacement doit être fait après recadrage
[1]
et avant redimensionnement.
mencoder dvd://1 -oac copy -vf pp=lb -ovc lavc
Malheureusement, cette option est boguée dans
MEncoder ; cela devrait bien marcher avec
MEncoder G2, mais on n'en est pas encore là. Vous
risquez de subir des plantages. Peu importe, l'option -vf tfields
est de créer une image complète à partir de chaque trame, ce qui
donne le débit de 60000/1001 images par seconde. L'avantage de cette approche est qu'aucune
donnée n'est jamais perdue. Cependant, vu que chaque image vient avec seulement
une trame, les lignes manquantes doivent être interpolées d'une façon ou d'une autre.
Il n'y a pas de très bonne méthode générant les données manquantes, et donc le
résultat sera un peu similaire à celui obtenu en utilisant des filtres de désentrelacement.
Générer les lignes manquantes crée aussi d'autres problèmes,
simplement parce que la quantité de données double. Ainsi, de plus haut débit (en kbit/s)
d'encodage sont nécessaires pour conserver la qualité, et plus de puissance CPU est
utilisée pour l'encodage et le décodage. tfields
a plusieurs
options pour gérer la création des lignes manquantes de chaque image. Si vous
utilisez cette méthode, alors regardez le manuel, et prenez
l'option qui semble la meilleure pour votre matériel. Notez que lors de l'utilisation de
tfields
vous
devez définir les deux options -fps
et -ofps
à deux fois le nombre d'image par seconde de votre source originale.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \ -fps 60000/1001 -ofps 60000/1001
Si vous avez prévu de beaucoup réduire la taille, vous pouvez
n'extraire et n'encoder qu'une des deux trames. Bien sûr, vous perdrez la
moitié de la résolution verticale, mais si vous avez prévu la réduire au moins de
moitié par rapport à l'original, cette perte n'aura que peu d'importance. Le résultat
sera un fichier progressif à 30000/1001 images par seconde. La procédure est
d'utiliser l'option -vf field
, puis de recadrer
[1] et de redimensionner
de manière appropriée. Souvenez-vous que vous devrez ajuster la dimension pour
compenser la réduction de moitié de la résolution verticale.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavc
Afin de convertir une vidéo composée de passages progressifs et de télécinés en vidéo entièrement
progressive, les parties en téléciné doivent être télécinées-inverse. Il y a trois
moyens d'accomplir cela, comme décrit ci-dessous. Notez que vous devez
toujours téléciner-inverse avant tout
redimensionnement et aussi (sauf si vous savez vraiment ce que vous faites)
avant tout découpage [1].
L'option -ofps 24000/1001
est nécessaire ici parce que la sortie vidéo
sera en 24000/1001 images par seconde.
L'option -vf pullup
est faite pour téléciner-inverse la source vidéo
télécinée tandis que les données progressives sont laissées intactes. Afin
de fonctionner correctement, pullup
doit
être suivi par le filtre softskip
ou MEncoder plantera.
pullup
est, cependant, la méthode la plus propre et la plus précise
disponible pour encoder le téléciné et le "Mélange de progressive et télécinée".
mencoder dvd://1 -oac copy -vf pullup,softskip \ -ovc lavc -ofps 24000/1001
-vf filmdint
est similaire à
-vf pullup
: les deux filtres tentent d'appairer
deux demi-trames pour construire une trame complète.
Néanmoins, filmdint
desentrelacera les demi-trames
orphelines tandis que pullup
les éliminera.
De plus, les deux filtres ont des codes de détection différents et
filmdint
peut avoir tendence à faire correspondre les
demi-trames un peu moins souvent.
Le contenu video à traiter et votre sensibilité personnelle fera qu'un
filtre fonctionnera mieux qu'un autre.
Sentez-vous libre d'ajuster les options des filtres si vous rencontrez
des problèmes avec l'un d'eux (consultez le manuel pour plus de
détails).
Pour la plupart des supports vidéo de qualité, les deux filtres
fonctionnent plutôt bien : débuter avec l'un ou l'autre ne fera pas
grande différence.
mencoder dvd://1 -oac copy -vf filmdint \ -ovc lavc -ofps 24000/1001
Une méthode plus ancienne consiste à, au lieu de téléciner-inverse les
passages télécinés,
téléciner les parties non-télécinées
et ensuite téléciner-inverse la vidéo entière.
Cela semble confus ? softpulldown est un filtre qui parcours une
vidéo et rend téléciné le fichier entier.
Si nous faisons suivre softpulldown par
soit detc
ou soit ivtc
, le résultat final
sera entièrement progressif. L'option -ofps 24000/1001
est nécessaire.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 \ -ovc lavc -ofps 24000/1001
Il y a deux façons de gérer cette catégorie, chacune étant un compromis. Vous devez faire votre choix en vous basant sur la durée/localisation de chaque type.
Traitez-le comme une vidéo progressive. Les parties entrelacées sembleront entrelacées, et certaines des trames entrelacées devront être jetées, ayant pour résultat un peu de sautillement irrégulier. Vous pouvez utiliser un filtre de post-traitement si vous le voulez, mais cela peut sensiblement dégrader les parties progressives.
Cette option ne devrait surtout pas être utilisée si vous prévoyez
afficher la vidéo finale sur un appareil entrelacé (avec une carte TV,
par exemple). Si vous avez des images entrelacées dans une vidéo en 24000/1001
images par seconde, elles seront télécinées en même temps que les images progressives.
La moitié des "images" entrelacées sera affichée pour une durée de trois trames
(3/(60000/1001) secondes), ce qui a pour résultat un effet pichenette de
"retour en arrière" ce qui est du plus mauvais effet. Si vous tentez
quand même ceci, vous devez utiliser un filtre
désentrelaçant comme lb
ou l5
.
Cela peut aussi être une mauvaise idée pour l'affichage progressif. Cela laissera tomber des paires de trames entrelacées consécutives, résultant en une discontinuité qui peut être plus visible qu'avec la seconde méthode, ce qui affichera certaines images progressives en double. Une vidéo entrelacée à 30000/1001 images par seconde est déjà un peu hachée parce qu'elle devrait en réalité être projetée à 60000/1001 trames par seconde, pour que les images dupliquées ne se voient pas trop.
De toutes façons, il vaut mieux analyser votre contenu et voir comment vous voulez l'afficher. Si votre vidéo est à 90% progressive et que vous ne pensez pas la regarder sur une TV, vous devriez favoriser une approche progressive. Si elle est seulement à moitié progressive, vous voudrez probablement l'encoder comme si elle était entièrement entrelacée.
Traitez-le comme entrelacée. Certaines images des parties progressives auront besoin d'être dupliquées, ce qui entraînera un sautillement irrégulier. Encore une fois, les filtres désentrelaçant peuvent légèrement dégrader les parties progressives.
A propos de recadrage :
Les données vidéo d'un DVD sont stockées dans un format appelé YUV 4:2:0. Dans
la vidéo YUV, la luminance ("luminosité") et la chrominance ("couleur")
sont stockés séparément. Parce que l'oeil humain est d'une certaine façon moins sensible
à la couleur qu'à la luminosité, dans une image YUV 4:2:0 il n'y a
qu'un pixel de chrominance pour 4 pixels de luminance. Dans une image progressive,
chaque carré de quatre pixels de luminance (deux de chaque coté) a un pixel de
chrominance commun. Vous devez recadrer le YUV 4:2:0 progressif à des résolutions paires,
et utiliser un décalage pair. Par exemple,
crop=716:380:2:26
est correct mais
crop=716:380:3:26
ne l'est pas.
Quand vous avez à faire à un YUV 4:2:0 entrelacé, la situation devient un peu plus compliquée. Au lieu d'avoir chaque série de quatre pixels de luminance se partager un pixel de chrominance dans une image, chaque série de quatre pixels de luminance dans chaque champs se partage un pixel de chrominance. Quand les trames sont entrelacées pour former une image, chaque ligne de scan fait un pixel de haut. Maintenant, au lieu d'avoir la série de quatre pixels de luminance dans un carré, il y a deux pixels côte à côte sur une ligne et les deux autres pixels de la série sont côte à côte deux lignes de scan plus bas. Les deux pixels de luminance dans la ligne de scan intermédiaire appartiennent à une autre trame, et donc partage un pixel de chrominance différent avec deux pixels de luminance deux lignes de scan plus loin. Toute cette confusion rend nécessaire d'avoir des dimensions de recadrage et de décalage verticales multiples de quatre. Dans le sens horizontal, il suffit que les dimensions restent paires.
Pour la vidéo télécinée, il est recommandé que le recadrage se fasse après le téléciné-inverse. Une fois que la vidéo est progressive, il vous suffit de recadrer par nombres pairs. Si vous voulez accélérer légèrement la vitesse d'encodage, en jouant sur les dimensions de recadrage, vous devez recadrer verticalement par multiples de quatre ou bien le filtre de téléciné-inverse n'aura pas les données adéquates.
Pour la vidéo entrelacée (pas télécinée), vous devez toujours recadrer verticalement
par multiples de quatre à moins que vous n'utilisiez l'option -vf field
avant.
A propos des paramètres d'encodage et de la qualité :
Le fait que l'option mbd=2
soit recommandée ici ne veut pas dire
qu'elle ne devrait pas être utilisée autre part. Avec trell
,
mbd=2
est l'une des deux options de libavcodec
qui augmente le plus la qualité, et vous devriez toujours les utiliser
à moins que la baisse de vitesse d'encodage ne soit prohibitive
(ex : encodage en temps réel). Il y a bien d'autres options de
libavcodec
qui augmentent la qualité d'encodage
(et réduisent sa rapidité) mais ceci est au delà du propos de ce document.
A propos de la performance de pullup :
Utiliser l'option pullup
(avec softskip
)
sur une vidéo progressive est sans danger, et c'est généralement une bonne idée à moins qu'il
soit certain que la source est entièrement progressive.
La perte de performance est faible dans la plupart des cas. Sur un encodage minimal,
pullup
ralentit MEncoder de 50%.
L'ajout du traitement du son et d'options avancées de lavcopts
masquent cette
différence, en limitant la perte de performance due à l'utilisation de pullup
à 2%.