[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: frontend pour couper un vob a l'image près



Thierry B wrote:

Re,

euh, je veux bien ta petite ligne dont tu me parles avec mencoder lol, sachant que moi je pars d'un flux dvd, et donc les etapes seraient de:

- extraire le dvd
- decouper les parties des vobs qui m'interessent pas
- fusionner le tout en un seul vob
- faire un divx de ce vob lol.

Voila :-)

Je te remercie encore :-)



Alors, j'ai mis un peu de temps, mais je vais donner mon début de script pour encoder un dvd. Pour "ripper" le dvd, je crois que je fais un "vobcopy -m /dev/dvd -o /repertoire/de/sortie" l'option "m" permet de faire un "mirror", ie de copier bêtement le dvd, avec tout ce qu'il y a dedans. Le logiciel est dans le paquet "vobcopy" (apt-get install vobcopy)

Je l'indique ici parceque je n'ai pas encore automatisé l'extraction de dvd.

Le script que je propose permet d'encoder l'audio en mp3, avec lame (vérifier sa présence) Il permet aussi d'encoder l'un des titres (personnellement, je l'utilise pour encoder mes
dvd de star treck)

Je n'ai pas encore blindé l'utilisation en ligne de commande, donc il faut modifier deux paramètres "en dur" dans le script - désolé, je n'ai jamais dit que c'était une version "release":

CE QUE CA FAIT:
encode le titre $TITRE du répertoire dvd $DVD_ROOT du disque dur dans un répertoire de sortie $OUTPUT_DIR Les fichiers obtenus sont de la forme titre1-audio-fr, titre1-audio-en, titre1-video
Ce sont ces variables qu'il faut modifier "à la main"

Si un fichier est déjà encodé (vérifié par son existence), il ne le ré-encode pas (cela permet de relancer plusieurs fois le script: si la vidéo est encodée correctement mais pas le son, on
supprime les fichiers audio et on relance le script sans "peur")

Les étapes sont découpées en "recupere_audio/video/sous-titres" et en "encode_audio/video/sous-titre"

Comme ça, si on découvre/préfère une autre méthode pour encoder ou démuxer, on ne change que
la fonction concernée.

Pour les sous-titres, si quelqu'un a une méthode efficace en ligne de commande, je suis preneur. Personnellement, celle présentée ici ne marche pas - je l'ai trouvé sur un forum quelconque.

A RAJOUTER:
*La gestion des paramètres
Il faudrait pouvoir appeler le programme par:
encode_dvd /repertoire/du/dvd /repertoire/du/divx Titre
Avec "par défaut" titre=1 et /repertoire/du/divx=répertoire_courant
*le mixage, avec avimerge
un truc du genre "avimerge -o outputfile -i video -p audio-fr audio-en"
Je ne me suis pas encore penché là dessus.
* les sous-titres

ps: n'oubliez pas de donner les droits exécutables au fichier (chmod a+X encode_video) ----------------8<----------------Debut du script encode_dvd----------------8<-------------------

#!/bin/bash

###########################################################################################################################
function recupere_audio {

OUT_FILE=$OUTPUT_DIR/Titre$TITRE-audio-$1

if [ -a $OUT_FILE ] ; then
echo "recupere_audio ($1): le fichier $OUT_FILE existe déjà. " ;
else
echo "recupere_audio ($1): création du fichier $OUT_FILE"
mplayer dvd://$TITRE -dvd-device $DVD_ROOT -ao pcm:file=$OUT_FILE -vo null -alang $1 ;
fi

}
###########################################################################################################################
function recupere_video {
OUT_FILE=$OUTPUT_DIR/Titre$TITRE-video
if [ -a $OUT_FILE ] ; then
echo "recupere_video : le fichier $OUT_FILE existe déjà." ;
else
echo "recupere_video : création du fichier $OUT_FILE"
mplayer dvd://$TITRE -dvd-device $DVD_ROOT -ao null -dumpvideo -dumpfile $OUT_FILE ;
fi
}
###########################################################################################################################
function encode_audio {
IN_FILE=$OUTPUT_DIR/Titre$TITRE-audio-$1
OUT_FILE=$OUTPUT_DIR/Titre$TITRE-audio-$1.mp3

if [ -a $OUT_FILE ] ; then
echo "encode_audio ($1): le fichier $OUT_FILE existe déjà." ;
else
echo "encode_audio ($1): encodage du fichier $IN_FILE"
lame -b 96 -h $IN_FILE $OUT_FILE ;
fi
}
###########################################################################################################################
function encode_video {
IN_FILE=$OUTPUT_DIR/Titre$TITRE-video
OUT_FILE=$OUTPUT_DIR/Titre$TITRE-video-output.avi

if [ -a $OUT_FILE ] ; then
echo "encode_video : le fichier $OUT_FILE existe déjà." ;
else
echo "encode_video : encodage du fichier $IN_FILE"
echo "  |- Première passe"
       nice -n 19 mencoder -oac lavc -ovc lavc  \
-lavcopts vcodec=mpeg4:vbitrate=1500:vpass=1:acodec=mp2:abitrate=96 \
               $IN_FILE -o /dev/null
echo "  |- Deuxième passe"
       nice -n 19 mencoder -ffourcc divx \
           -vf scale=640:480 \
-oac lavc -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500:vpass=2:acodec=mp2:abitrate=96 $IN_FILE \
                -o $OUT_FILE
echo "  \- il faut mixer les fichiers encodés" ;
fi
}
###########################################################################################################################

function recupere_soustitre {
IN_FILE=audio-$1
OUT_FILE=audio-$1.mp3

#cré un fichier sous titre, plus le son
mencoder dvd://$TITRE -vobsubout soustitres -vobsuboutindex 0 -sid 4 -o frameno.avi -ovc frameno -oac mp3lame -lameopts abr:br=128 -alang en
}
###########################################################################################################################

#Ce sont ces paramètres là qu'il faut changer.
#si vous vous sentez de faire une vérification de la ligne de commande, n'hésitez pas à m'en faire part.
TITRE=3
DVD_ROOT="/mnt/barad-dur/films/StarTrecks1/dvd1"
OUTPUT_DIR="/mnt/barad-dur/films/StarTrecks1/dvd1"

recupere_audio fr
recupere_audio en
encode_audio fr
encode_audio en
recupere_video
encode_video


------------------8<----------------fin du script ---------------------8<------------------------------------------------

Je possède aussi un script qui encode les fichiers en "file".
Un répertoire PENDING, un répertoire OUTPUT, un répertoire DONE, les paramètres de retaillage et de découpage étant intégré dans le nom. On lance le script, et les fichiers à encoder le sont. Je l'utilise pour encoder les fichiers enregistré par la carte dvb. S'il intéresse des gens, je veux bien
le poster aussi.

En espérant que cela aide et en m'excusant du retard (j'avais dit que je le posterai vendredi dernier..)

Nicolas Folin



Reply to: