7.7. Utiliser MEncoder pour créer des fichiers compatibles QuickTime

7.7.1. Pourquoi produire des fichiers compatibles QuickTime ?

Il existe plusieurs raisons pour lesquelles il est souhaitable de produire des fichiers compatibles QuickTime

  • Vous souhaitez que n'importe quel utilisateur non expérimenté soit capable de regarder votre vidéo sur les plateformes majeures (Windows, Mac OS X, Unices …).

  • QuickTime est capable de tirer plus amplement profit des accélérations matérielles et logicielles de Mac OS X que les lecteurs plus indépendant de la plateforme comme MPlayer ou VLC. Ainsi, vos vidéos ont plus de chance d'être jouées sans accros sur de veilles machines basées sur des processeurs G4.

  • QuickTime 7 supporte la nouvelle génération de codecs : H.264, qui offre une bien meilleure qualité d'image que la génération de codecs précédente (MPEG-2, MPEG-4 …).

7.7.2. Limitations de QuickTime

QuickTime 7 supporte la vidéo en H.264 et l'audio en AAC, mais il ne les supporte pas multipléxés dans le format de container AVI. Cependant, vous pouvez utiliser MEncoder pour encoder la vidéo et l'audio, et ensuite utiliser un programme externe comme mp4creator (appartenant à la suite MPEG4IP) pour remultiplexer les pistes vidéos et audios dans un container MP4.

Le support QuickTime du H.264 étant limité, il vous faudra laisser tomber certaines options avancées. Si vous encodez votre vidéo en utilisant des options que QuickTime 7 ne supporte pas, les lecteurs basés sur QuickTime afficheront un joli écran blanc au lieu de la vidéo attendue.

  • trames-B : QuickTime 7 supporte un maximum d'une trame-B, i.e. -x264encopts bframes=1. Ainsi, b_pyramid et weight_b n'auront aucun effet car ces options requierent que bframes soit supérieure à 1.

  • Macroblocs : QuickTime 7 ne supporte pas les macroblocs de type 8x8 DCT. Cette option (8x8dct) est désactivée par défaut, donc soyez sûr de ne pas l'activer explicitement. Ceci signifie aussi que l'option i8x8 n'aura aucun effet, car elle nécessite l'option 8x8dct.

  • Ratio d'aspect : QuickTime 7 ne supporte pas l'information sur le SAR (l'échantillonage de ratio d'aspect ou Sample Aspect Ratio) dans les fichiers MPEG-4; il suppose que SAR=1. Lisez la section sur le redimensionnement pour une parade à cette limitation.

7.7.3. Recadrage

Supposons que vous voulez encoder votre DVD "Les chroniques de Narnia". Votre DVD étant de région 1, il est en NTSC. L'exemple ci-dessous serait aussi applicable au PAL, hormis qu'il faudrait omettre l'option -ofps 24000/1001 et utiliser des dimensions pour crop et scale sensiblement différentes.

Aprés avoir lancé mplayer dvd://1, vous suivez la procédure détaillée dans la section Comment gérer le téléciné et le dés-entrelacement avec les DVDs NTSC et découvrez que c'est une vidéo progréssive en 24000/1001 image par seconde. Ceci simplifie quelque peu la procédure, car nous n'avons pas besoin d'utliser un filtre téléciné inverse comme pullup ou un filtre de désentrelacement comme yadif.

Ensuite il faut rogner les bandes noires du haut et du bas de la vidéo, comme détaillé dans la section précédente.

7.7.4. Redimensionnement

La prochaine étape à de quoi vous briser le coeur. QuickTime 7 ne supporte pas les vidéos MPEG-4 avec échantillonage du ratio d'aspect différent de 1, de fait il vous faudra redimensionner à la hausse (ce qui gaspille beaucoup d'espace disque) ou à la baisse (ce qui diminue le niveau de détail de la source) la vidéo de façon à obtenir des pixels carrés. D'une manière ou d'une autre, cette opération est très inéficace, mais ne peut être evitée si vous souhaitez que votre vidéo soit lisible par QuickTime 7. MEncoder permet d'appliquer le redimensionnement à la hausse ou à la baisse en spécifiant respectivement -vf scale=-10:-1 ou -vf scale=-1:-10. Ces options vont redimensionner la vidéo à la bonne largeur pour la hauteur rognée, arrondi au plus proche multiple de 16 pour une compression optimale. Rappelez vous que si vous rognez, vous devez d'abord rogner et ensuite redimensionner :

