DVD9 vers DVD5 : Dvddump - équivalents à DVDShrink sous Linux

DVD9 vers DVD5 : Dvddump - équivalents à DVDShrink sous Linux - Multimédia - Linux et OS Alternatifs

Marsh Posté le 29-04-2004 à 14:13:12    

1er Soft :
 
dvddump
C'est un script permettant de faire des sauvegardes de DVD9 video, avec recompression automatique pour rentrer sur un DVD5. Le script est capable de lancer la gravure du DVD à la fin de la compression.
 
Outils utilisés :
StreamAnalyze 0.3 + StreamDVD 0.3 + DVDauthor et le script DVDDump
 
TELECHARGEMENT
Soit les sources, soit les RPM si vous utilisez Mandriva Linux.
 

  • SOURCES à compiler :

Dvddump :
http://tuxrip.free.fr/dvddump (crée par jotenakis)
 
Dvdauthor (mettre le patch de Philou):
Télécharger les sources de dvdauthor sur le site officiel, extraire et remplacer les 3 fichiers fournis par philou, puis compiler :
./configure && make && make install
Site officiel : http://dvdauthor.sourceforge.net/
Patch : http://philoua7.free.fr/dvd/
 
StreamDVD & StreamAnalyze
http://www.badabum.de/streamdvd.html
Seules les versions 0.3 sont utilisables avec dvddump.
 

  • RPM pour Mandriva Linux

Paquetages crées par Mjules : http://mjules.free.fr/dvddump/
Page dvddump de mjules : http://mjules.free.fr/dvddump.htm
 
J'ai également reconstruit des rpm avec gcc-4 sous Mandriva Cooker à partir des src.rpm de Mjules ou des tar.bz2 officiels avec l'aide des .spec de Mjules aussi :
http://jeep05fr.free.fr/rpms/
 
INSTALLATION
Pour les sources, voir le Readme de chaque.
Pour les paquets RPM : rpm -Uvh xxx.rpm
 
La 1ere fois que vous lancez dvddump, faites : 'dvddump --config' pour créer le fichier de configuration.
Un 'dvddump --help' vous donnera les commandes disponibles.
 
INTERFACE GRAPHIQUE a DVDDUMP
2 projets :
- gui-dvddump.py (par bimon)
 - dvddumpui (par Irmatden)
Site : http://5-rue-valentin.homelinux.net/guis_dvddump/
 
2eme Soft :
 
K9copy : http://k9copy.free.fr/
Maintenu par un français, avec interface graphique.
 
Outils utilisés :
    * DVDAuthor
    * vamps (version adaptée disponible sur le site)
    * mjpegtools
    * libdvdread
    * growisofs
    * toolame
 
TELECHARGEMENT
Sur le site de l'auteur, ou bien sur Urpmi pour ceux sur Mandriva Cooker seulement.
 
3eme Soft :
 
xDvdShrink : http://dvdshrink.sourceforge.net/
XDVDShrink is a project in BASH and Perl-Gtk2 that allows you to create fair-use archival copies of DVD content on single-layer writable DVDs.
 
# Command-line and graphical interface
# Scriptable
# Copy single movies
# Copy multiple episodes
# Selectable audio stream (AC3 only)
# Option for one subtitle stream per DVD title

 
Outils utilisés :
* transcode
* dvdauthor
* mjpegtools
* subtitleripper
* gocr
* dvd+rw_tools
* mkisofs
 
TELECHARGEMENT
http://sourceforge.net/project/sho [...] _id=133818
 
Note : si vous souhaitez seulement convertir un DVD en video MPEG4, rendez vous sur le topic de tuxrip "Techniques d'encodage DVD --> Mpeg4"
Voir le lien 'Sujets à lire' en haut à gauche de cette page


Message édité par Profil supprimé le 23-06-2005 à 19:07:20
Reply

Marsh Posté le 29-04-2004 à 14:13:12   

Reply

Marsh Posté le 29-04-2004 à 14:20:17    

Reply

Marsh Posté le 29-04-2004 à 14:24:21    

