La nouvelle version de mpeg2enc (fait partie du paquet mjpegtools) supporte maintenant les matrices KVCD... If suffit de donner le parametre "-K kvcd" et le tour est joue...
Le plus puissant est d'utiliser mpeg2enc en combinaison avec mplayer.
De cette maniere, on peut faire toutes les operations necessaires (scaling, expand, filtres anti-bruits, correction gamma, desentrelacage, etc... en utilisant mplayer et passer le resultat par un pipe vers mpeg2enc.
Comme mplayer ne peut pas utiliser les filtres "scale" et "expand" en meme temps (bug ?), on peut chainer 2 mplayer en utilisant 2 pipes.... Pour les operations longues, j'utilise "nice" pour eviter de trop charger mon ordinateur... C'est facultatif.
Voici comment je procede...
J'utilise ici un exemple de film en 16/9 que j'ai envie de convertir en KSVCD en 4/3...
Premier mplayer: reechantillionnage eventuel du son a 44100 Hz, redimensionnement, filtrage du bruit, deblocking horizontal et vertical, deringing et desentrelacement. Le son est ecrit en format wav dans test_1.wav et les donnees video sont envoyees par le pipe stream.yuv
Code:
### creation d'un pipe
rm stream.yuv
mkfifo stream.yuv
nice -n 3 mplayer source.avi -noaspect -nozoom -srate 44100 -sws 3 -vf scale=480:432,hqdn3d=3:3:6,pp=hb/vb/dr:c -benchmark -noframedrop -osdlevel 0 -ao pcm -aofile test_1.wav -vo yuv4mpeg >mplayer_1_1.log 2>&1 &
Deuxieme mplayer: on rajoute des bandes noires. (Si le film est directement en 4/3, cette etape n'est pas necessaire)
Creer un sous-repertoire, par exemple "mplayer2"
Code:
cd mplayer2
rm stream.yuv
mkfifo stream.yuv
nice -n 3 mplayer ../stream.yuv -noaspect -nozoom -vf expand=480:576 -benchmark -noframedrop -osdlevel 0 -vo yuv4mpeg >../mplayer_1_2.log 2>&1 &
Derniere etape video: encodage avec mpeg2enc: Il suffit de specifier "-K kvcd" en plus des parametres usuels, par exemple...
Code:
nice -n 3 mpeg2enc stream.yuv -S 10000 -K kvcd -F 3 -a 2 -n p -V 230 -B 10 -q 6 -b 1600 -f 5 -o test_1.m2v >mpeg2enc_1.log 2>&1
Et voila, cela fonctionne comme ceci:
Code:
mplayer1 ---- pipe ----> mplayer2 ---- pipe ----> mpeg2enc.
On peut controler l'avance de l'encodage avec la commande
Code:
tail -f mpeg2enc_1.log
Les fichiers log permettent egalement de deboguer...
Une fois que le processus est termine, il faut encore encoder le son. Il faut s'assurer que ce soit du stereo 16 bits a 44100 Hz... (d'ou le parametre "-srate 44100").
Code:
nice -n 3 mp2enc -b 224 <test_1.wav -o test_1_224.mp2 &
Pour produire un fichier mpeg conforme, il faut alors multiplexer le son et l'image.
Code:
mplex -r 2500 -b 230 -f 5 -V -o test_1_KSVCD.mpg test_1_224.mp2 test_1.m2v
Reste la production du CD physique:
Code:
vcdxgen -t svcd test_1_KSVCD.mpg
vcdxbuild videocd.xml
Et voila, nous avons maintenant genere des fichiers .bin et .cue utilisables avec un graveur de CD...
La gravure:
Se loguer en tant que root, et executer la commande de gravage avec le plus de temps CPU possible, d'ou le nice -n "-19"
Code:
nice -n -19 cdrdao write --device 0,0,0 --driver generic-mmc --overburn --speed 6 videocd.cue
Il ne me reste plus qu'a rediger un bon tutoriel avec des exemples...