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

Si vous possédez une machine multi-processeur, ne manquez pas l'opportunité d'augmenter grandement la vitesse d'encodage en activant le mode multi-thread du x264 en ajoutant threads=auto à votre ligne de commande x264encopts.

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

Les noms de fichier sont important; mp4creator nécessite que les flux audios AAC soient nommés .aac et les flux vidéos H.264 soient nommés .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

Contrairement à l'étape d'encodage, vous devez spécifier le nombre d'image par seconde comme une valeur décimale (par exemple 23.976), et non comme une valeur fractionnaire (par exemple 24000/1001).

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

Vous pouvez vérifier le résultat final pour vous assurer que les pistes de renseignement ont été créées avec succès :

mp4creator -list narnia.mp4

Vous devriez voir une liste de pistes : 1 audio, 1 vidéo, et 2 pistes de renseignement

Track   Type    Info
  1       audio   MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
  2       video   H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
  3       hint    Payload mpeg4-generic for track 1
  4       hint    Payload H264 for track 2
  

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

L'option --metaEnema efface toutes meta-données existantes. (mp4creator insère son nom dans le tag "encoding tool"), et --freefree récupère l'espace libéré par les méta-données effacées. L'option --stik paramétre le type de vidéo (tel que Film ou Show TV), qu'iTunes utilise pour grouper des fichiers vidéos similaires. L'option --overWrite écrase le fichier d'origine; sans cette option, AtomicParsley créé un fichier automatiquement nommé dans le même répertoire et laisse le fichier d'origine tel quel.