Sachant que si tu veux conserver les sous titres, les coulmeurs des sous titres, plusieurs bandes son, etc, y a pas mal de manip manuelles a faire ;)
 
Mais une fois que tout est trouvé, ca marche tres bien :D

Reply

Marsh Posté le 29-04-2004 à 14:29:36    

d'ailleurs, je ne saurais que trop te conseiller de regarder principalement streamdvd (en gardant la v0.3 pour les sous-titres), dvdauthor (avec mon patch :D qui evite les problemes de remise a zero du compteur d'horloge) et ses outils spumux et spuunmux, et tcprobe pour obtenir le chapitrage...

Reply

Marsh Posté le 29-04-2004 à 14:29:47    

+vamps : http://www.heise.de/ct/ftp/04/01/094/


---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 14:30:28    

philou_a7 a écrit :

d'ailleurs, je ne saurais que trop te conseiller de regarder principalement streamdvd (en gardant la v0.3 pour les sous-titres), dvdauthor (avec mon patch :D qui evite les problemes de remise a zero du compteur d'horloge) et ses outils spumux et spuunmux, et tcprobe pour obtenir le chapitrage...


tu nous fait un tuto de ta méthode ?


---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 14:31:32    

oula merci pour les liens et réponses :)
je vais regarder ca. :)

Reply

Marsh Posté le 29-04-2004 à 14:35:14    

jotenakis a écrit :

tu nous fait un tuto de ta méthode ?


 
j'aimerais bien, le probleme c'est que j'ai encore beaucoup de taches manuelles qui devraient etre automatisables (par exemple pour les couleurs de sous titres) et que j'ai pas suffisement le temps de coder des choses en ce moment.
 
Principalement, il me manque un equivalent linux de IfoEdit (que j'utilise avec wine) pour :
1- ajuster les couleurs de sous titres sans relancer dvdauthor
2- positionner les codes de langues (fr, en, etc..) dans les flux audio/sub
 
mais si ca t'interesse, je peux deja decrire en gros ma methode. C'est assez manuel, mais c'est pas compliqué ;)

Reply

Marsh Posté le 29-04-2004 à 14:45:34    

philou_a7 a écrit :


mais si ca t'interesse, je peux deja decrire en gros ma methode. C'est assez manuel, mais c'est pas compliqué ;)


oui, ça m'interesse...


---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 15:48:47    

fouya :p
 
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.
 

tcprobe -i /dev/dvd -T n


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 :D), 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 :p
 
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 :p
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 :D
 
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 :D
 
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 ;)

Reply

Marsh Posté le 29-04-2004 à 15:48:47   

Reply

Marsh Posté le 29-04-2004 à 15:53:26    

merci :jap:

Reply

Marsh Posté le 29-04-2004 à 16:14:22    

[:drapo]

Reply

Marsh Posté le 29-04-2004 à 16:17:32    

très intéressant, pourrais tu mettre à disposition tes patches et les petits scripts que tu utilises stp...  ;)


Message édité par jotenakis le 29-04-2004 à 16:27:10

---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 16:29:23    

philou_a7 a écrit :

fouya :p
 
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.
 

tcprobe -i /dev/dvd -T n


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 :D), 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 :p
 
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 :p
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 :D
 
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 :D
 
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 ;)


 
je salue l'effort de contribution et de doc. fourni. :jap:
 
Mais as tu deja utilisé DVDShrink ?

Reply

Marsh Posté le 29-04-2004 à 16:29:26    

pour les langues : pourquoi ne pas utiliser le -a de dvdauthor  ?
par exemple : -a ac3+fr


---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 16:30:52    

fioul666 a écrit :

je salue l'effort de contribution et de doc. fourni. :jap:
 
Mais as tu deja utilisé DVDShrink ?


le M. demande une méthode, il en propose une... Y a pas de gui ici et alors, ça viendra !


---------------
Jotenakis
Reply

Marsh Posté le 29-04-2004 à 16:54:12    

DVDShrink = windows, et j'ai pas envie :D
 

