philou_a7 a écrit :
fouya
bon, je previens tout de suite, je suis au bureau, j'ai pas les commandes sous la main alors ca va etre du "en gros", mais long
je vais essayer de detailler au mieux les etapes, et je rappellerai les prerequis a la fin
NB : mon but est de conserver la video dans la meilleure qualité possible, je ne me soucie pas des bonus et menus... voir dvdunauthor pour ça
-----------------------------------
1/ Recuperation des informations du DVD source
Je me sers tout d'abord de tcprobe pour determiner la duree et le nombre de chapitres des differents titres afin d'identifier celui qui va m'interesser.
avec n = numero du chapitre
j'ai un petit script pour ca l'algo est simple :
tcprobe -i /dev/dvd -T 1
-> recuperation (grep et awk rulez) du nombre total de titres
-> recuperation de la duree et du nombre de chapitres et affichage
ntitre=2
tant que ntitre < nb total de titres
tcprobe -i /dev/dvd -T ntitre
-> recuperation de la duree et du nombre de chapitres et affichage
|
Je rapelle tcprobe -i /dev/dvd -T le_titre_qui_va_bien dans un combiné grep / awk / sed qui me sort la liste des temps de début de chapitres sous la forme 00:00:00.000,00:01:02.345, etc... (pour dvdauthor) et je stocke ca dans un fichier chapter.list
Une derniere analyse du resultat de ce tcprobe me donne les numeros de flux video/audio/subtitles qui m'interessent (je me base sur la langue et le type de données)
En general, je lance aussi streamanalyze -i /dev/dvd -t <titre> pour verifier ces valeurs
2/ Copie des .vob épurés
Tout d'abord, petite précision technique...
Dans sa derniere version, la 0.6.10 je crois, dvdauthor n'est pas tolerant a une petite imprecision dans les normes qui definissent les .VOB
Dans un .VOB, chaque paquet de données (qqsoit son type) est accompagné d'un en-tête qui contient une valeur SCR, horodatage logiciel qui permet de mettre les paquets dans l'ordre pour les lecteurs.
Cette valeur va toujours avancer de façon strictement croissante, sauf dans un cas bien precis, denué de sens mais visiblement valide : la remise a zero.
Actuellement, dvdauthor sort en erreur sur ce cas (qui se rencontre assez frequemment en tout cas dans mes DVDs originaux ), et j'ai sorti un petit patch, qui sera peut etre integré a la prochaine version, pour contourner ce cas precis. Le patch est dispo dans les mailing-lists developpeur du projet sourceforge, ou sinon je pourrai le remettre ici si ca vous interesse.
Le principe est le suivant :
Une commande qui va ripper les flux interessants du DVD et les ré-authorer pour obtenir directement une structure DVDvideo valide avec uniquement les flux que je veux conserver.
la commande est a peu pres
dvdauthor-patch -t -c `echo chapters.list` -o pre-dvd -f 'streamdvd -i /dev/dvd -f 1.000 -t <titre> -s <numeros de flux> |' |
avec numeros de flux = 0xe0,0x80,0x81,0x20,0x22 par exemple pour garder
0xe0 premier flux video
0x80,0x81 deux premiers flux audios
0x20,0x22 premier et troisieme flux de sous titres
les valeurs viennent du resultat de tcprobe plus haut
Une fois ceci fait, un appel a dvdauthor-patch -T -o pre-dvd |
et le repertoire pre-dvd contient une structure valide.
Generalement, là, je verifie le resultat avec un mplayer dvd:// -dvd-device pre-dvd -aid XXX -sid YYY
XXX = valeur decimale du flux audio : 0x80=128 0x81=129 etc...
YYY = valeur decimale de flux sous titre-0x20 : 0x20->0 0x21->1 etc...
Si je me suis planté dans les flux, je recommance
3/ Requantisation
Trois fois sur quatre, le resultat sera trop gros pour un DVD5... on va donc requantiser le resultat.
La commande magique :
streamanalize -i ./pre-dvd -t 1 |
renvoie, en plus de la liste des flux present, le facteur de requantisation pour que ca rentre dans un DVD5
Je note cette valeur dans un coin.
En pratique, si la valeur est superieure a 1.5, on commence a voir des effets de compression, et au dela de 1.8 ca commence a faire vraiment beaucoup... c'est au gout de chacun
4/ Couleurs des sous-titres
Alors ca, c'est chiant
La palette de couleurs utilisées contient 16 valeurs. En general, des sous-titres en utilisent 2 ou 3, mais seulement, y a pas 2 DVDs qui vont utiliser les mêmes
Une premiere methode consisterait a copier la palette du VTS_0x_0.IFO original (avec IfoEdit sous wine) mais j'aime pas
Je fais plus dans le bourrin mais c'est fortement perfectible comme methode et j'ai bon espoir de creuser encore un peu
J'ai donc modifié un peu le code de spuunmux (un outil de la suite DVDAuthor) pour que lors de l'extraction, il m'affiche des statistiques sur les .png qu'il ecrit...
J'en deduis donc aisement les index des couleurs utilisées dans le film, et je crée un fichier palette.rgb en consequence : tout a 000000 sauf les couleurs que je veux
5/ Authoring (presque) final
Il suffit de relancer un dvdauthor :
dvdauthor-patch -t -p palette.rgb -c `echo chapters.list` -o dvdok -f 'streamdvd -i ./pre-dvd -f <facteur de requantisation> -t 1 -s <numeros de flux> |'
dvdauthor-patch -T -o dvdok |
On dispose alors d'une structure presque complete dans le repertoire dvdok/
6/ Langues des flux
C'est mon 2eme souci : les langues...
Je commence par identifier les langues avec mplayer et les parametres sid et aid, puis je lance IfoEdit dans wine pour mettre les valeurs correctes.
Il y a forcement un moyen de faire ca beaucoup plus prorprement mais j'ai pas encore cherché et surtout, je ne connait pas de IfoEdit sous linux
7/ Gravure
growisofs -Z /dev/dvd -dvd-video dvdok/ |
(a peu pres) et c'est reglé
-----------------------------------------
Voila, avec ca j'ai presque aucun probleme. Reste un cas tordu d'une assertion qui provoque une erreur en fin de dvdauthor (rencontré une seule fois pour le moment). Visiblement, il y a des cas ou le paquet final est mal formé, dvdauthor gueule mais en fait c'est pas grave, c'est juste le paquet final qui est mal paddé. Les lecteurs s'en foutent et le film est fini
J'ai donc besoin de :
1- transcode pour tcprobe
2- streamdvd et streamanalyse en version 0.3 (la 0.4 ne gere pas encore les sous titres)
3- dvdauthor patché
4- dvd+rw-tools pour growisofs
5- mplayer pour verifier les resultats intermediaires mais un autre player video doit fonctionner pareil
Sinon, j'avais essayé une autre methode a base de vobcopy , tcmplex , spuunmux et spumux pour les sous titres, ca marche aussi mais c'est un poil plus bordelique...
Mais comme je disais, c'est surement plus automatisable, et perfectible
|