Archives : novembre, 2006

Vos films sous-titrés sur votre iPod

Vendredi, novembre 24th, 2006

iPodHeureux possesseur d’un iPod 5.5G 80G depuis peu, j’ai été agréablement surpris pas les performances de l’engin en lecture de fichiers video.

Le problèmes est que je n’aime pas les films en V.F. et je suis habitué à la V.O. sous-titrées, que l’iPod ne sait pas gérer.

De plus, je ne voulais pas réencoder les fichiers sur ma machine de tous les jours, mais lancer les opérations en mode “batch” sur un serveur Linux à la maison (Pour encoder des fichiers pour iPod sur Mac, iTunes devrait bien s’en sortir, ou bien ffmpegX pour incruster les sous-titres et encoder en MPEG4).

Mon ami google à portée de navigateur, de sites en sites, et en observant le comportement de ffmpegX, j’ai finalement réussis à faire un script assez simple, une fois les bons outils installés.
Ce script nécessite mencoder et ffmpeg. Le premier étant en mesure de “brûler” les sous-titres dans la vidéo, et le second étant le seul à ma connaissance capable de convertir le son en AAC lisible par l’iPod.

Pour ce qui est de l’installation de ces outils, je me suis appuyé sur les repository rpm de DAG/RPMForge pour Fedora Core 4.

En ce qui me concerne, j’ai copié certaines polices truetype dans le répertoire ~/.spumux/ (chemin de recherche original dans ffmpegX). Libre à vous de mettre vos polices ici ou ailleurs.

Voici le script tant convoité :

#!/bin/sh
for file in "$@"; do
movie=$file
base=`basename "$movie" .avi`
rep=`dirname "$movie"`
sub="$rep/${base}.srt"
if [ -e "$rep/${base}.m4v" ]
then
echo "Le fichier ${base}.m4v existe déjà"
continue
fi
echo Encodage de ${base} démarré `date "+%d/%m/%Y %H:%M:%S"`
echo -en Incrustation des sous-titre et redimensionnement...
mencoder -msglevel all=1 "$movie" -ovc xvid -xvidencopts bitrate=700 -oac copy \
-sub "$sub" -vop expand=320:240:::1::,scale=320:-3 \
-font  ~/.spumux/Arial.ttf -subfont-autoscale 0 \
-subfont-text-scale 20 -subcp ISO-8859-1 -subpos 100 -of avi \
-o "$rep/${base}_sub.avi" > /dev/null 2>&1
if [ $? == 0 ]
then
echo OK
else
exit 1
fi
echo -en "Création du fichier ${base}.m4v..."
ffmpeg -y -i "$rep/${base}_sub.avi" -f mp4 -vcodec mpeg4 -b 650000 -g 300 \
-acodec aac -ab 128 "$rep/$base.m4v" > /dev/null 2>&1

if [ $? -eq 0 ]
then
echo OK
else
exit 1
fi

rm -f "$rep/${base}_sub.avi"
echo Encodage de ${base} terminé `date "+%d/%m/%Y %H:%M:%S"`
done

Le fichier généré est parfaitement lisible sur l’iPod et iTunes ne rechigne pas à l’importer.

Petite astuce : Pour importer un fichier dans l’iPod sans passer par l’import dans iTunes, affichez la section “films” de votre iPod, et glisser le fichier dans la liste.

Crédits : Merci à Nico pour le soutien moral et les pointeurs utiles :-)

[MàJ] l’option scale de mencoder a été changée en 320:-3 pour respecter le ratio de la video d’origine.