-vf crop=720:352:0:62,scale=-10:-1

7.7.5. Synchronisation de l'audio et de la vidéo

Parce que vous allez remultiplexer dans un container différent, vous devriez toujours utiliser l'option harddup afin de s'assurer que les trames dupliquées soient effectivement dupliquées dans la vidéo de sortie. Sans cette option, MEncoder placera simplement un marqueur dans la flux vidéo signalant qu'une trame a été dupliquée, et délèguera au logiciel client l'initiative d'afficher la même trame deux fois. Malheureusement, cette "duplication douce" ne survivant pas au multiplexage, l'audio perdra lentement la synchronisation avec la vidéo.

La chaîne de filtre résultante a cette forme :

-vf crop=720:352:0:62,scale=-10:-1,harddup

7.7.6. Débit

Comme toujours, le choix du débit est aussi bien une question de propriétés techniques de la source, comme expliqué ici, qu'une question de goût. Dans ce film, il y a pas mal d'action et beaucoup de détails, mais le H.264 apparait plus beau que le XviD ou tout autre codec MPEG-4 à des débits moindres. Après moultes expérimentations, l'auteur de ce guide a choisi d'encoder ce film à 900kbps, et pense que le résultat est joli. Vous pouvez diminuer le débit si vous souhaitez sauver de la place, ou l'augmenter si vous voulez améliorer la qualité.

7.7.7. Exemple d'encodage

Vous êtes maintenant prêt à encoder la vidéo. Comme vous tenez à la qualité, vous effectuerez un encodage en 2 passes, bien entendu. Pour sauver un peu de temps d'encodage, vous pouvez spécifier l'option turbo pour la première passe; cette option réduit subq et frameref à 1. Pour sauvegarder de l'espace disque vous pouvez utiliser l'option ss afin d'enlever les toutes premières secondes de la vidéo. (Je me suis aperçu que ce film a 32 secondes de générique et de logo.) bframes peut être 0 ou 1. Les autres options sont documentées dans Encodage avec le codec x264 et la page de man.

mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
-x264encopts pass=1:turbo:bitrate=900:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

La seconde passe est la même, excepté qu'il faut spécifier le fichier de sortie et mettre pass=2.

mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \
-x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

L'AVI résultant doit être parfaitement lu par MPlayer, mais bien entendu QuickTime ne peut le lire car il ne supporte pas le H.264 multiplexé dans de l'AVI. De fait, la prochaine étape est de remultiplexer la vidéo dans un container MP4.

7.7.8. Remultiplexage en MP4

Il existe différentes manières de remultiplexer des fichiers AVI en MP4. Vous pouvez utiliser mp4creator, qui fait parti de la suite MPEG4IP.

Premièrement, demultiplexez l'AVI en un flux audio et un flux vidéo séparés en utilisant MPlayer.

mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
  mplayer narnia.avi -dumpvideo -dumpfile narnia.h264

Maintenant utilisez mp4creator pour créer un nouveau fichier MP4 depuis les flux audio et vidéo.

mp4creator -create=narnia.aac narnia.mp4
  mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4

Le fichier narnia.mp4 devrait être lisible par n'importe quelle application QuickTime 7, comme le lecteur QuickTime ou comme iTunes. Si vous planifiez de voir la vidéo dans un navigateur Internet avec le plugin QuickTime, vous devriez aussi renseigner le film de sorte que le plugin QuickTime puisse commencer à le lire pendant qu'il se télécharge. mp4creator peut créer ces pistes de renseignement :

mp4creator -hint=1 narnia.mp4
  mp4creator -hint=2 narnia.mp4
  mp4creator -optimize narnia.mp4

7.7.9. Ajouter des tags de méta-données

Si vous voulez ajouter des tags dans votre vidéo qui soient visible dans iTunes, vous pouvez utiliser AtomicParsley.

AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite