blog.bressure.net

Carnet professionnel d'un informaticien

Application, Paramétrage

Encodage de vidéos pour N900 en h264 avec ffmpeg

admin
Nokia N900 communicator/internet tablet
Image via Wikipedia

Le lecteur intégré du n900 est capable de lire plusieurs formats de vidéo dont le plus intéressant est le h264 qui est le plus performant en terme de compression. Le décodage ce fait par la puce DSP ce qui impose des limitations si on veut profiter de l’accélération matérielle et du gain d’autonomie qui en découle.

Le h264 définie plusieurs niveaux de critères de performance des lecteurs. Le n900 est donné comme supportant le niveau baseline 3 mais il se trouve que ce n’est pas vrai. Des vidéos encodées baseline 3 par ffmpeg peuvent ne pas êtres lues par le lecteur intégré du n900. Il vaut mieux se contenter du baseline 2.1.

La baseline n’est pas le seul critère pour la conversion. La taille de l’image en est un autre. En effet la résolution de l’écran du N900 est 800×480. Il est donc inutile de convertir dans une taille supérieure. De plus cette résolution n’est pas multiple de 16 or cela est un critère qui facilite l’encodage. Donc il faut choisir une résolution plus petite mais respectant un facteur 16.

Ffmpeg est un outil en ligne de commande qui permet de convertir des fichiers vidéo. Les options principales sont :

Le choix de la résolution de la vidéo encodée dépend de celle de départ. Nous traitons ici le cas de fichier vidéo issus de la diffusion des chaines de la TNT via l’ADSL. Prenons l’exemple de la diffusion d’une chaine en 16:9 mais en simple définition. L’analyse des informations du flux enregistré (un fichier .ts) fait apparaitre une vidéo 480×576. C’est la résolution de stockage (SAR). Si on affichait l’image telle quelle, elle serait déformée car écrasée par les cotés. L’image s’affiche pourtant correctement dans un lecteur. C’est parce que le fichier contient aussi une information sur le facteur d’écrasement (PAR) qui indique de combien on doit étirer l’image dans chacun des axes pour obtenir la vidéo affichable. Le résultat est une image au format 16:9 (indiquée par la valeur DAR). Le lecteur vidéo est sensé interpréter correctement les informations de DAR et PAR afin d’étirer l’image et lui donner le bon aspect. Notre objectif étant de ne pas perdre de la surface d’image (couper l’image) tout en  maximisant la qualité, nous choisissons de réduire la hauteur à 480 ( résolution de l’écran du N900) et de conserver le SAR i.e réduire proportionnellement la largeur de l’image soit 400 (480*480/576=400). Par chance cette taille d’image est multiple de 16. Finalement une vidéo e 480×576 sera redimensionnée en 400×480.

Il existe malheureusement de nombreuses résolutions de stockage (SAR) et la règle de 3 ne tombe pas toujours pile sur un multiple de 16. Heureusement que ffmpeg modifie automatiquement le PAR afin de conserver le DAR. Donc on peut choisir arbitrairement une résolution d’image de stockage multiple de 16 en prenant en compte les 2 critères

  1. maximisation de la taille pour ne pas trop perdre en information
  2. ne pas dépasser les limites de la résolution de l’écran du N900

En faisant un test sur les chaines de la TNT sur une Freebox, voici ce que l’on obtient (par abus de langage nous appelons SAR la taille de l’image)

Source SAR source DAR SAR encodée
France 2 1440×1080 16:9 640×480
France 3 544×576 16:9 400×480
France 4 480×576 16:9 400×480
France 5 480×576 16:9 400×480
Arte 1440×1080 16:9 640×480
Direct 8 1440×1080 16:9 640×480
La chaîne parlementaire 480×576 16:9 400×480
RTL9 720×576 16:9 592×480
TMC 544×576 16:9 400×480
NRJ 12 1440×1080 16:9 640×480
NT1 544×576 16:9 400×480
DirectStar 720×576 16:9 592×480

La dernière colonne du tableau précédent donne la taille de l’image dans la vidéo encodée. Cette taille est spécifiée par l’option -s dans ffmpeg.

Le codec h264 nécessite un certain nombre de réglage que voici:

Non spécifique au h264 mais supporté par tous les processeurs récents :

Supposons que l’on ait un fichier video (France2.ts)  issu d’un enregistrement de la chaine France 2, voici la commande de conversion
$ ffmpeg -i France2.ts -acodec libfaac -vcodec libx264 -vpre hq -vpre baseline -crf 25 -maxrate 1000k -bufsize 2000k -threads 0 -flags2 -fastpskip -s 640x480 France2.mp4

Au bout d’un temps assez long puisque supérieur à la durée de la vidéo originale (sur un Core2 Duo 2.4 Ghz et 4 Go de mémoire), on obtient un fichier mp3 lisible sur le N900 via le lecteur multimédia intégré.

Tags:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back to top