Hardsub ASS avec mencoder

Avec bash

Yop đź™‚

Les fansubbeurs le savent, pour hardsubber (ou « burn » en anglais) des sous-titres ASS/SSA (Ă  effets donc), les outils ne sont pas lĂ©gion. Avidemux est le plus simple d’usage, en fait il exploite une fonctionnalitĂ© d’un autre outil, lui très puissant (pas autant que ffmpeg je trouve): mencoder. (on ajouterait Avisynth+MeGUI, mais non en fait). Avidemux a une fonction d’encodage par lot, mais c’est super-fastidieux Ă  prĂ©parer (avant je copiais-collais le script et l’Ă©ditais avec un bĂŞte Ă©diteur de texte pour ne pas devoir me taper toutes les Ă©tapes dans Avidemux). Bon entrons dans le vif du sujet: exploitons mencoder, qui fait partie de mplayer.

#!/bin/bash
for file in *; do
mkfifo fifo.y4m
mplayer -ass -sub "sub/$file.ass" -nosound -quiet -benchmark -vo yuv4mpeg:file=fifo.y4m "$file" &
mencoder -cache 8192 -audiofile "$file" -mc 0 -oac mp3lame -lameopts cbr=1:br=128 -ovc x264 -x264encopts crf=18:frameref=8:bframes=3:b_adapt:weight_b:partitions=all:8x8dct:me=esa:subq=7:trellis=2:threads=auto -o "${file%.???}.avi" fifo.y4m
rm fifo.y4m
done

Vous avez l’impression que j’ai brĂ»lĂ© les Ă©tapes ? đź™‚

Ce script est à placer dans un dossier avec les vidéos à encoder. Les sous-titres sont à mettre dans un sous-dossier « sub ». Si vous voulez par exemple encoder « 05.mkv », le fichier de sous-titres doit s’appeler « 05.mkv.ass ».

Après exĂ©cution, vous obtenez un fichier -par exemple 05.avi. Bon le conteneur de sortie peut ne pas ĂŞtre AVI, je l’ai mis parce que c’est un container n’acceptant que pistes audio et vidĂ©o (preuve donc Ă  la lecture que les sous-titres sont incrustĂ©s dans la vidĂ©o). Oui je sais, utiliser un puissant encodeur comme x264 et un crache-bouillie comme mp3lame.. L’AVI a ses contraintes.

J’ai pas souvent Ă  hardsubber des animes, mais souffrez de voir le rĂ©sultat de ce script dans les rĂ©Ă©ditions HD de Hen Zemi :blah: (upload courant de l’après-midi)