Qu'est ce que le téléciné ? Je vous suggère de visiter la page suivante sous peine de ne rien comprendre au document suivant : http://www.divx.com/support/guides/guide.php?gid=10 Ce lien pointe vers une documentation relativement compréhensible sur le format téléciné.
Une note à propos des chiffres. Beaucoup de documents, dont le guide proposé ci-dessus, renvoient à un nombre de trames par secondes pour la vidéo NTSC de 59.94 ce qui correspond à 29.97 images par secondes (pour le télécine entrelacé) et à 23.976 fps pour le progressive. Pour des raisons de simplicité, certains documents utilisent les valeurs arrondies de 60, 30 et 24.
En toute rigueur, ces nombres sont des approximations. Les vidéos NTSC en noir et blanc étaient exactement à 60 trames par secondes, mais 60000/1001 a été choisi par la suite pour la couleur tout en conservant la compatibilité avec les téléviseurs noir et blanc. La vidéo numérique NTSC (comme celle d'un DVD) est aussi en 60000/1001 trames par seconde. A partir de cela, la vidéo entrelacée et télécinée est dérivée vers 30000/1001 images par seconde ou, pour les vidéos progressives en 24000/1001 images par secondes.
De plus anciennes versions de la documentation MEncoder et plusieurs e-mails archivés provenant de liste de diffusion font encore référence à 59.94, 29.97, et 23.976. Toute la documentation de MEncoder a été mise à jour pour utiliser les valeurs fractionnelles, 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 à 60000/1001 trames par secondes, alors que la majorité des films pour le cinéma est en 24000/1001 images par seconde. Quand les séquences cinéma pour le DVD 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 embarqués sur le 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 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 trames formées individuellement à partir de la vidéo en 60000/10001 champs par seconde, téléciné ou autre, l'entrelacement est clairement visible et ce, qu'il y ait un mouvement ou non car l'un des champs (disons les lignes impaires) représente un moment dans le temps 1/(60000/1001) seconde plus tard que les autres. Jouer une vidéo entrelacée sur un ordinateur semble dans les deux cas laid parce que l'écran a une résolution plus élevée et parce que la vidéo est affichée trame après trame à au lieu de champs après champs.
Notes :
Cette section est seulement destinées aux DVDs NTSC, pas au PAL.
Les lignes d'exemple de MEncoder présentées dans ce
document ne sont pas à utiliser tel quelles.
Elles sont juste là pour montrer le minimum à faire en relation avec ce chapitre.
Comment réaliser un bon rip DVD ou procéder à des réglages avancés de
libavcodec
dont des questions qui
sortent du contexte de ce guide.
Quelques notes spécifiques à ce guide sont disponibles dans le pied de page, et sont liées comme ceci : [1]
Les vidéos progressives sont filmées initialement à 24000/1001 fps et stockées sur le DVD telles quelles.
Quand vous lisez un DVD progressive dans MPlayer, il affiche la ligne suivante avant de commencer la lecture :
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
Dans l'état actuel des choses, demux_mpg ne devrait jamais être trouvé pour "une vidéo NTSC à 30000/1001 fps."
Quand vous regardez une vidéo progressive, vous ne devrez voir aucun entrelacement. Mais soyez attentif, il arrive parfois que du 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, voir de temps en temps à une zone totalement aléatoire. Une autre fois, la moitié du DVD était en progressif et l'autre moitié en téléciné. Si vous n'êtes pas vraiment sûr, vous pouvez toujours 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 génère une ligne, celle-ci vous donnera immédiatement la valeur du changement.
Parfois, la vidéo progressive sur les DVDs considérés comme un "soft-telecine" car il devrait être téléciné par le lecteur DVD.
Les vidéos télécinées sont d'abord filmées à 24000/1001 et seront télécinées avant d'être gravé sur DVD.
MPlayer ne doit (jamais) détecter une changement de fps quand une vidéo télécinée est lue.
Au visionnage d'une vidéo télécinée, vous verrez des artefacts d'entrelacement donnant l'impression de "clignotement": apparaissant et disparaissant rapidement. Vous pouvez le voir plus précisément avec :
mplayer dvd://1
Chercher une partie en mouvement.
Utiliser la touche . pour avancer image par image.
Observer la forme donnée par l'entrelacement et les images progressives. Si la forme que vous voyez ressemble à PPPII, PPPII, PPPII,... alors la vidéo est télécinée. Si ce n'est pas le cas, la vidéo a peut-être été télécinée selon des règles non standard, MEncoder ne sait pas convertir un téléciné non-standard vers du progressive sans dégradation. Si aucune forme n'est visible, c'est alors sûrement une vidéo entrelacée.
Parfois, les vidéos télécinées sur les DVD sont "hard-teleciné". Le hard-teleciné étant à 60000/1001 images par seconde, les lecteurs de DVD liront la vidéo sans modification.
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 voit d'images.
Si la source est télécinée, vous devriez voir sur la console une forme 3:2 avec des
alternances de 0+.1.+2
et 0++1
.
L'avantage de cette technique et que vous n'avez pas besoin de visionner la
source pour l'identifier, donc utile pour automatiser l'encodage de vidéos, ou
bien effectuer ces procédures à distance même à travers une connexion internet lente.
Les vidéos entrelacées sont d'abord filmées en 60000/1001 frames par seconde, puis stockées sur le DVD à 30000/1001 frames par secondes. L'effet d'entrelacement (souvent appelé "combing" = comme les dents d'un peigne) est le résultat d'une combinaison de paires de trames dans chaque frames. Chaque frame est supposée être cachée 1/(60000/1001) d'une seconde, quand elles sont affichées en même temps, la différence devient visible.
Comme pour la vidéo télécinée, MPlayer ne devrait jamais signaler un changement de framerate à la lecture de la vidéo entrelacée.
Si vous regardez une vidéo entrelacée de plus près, image par image avec la touche ., vous pourrez voir l'entrelacement de chaque frame.
Toutes les vidéos qui "mélangent mode progressif et téléciné" ont été au départ en 24000/1001 frames par seconde, puis certaines parties ont été converties en téléciné.
Quand MPlayer joue ce type de fichier, il doit jongler (souvent rapidement) entre "30000/1001 fps NTSC" et "24000/1001 fps NTSC progressif". Regardez la sortie des messages de MPlayer.
Vous devriez aller voir la section "30000/1001 fps 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 modes progressif et téléciné", les flux vidéos progressifs et entrelacés sont réunis ensemble.
Cette catégorie ressemble à du "mélange progressif et téléciné" jusqu'à ce que vous examiniez la partie 30000/1001 fps et que vous vous aperceviez qu'il n'y a pas de trace de téléciné.
Comme évoqué au départ, ces prochaines lignes de "HowTo" MEncoder ne sont pas là pour être strictement utilisées telles quelles, mais pour fournir des paramètres minimum d'encodages pour chaque catégorie.
La vidéo progressive ne nécessite pas de filtre particulier pour l'encodage. Pourtant, un paramètre ne doit pas être omis : -ofps 24000/1001. Sinon, MEncoder essayera d'encoder à 30000/1001 fps et produira des images en double.
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 petites parties en téléciné. A moins d'être vraiment sûr l'état de la vidéo, il sera préférable de traiter la vidéo comme du progressif et téléciné mélangés. La perte de qualité est négligeable [3].
Les vidéos en téléciné peuvent redonner le contenu original à 24000/1001 avec un processus appelé inverse-téléciné. MPlayer a plusieurs filtres disponibles pour ceci, mais le meilleur, pullup, est abordé à la section mélange de progressif et téléciné.
Pour des raisons pratiques, il n'est pas possible de retrouver entièrement une vidéo progressive depuis une entrelacée. La seule manière de faire cela sans perdre la moitié de la résolution verticale est de doubler le framerate et d'essayer de "trouver" les lignes correspondantes pour chaque frame (cela a des inconvénients, voir la méthode 3).
Encodez la vidéo sous une forme entrelacée. Normalement, l'entrelacement
détériore la capacité de l'encodeur à bien compresser, mais libavcodec
possède deux paramètres spécifiquement faits pour stocker 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és-entrelacement avant l'encodage. Il y a plusieurs de ces filtres disponibles aux choix, chacun avec ces propres avantages et désavantages. Consultez mplayer -pphelp pour voir quels sont ceux disponibles (grep pour "deint"), et cherchez les listes de diffusion MPlayer pour trouver plusieurs discussions sur les différents filtres. Encore une fois, le framerate ne change pas, donc pas de -ofps. Aussi, le dés-entrelacement devra être fait après découpage [1] et avant dimensionnement.
mencoder dvd://1 -oac copy -vf pp=lb -ovc lavc
Malheureusement, cette option est un boguée dans MEncoder : cela devrait bien marcher avec MEncoder G2, mais on n'en est pas encore là. Vous risquez d'avoir des plantages. Cela importe peu car le but de -vf tfields est de créer une frame complète à partir de chaque champs, ce qui donne le framerate 60000/1001. L'avantage de cette approche est qu'aucune donnée n'est jamais perdue. Cependant, vu que chaque frame vient avec seulement un champ, 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 quand on utilise certains filtres de dés-entrelacement. 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 bitrates 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 frame. Si vous utilisez cette méthode, alors regardez le manuel, et prenez n'importe quelle option qui semble la meilleure pour votre matériel. Notez que lors de l'utilisation de tfields vous devez spécifier les deux options -fps et -ofps à deux fois le framerate de votre source originale.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001
Si vous avez décidé de réduire la taille de façon dramatique, vous pouvez extraire et encoder seulement un des deux champs. Bien sûr, vous perdrez la moitié de la résolution verticale, mais si vous pensez la réduire au plus de moitié par rapport à l'original, la perte ne sera pas trop grande. Le résultat sera un fichier progressif à 30000/1001 frames par seconde. La procédure est d'utiliser -vf field, puis de découper [1] et de dimensionner de manière appropriée. Souvenez-vous que vous devrez ajuster la dimension pour compenser la résolution verticale ayant été réduite de moitié.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavc
Afin de convertir une vidéo composée de progressive et de téléciné en vidéo entièrement progressive, les parties en téléciné doivent être inverse-télécinées. Il y a trois moyens d'accomplir cela, comme décrit ci-dessous. Notez que vous devrez toujours inverse-téléciné avant tout redimensionnement. Sauf si vous savez vraiment ce que vous faites, il faudra inverse-téléciné avant tout découpage [1]. -ofps 24000/1001 est nécessaire ici parce que la sortie vidéo sera de 24000/1001 frames par seconde.
-vf pullup est faite pour inverse-téléciné le matériel téléciné tandis que les données progressives sont laissées intactes. Afin de bien fonctionner, pullup doit être suivi par le filtre softskip ou sinon 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 "progressif et téléciné mélangés".
mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001
Une méthode plus ancienne consiste à téléciner les parties non-télécinées et ensuite inverse-téléciner la vidéo tout entière, au lieu de n'inverse-téléciner que les parties en téléciné. 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 avec soit detc ou soit ivtc, le résultat final sera entièrement progressif. -ofps 24000/1001 est nécessaire.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Je n'ai pas moi-même utilisé -vf filmdint, mais voilà ce que D Richard Felker III en dit:
Il est correct, mais AMA il essaie de dés-entrelacer plutôt que de faire l'inverse-téléciné trop souvent (tout comme les lecteurs DVD de salon & les TVs progressive) ce qui donne des clignotements affreux et d'autre artefacts. Si vous penser l'employer, vous devez commencer par passer un peu de temps pour affiner les options et observer la sortie pour être sûr que cela casse pas tout.
Il y a deux options pour s'occuper de cette catégorie, chacune étant un compromis. Vous devez prendre une décision basée sur la durée/localisation de chaque type.
Traitez-la comme progressive. Les parties entrelacées sembleront entrelacées, et certains des champs entrelacés devront être jetés, ayant pour résultat un peu de sautillement inégal. Vous pouvez utiliser un filtre post-traitement si vous le voulez, mais cela peut sensiblement dégrader les parties progressives.
Cette option ne devrait vraiment pas être utilisée si vous voulez éventuellement afficher la vidéo sur un appareil entrelacé (avec une carte TV, par exemple). Si vous avez entrelacé les frames dans une vidéo à 24000/1001 frames par seconde, ils seront télécinés en même temps que les frames progressive. La moitié des "frames" entrelacées sera affichée pour une durée de trois champs (3/(60000/1001) secondes), ce qui a pour résultat un effet pichenette de "retour en arrière" ce qui semble tout à fait mauvais. Si vous tentez quand même ceci, vous devez utiliser un filtre dés-entrelaçant comme lb ou l5.
Cela peut tout aussi bien être une mauvaise idée pour l'affichage progressive. Cela laissera tomber les paires consécutives de champs entrelacés, ayant pour résultat une discontinuité qui peut être plus visible qu'avec la seconde méthode, ce qui montre certaines frames progressive en double. Une vidéo entrelacée à 30000/1001 frames par seconde est déjà un peu variable parce que cela devrait vraiment être montré à 60000/1001 champs par seconde, donc les frames dupliquées ne tiennent pas.
Qu'importe la façon, il est recommandé de considérer votre contenu et 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-la comme entrelacée. Certaines frames des parties progressive auront besoin d'être dupliquées, ce qui entraînera en un sautillement inégal. Encore une fois, les filtres dés-entrelaçant peuvent passablement dégrader les parties progressives.
A propos de découpage: 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 luma ("luminosité") et le chroma ("couleur") sont stockés séparément. Parce que l'oeil humain est somme toute moins sensible à la couleur qu'il ne l'est à la luminosité, dans une image YUV 4:2:0 il y a seulement un pixel de chroma pour 4 pixels de luma. Dans une image progressive, chaque carré de quatre pixels de luma (deux sur chaque coté) ont un pixel de chroma commun. Vous devez découper un 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 que chaque série de quatre pixels de luma partage un pixel de chroma dans une frame, chaque groupe de quatre pixels de luma dans chaque champs partage un pixel de chroma. Quand les champs sont entrelacés pour former une frame, chaque ligne de scan est un pixel de haut. Maintenant, au lieu que tout les quatre pixels de luma soient dans un carré, ils sont deux pixels côte à côte, et les deux autres pixels sont côte à côte deux lignes de scan plus bas. Les deux pixels de luma dans la ligne de scan intermédiaire sont à partir de l'autre champ, et donc partage un pixel de chroma différent avec deux pixels de luma deux lignes de scan plus loin. Toute cette confusion rend nécessaire d'avoir des dimensions de découpe verticales et des décalages en multiple de quatre. Le décalage horizontal peut rester égal.
Pour la vidéo télécinée, je recommande que le découpage prenne place après l'inverse téléciné. Une fois la vidéo progressive vous avez seulement besoin de découper par nombres pairs. Si vous voulez vraiment gagner la légère accélération que la découpe peut offrir, vous devez découper verticalement par multiples de quatre ou bien le filtre inverse-téléciné n'aura pas les bonnes données.
Pour la vidéo entrelacée (pas télécinée), vous devez toujours découper verticalement par multiples de quatre à moins que vous n'utilisiez -vf field avant de découper.
A propos des paramètres d'encodage et de la qualité:
Juste parce que je recommande mbd=2 ici ne veut pas dire
que cela ne devrait pas être utilisé autre part. Avec trell,
mbd=2 est l'une des deux options de libavcodec
qui augmente le mieux la qualité, et vous devriez toujours utiliser au moins
une des deux à moins que la baisse de vitesse d'encodage ne soit prohibitive
(e.g. encodage temps réel). Il y a plusieurs autres options libavcodec
qui augmentent la qualité d'encodage (et réduisent la vitesse d'encodage) mais ceci est au delà
de la portée de ce document.
A propos de la performance de pullup: Employer pullup (avec softskip) sur une vidéo progressive est sûr, et est habituellement une bonne idée à moins qu'il ait été vérifié que la source est entièrement progressive. La perte de performance est petite pour la plupart des cas. Sur un encodage minimal, pullup ralentit MEncoder de 50%. L'ajout du traitement du son et d'options avancées pour lavcopts masquent cette différence, en limitant la perte de performance due à l'utilisation de pullup à 2%.