Citation :

pour les langues : pourquoi ne pas utiliser le -a de dvdauthor  ?
par exemple : -a ac3+fr


 
parce qu'on travaille directement sur les flux... dvdauthor se prend du VOB en entrée, il sait a peine qu'il reçoit de la video de l'audio ou du sous titre ;)
j'avais voulu essayer, ca avait gentillement planté, et j'ai pas trop persisté ;)

Reply

Marsh Posté le 29-04-2004 à 16:55:33    

jotenakis a écrit :

très intéressant, pourrais tu mettre à disposition tes patches et les petits scripts que tu utilises stp...  ;)


 
yop yop, mais faudra attendre tard ce soir ou demain, tout est a la maison (et je peux plus acceder a chez moi par ssh :( :( :( firewall de daube...)

Reply

Marsh Posté le 29-04-2004 à 16:58:37    

jotenakis a écrit :

le M. demande une méthode, il en propose une... Y a pas de gui ici et alors, ça viendra !


Definition : le linuxien est un animal tres susceptible n'acceptant pas ou peu la critique (le developpeur est un peu du meme genre).
 
tu n'as meme pas lu ma premiere phrase, dommage c'etait la plus importante.

Reply

Marsh Posté le 29-04-2004 à 16:58:39    

wahou merci beaucoup pour le tuto philou_a7.

Reply

Marsh Posté le 29-04-2004 à 16:59:49    

philou_a7 a écrit :

yop yop, mais faudra attendre tard ce soir ou demain, tout est a la maison (et je peux plus acceder a chez moi par ssh :( :( :( firewall de daube...)


je te suggere ipcop 1.4 (ou 1.3) uptime 3 mois (depuis que j'ai la freebox en fait), en plus c hyper simple a poser.

Reply

Marsh Posté le 29-04-2004 à 17:00:47    

non, le firewall de ma boite qui m'empeche de sortir :D
chez moi tout marche comme il faut :D
 
mandrake 9.2 rulez :D :lol:

Reply

Marsh Posté le 29-04-2004 à 17:03:47    

Le patch du "SCR backwards" pour dvdauthor est dispo dans ce thread :
 
http://sourceforge.net/mailarchive [...] m_id=32261
 
c'est un diff a appliquer aux sources 0.6.10
c'est le seul qui soit dispo en ligne ;)

Reply

Marsh Posté le 29-04-2004 à 17:29:54    

philou_a7 a écrit :

non, le firewall de ma boite qui m'empeche de sortir :D
chez moi tout marche comme il faut :D
 
mandrake 9.2 rulez :D :lol:


un gugusse de l'ens cachan m'a dit que tu peux sortir en tunnelisant ton ssh ds du HTTP. (surtout si tu as squid c possible:d)

Reply

Marsh Posté le 29-04-2004 à 17:43:06    

oui mais là, le probleme c'est pas le port :D
c'est plutot un probleme d'IP fixe et de blacklistage de plages d'adresses un peu brutal... genre les IPs free et wanadoo :D

Reply

Marsh Posté le 29-04-2004 à 22:23:02    

2 ou 3 petits scripts :
 
determiner le nombre de chapitres et la duree de chaque titre :


#!/bin/sh
 
NBTITLE=`tcprobe -i /dev/dvd -H10 2>&1 | grep "DVD title" | cut -f 4 -d " " | cut -d "/" -f 2 | cut -d ":" -f 1`
 
echo $NBTITLE titres trouves.
I=1
 
while [ $I -le $NBTITLE ]
do
 echo titre $I :
 echo "   "`tcprobe -i /dev/dvd -T $I -H 10 2>&1 | tee _tempchap$I_ | egrep "\[Chapter ..\] " | wc -l ` chaps
 echo "   duree : "`grep "title playback time:" _tempchap$I_ | cut -d " " -f 7,8`
        rm -f _tempchap$I_ 2>&1 > /dev/null
 (( I=I+1 ))  
done


 
fabriquer la liste des temps de debut de chapitres pour dvdauthor :


tcprobe -i /dev/dvd -T 1 -H 10 2>&1 | egrep "\[Chapter ..\] " | cut -d " " -f 4 | perl -pi -e 's/\n/,/' | perl -pi -e 's/,$//'


-T 1 est a remplacer par le numéro du chapitre qui convient
 
commande exacte de copie de VOBs

dvdauthor -t -c `cat chapters.list` -p palette.rgb -o dvdtemp -f 'streamdvd -i /dev/dvd -t 1 -f 1.00000 -s 0xe0,0x80,0x81 |'


 
modifications de spuunmux.c pour comptage des couleurs
le resultat du diff entre l'original et ma version :


*** /home/philou/applications/dvdauthor-0.6.10/src/spuunmux.c   2004-03-13 19:00:33.000000000 +0100
--- spuunmux.c  2004-04-09 17:16:57.000000000 +0200
*************** static unsigned char cmap_find(int x,int
*** 433,438 ****
--- 433,451 ----
      return cix;
  }
 
+ void dump_tab(unsigned long colortable[16],unsigned int size)
+ {
+ int i;
+ for(i=0;i<16;i++)
+       fprintf(stderr,"|%02d   ",i);
+ fprintf(stderr,"|\n" );
+ for(i=0;i<16;i++)
+       fprintf(stderr,"|%05ld",colortable[i]);
+ fprintf(stderr,"|\n" );
+ for(i=0;i<16;i++)
+       fprintf(stderr,"|%05.2f",(colortable[i]*100.0)/size);
+ fprintf(stderr,"|\n" );
+ }
  static int write_png(char *file_name,struct spu *s,struct colormap *map,int nummap)
  {
      unsigned int a, x, y, nonzero;
*************** static int write_png(char *file_name,str
*** 441,451 ****
      png_structp png_ptr;
      png_infop info_ptr;
 
      temp = out_buf = malloc(s->xd * s->yd * 4);
!     nonzero=0;
      for (y = 0; y < s->yd; y++) {
          for (x = 0; x < s->xd; x++) {
              unsigned char cix=cmap_find(x+s->x0,y+s->y0,map,nummap,s->img[y * s->xd + x]);
              *temp++ = bpal[cix&15].r;
              *temp++ = bpal[cix&15].g;
              *temp++ = bpal[cix&15].b;
--- 454,470 ----
      png_structp png_ptr;
      png_infop info_ptr;
 
+ unsigned long cix_count[16];
+ int i,nb;
+ for(i=0;i<16;i++) cix_count[i]=0;
+
      temp = out_buf = malloc(s->xd * s->yd * 4);
!     nonzero=0;nb=0;
      for (y = 0; y < s->yd; y++) {
          for (x = 0; x < s->xd; x++) {
+ // les pixels sont dans s->img ou dans map
              unsigned char cix=cmap_find(x+s->x0,y+s->y0,map,nummap,s->img[y * s->xd + x]);
+ if ((cix>>4)*17>0) {nb++;(cix_count[cix&15])++;}
              *temp++ = bpal[cix&15].r;
              *temp++ = bpal[cix&15].g;
              *temp++ = bpal[cix&15].b;
*************** static int write_png(char *file_name,str
*** 457,463 ****
          free(out_buf);
          return 1;
      }
!
      fp = fopen(file_name, "wb" );
      if (!fp) {
        fprintf(stderr, "error, unable to open/create file: %s\n",
--- 476,482 ----
          free(out_buf);
          return 1;
      }
! dump_tab(cix_count,nb);
      fp = fopen(file_name, "wb" );
      if (!fp) {
        fprintf(stderr, "error, unable to open/create file: %s\n",


j'appelle cette commande comme ça :
spuunmux -v 1 -o ./tmp/sub -s 1 ./dvdok/VIDEO_TS/VTS_01_1.VOB
 
il continue a extraire les .png d'un VOB, mais affiche en plus un tableau donnant les pourcentage d'utilisation de chaque index de couleur non transparente dans chaque PNG.
 
 
Voila :)
Si vous voulez des precisions ou des infos, ou si une bonne ame veux m'aider a ameliorer, n'hesitez pas ;)


Message édité par philou_a7 le 30-04-2004 à 10:59:54
Reply

Marsh Posté le 30-04-2004 à 12:18:28    

je ne dois pas être doué, j'arrive pas à appliquer tes patches :  


patch --dry-run dvdvob.c dvdmodif
patch: **** malformed patch at line 7: {


 
et  


patch --dry-run spuunmux.c spumodif
patching file spuunmux.c
Hunk #1 FAILED at 433.
Hunk #2 FAILED at 454.
Hunk #3 succeeded at 476 with fuzz 1.
2 out of 3 hunks FAILED -- saving rejects to file spuunmux.c.rej


 
 [:zoutte]

Reply

Marsh Posté le 30-04-2004 à 13:55:18    

[:toyot]

Reply

Marsh Posté le 30-04-2004 à 14:27:55    

Heu je sais pas si le patch est applicable directement, j'ai juste fait un diff -p dvdvob.c dvdvob.c.orig pour le generer :D
 
T'es sûr d'avoir les sources de la 0.6.10 ?

Reply

Marsh Posté le 30-04-2004 à 14:36:50    

oui, j'ai la 0.6.10. tu peux mettre en ligne ces 2 fichiers modifiés ?
ou dans ma BAL : t u x r i p at f r e e dot fr .

Reply

Marsh Posté le 30-04-2004 à 14:38:16    

ce soir ;)
suis au bureau là :p
 
(au pire tu peux le faire a la main :D y a pas des tonnes de lignes a changer :D)

Reply

Marsh Posté le 30-04-2004 à 16:49:39    

bon beh drapal hein, un bon topic comme ça faut le garder sous la main  :hello:

Reply

Marsh Posté le 30-04-2004 à 20:47:15    

Pour les fichiers en version modifiée :
http://philoua7.free.fr/dvd/
 
Il y a les 2 patchs ci dessus, et aussi le patch de dvdauthor pour ignorer le paquet final malformé.

Reply

Marsh Posté le 01-05-2004 à 01:09:57    

thanks !  :bounce:  
je regarde ce WE. :hello:

Reply

Marsh Posté le 01-05-2004 à 17:41:35    

une piste pour les sub.
mencoder -dvd-device /dev/dvd dvd://$title -o /dev/null -nosound -ovc copy -vobsubout subs -vobsuboutindex 0 -sid 0
 
pas la peine de laisser jusqu'au bout...
 
ensuite un cat subs.idx donne


# VobSub index file, v7 (do not modify this line!)
#
# Generated by MPlayer 1.0pre4-3.3.2
# See <URL:http://www.mplayerhq.hu/> for more information about MPlayer
# See <URL:http://vobsub.edensrising.com/> for more information about Vobsub
#
size: 720x576
palette: 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, b367db, 7b7b7b, d1d1d1, 0d6f44, 0d790d, ec840c, cf0dec, cfa80c, dee037
# ON: displays only forced subtitles, OFF: shows everything
forced subs: OFF
 
# Language index in use
langidx: 0
 
id: fr, index: 0
timestamp: 00:00:00:287, filepos: 000000000
timestamp: 00:00:01:280, filepos: 000000800
timestamp: 00:00:02:480, filepos: 000001000


on peux y voir une palette, est-elle du bon format où y a ptet une conversion à faire ?

Reply

Marsh Posté le 01-05-2004 à 18:26:02    

ça marche !
 
j'ai crée le fichier palette.rgb en metant en colonne les valeurs issues du subs.idx et ai continué selon ta méthode philou. La lecture est ok avec mplayer ou xine...
 
Sinon, je pense que l'étape predvd est inutile, on peux requantizer à la volée en prenant le facteur donné par une commande du type : "streamanalyze -i /dev/dvd -t 12 -s 0xe0,0x20,0x21,0x80".
 
 :love:

Reply

Marsh Posté le 03-05-2004 à 10:19:58    

jotenakis a écrit :

ça marche !
 
j'ai crée le fichier palette.rgb en metant en colonne les valeurs issues du subs.idx et ai continué selon ta méthode philou. La lecture est ok avec mplayer ou xine...
 
Sinon, je pense que l'étape predvd est inutile, on peux requantizer à la volée en prenant le facteur donné par une commande du type : "streamanalyze -i /dev/dvd -t 12 -s 0xe0,0x20,0x21,0x80".
 
 :love:


 
ah, ca y est, forum is back :p
 
Bon, 2 infos a rajouter :)
 
1/ L'etape predvd est utile :p car elle permet de calculer le facteur de requant au plus juste. Si tu calcules le requant depuis le dvd complet, tu vas faire intervenir tous les flux inutiles dans le calcul (langues et sous titres en trop) et tu vas "requanter" plus fort que necessaire, ce qui joue forcement sur la qualité de l'image.
Si tu manques de place disque, ok, tu peux voir a passer cette etape, si tu es sur de garder tous les flux, pareil, mais sinon, ca serait bête :p
 
2/ Pour l'affectation des langues, j'ai été bidon :lol:
En fait, les parametres de dvdauthor fonctionnent mais j'avais mal fait la syntaxe je pense.
Sur le dernier lancement de dvdauthor (si on relance un dvdauthor sur ce flux, les infos seront perdues), il suffit de lancer :

dvdauthor-patch -t -p palette.rgb -a <langues audios> -s <langues subs> -c `echo chapters.list` -o dvdok -f 'streamdvd -i ./pre-dvd -f <facteur de requantisation> -t 1 -s <numeros de flux> |'


avec les codes langues dans l'ordre des flux et séparées par des virgules :)
Par exemple, pour un film avec  
0x80=francais 0x81=anglais 0x83=allemand
0x20=francais 0x23=allemand
on lancera :
dvdauthor-patch -t -p palette.rgb -a fr,en,de -s fr,de -c `echo chapters.list` -o dvdok -f 'streamdvd -i ./pre-dvd -f <facteur de requantisation> -t 1 -s 0xe0,0x80,0x81,0x83,0x20,0x23 |'
 
il ne faut pas utiliser la syntaxe ac3+fr mais directement fr en fait... c'etait mon erreur :p


Message édité par philou_a7 le 03-05-2004 à 10:20:34
Reply

Marsh Posté le 03-05-2004 à 10:35:11    

je ne suis pas trop d'accord avec le 1/. Le facteur de requant peut être calculé avec streamanalyse en précisant sur quels flux avec l'option -s...
 
exemple : "streamanalyse -i /dev/dvd -s 0xe0,0x80,0x21"
 
EDIT : c'est pas -c `echo chapter.list` mais -c `cat chapter.list`.


Message édité par jotenakis le 03-05-2004 à 10:41:27

---------------
Jotenakis
Reply

Marsh Posté le 03-05-2004 à 10:38:38    

Pour formater correctement le resultat de la commande  

mencoder -dvd-device /dev/dvd dvd://$title -o /dev/null -nosound -ovc copy -vobsubout subs -vobsuboutindex 0 -sid 0


 
il suffit de recuperer sa sortie et de la passer dans cette commande :

cat resultat_mencoder_palette | grep "palette:" | sed "s/\s/\n/g" | sed "s/,//g" | egrep "^[0-9a-fA-F]{6}$" > palette.rgb


 
et palette.rgb est bien formé :)

Reply

Marsh Posté le 03-05-2004 à 10:39:39    

jotenakis a écrit :

je ne suis pas trop d'accord avec le 1/. Le facteur de requant peut être calculé avec streamanalyse en précisant sur quels flux avec l'option -s...
 
exemple : "streamanalyse -i /dev/dvd -s 0xe0,0x80,0x21"


 
.... ( <- illustration du grand vide dans ma tête)
 
ok, je suis une grosse nouille qui lit trop vite les docs  :cry: :lol: :lol: :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed