[Script BASH] Script pour transformer un ogm en avi

Script pour transformer un ogm en avi [Script BASH] - Linux et OS Alternatifs

Marsh Posté le 20-06-2004 à 23:14:03    

Bonjour,
 
Heureux possesseur d'un lecteur divx Kiss DP-500, je peut regarder les fichiers videos utilisant le container Microsoft .avi sur ma tele avec mon bel ampli.
 
Seul probleme mon kiss ne parle pas l'open source :  ie impossible de regarder les videos dans un container ogm.
 
J'ai donc essayer de realiser un script pour demuxer un ogm et le remuxer en avi ( avec reencodage du son en mp3 :( ) et un fichier .srt si il y avait des sous titrte dans l'ogm.
 
Mon script necessite actuellement:

  • ogmdemux ( package ogmtools sous debian)
  • oggdec
  • lame
  • avidemux ( il y a surement moins lourd pour muxer un stream video et un stream mp3 dans un avi)


il se lance de la facon suivante  


./ogmdemux <fichier.ogm> <numerodutrackaudio> <numerodusoustitre>


 
Voila le script :


#!/bin/bash
function usage {
 echo usage: $0 file.ogm audiotracknumber subtitlenumber  
}
function error {
 echo error: $1
 exit
}
function exists {
if ! test -f $1  
then
 error "Le fichier $1 n'existe pas"
fi
}
 
if [ -z "$3" ]; then  
 usage
 exit
fi
DIR=$( dirname $1 )
FILENAME=$( basename $1 .ogm)
SOUNDNAME=$FILENAME-a$2
SUBTITLENAME=$FILENAME-t$3
VIDEONAME=$FILENAME-v1
 
#On demuxe
echo "Demuxing Ogg media file : $FILENAME.ogm"
ogmdemux -o $DIR/$FILENAME -a $2 -t $3 $DIR/$FILENAME.ogm &> /dev/null
 
#On teste que le fichier audio a bien été demuxé.
exists $DIR/$SOUNDNAME.ogg
echo "Audio track done : $SOUNDNAME.ogg"
#Si il y'a un sous-titre on le renomme.
if  test -f $DIR/$SUBTITLENAME.srt
then
 echo "Subtitle done : $SUBTITLENAME.srt"
 echo "Renaming $SUBTITLENAME.srt to $FILENAME.sub"
 mv $DIR/$SUBTITLENAME.srt $DIR/$FILENAME.sub
 echo "Renaming finished."
else
    echo "No Subtitle"
fi
 
#On decode le fichier audio .ogg
echo "Decoding $SOUNDNAME.ogg to WAV."
oggdec -o $DIR/$SOUNDNAME.wav $DIR/$SOUNDNAME.ogg &> /dev/null
 
#On verifie que ca a bien marche sinon on quitte avec une erreur
exists $DIR/$SOUNDNAME.wav  
echo "Decoding finished: $SOUNDNAME.wav"
#On encode avec lame ca gere.
echo "Compressing $SOUNDNAME.wav to MP3."
lame --preset 128 $DIR/$SOUNDNAME.wav $DIR/$SOUNDNAME.mp3 &> /dev/null
 
#On teste que l'encodage s'est bien passe .
exists $DIR/$SOUNDNAME.mp3
echo "Compression finished: $SOUNDNAME.mp3"
 
#On muxe tout ca.
echo "Muxing into avi container."
avidemux --load $DIR/$VIDEONAME.avi --external-mp3 $DIR/$SOUNDNAME.mp3 --audio-map --save $DIR/$FILENAME.avi --quit &> /dev/null
 
#On teste que ca a marché
exists $DIR/$FILENAME.avi
echo "Muxing finished: $FILENAME.avi"
#On nettoie
echo "Cleaning up."
rm  $DIR/$SOUNDNAME.*
rm  $DIR/$VIDEONAME.avi
echo "OGM Demux completed successfully."
 


 
C'est mon premier script par consequent il est bien loin d'etre optimal et c'est la que j'ai besoin de votre aide:  
 - Y'a t il de grosses erreurs de programmations bash a eliminer absolument ?  
 - Quelle est la meilleure facon pour rendre ce script "recursif" c'est a dire que s'il est lance sur un directory il s'applique a tous les .ogm dans le directory
 
Merci d'avance pour votre aide .
 
--
tfh
 
GPG Key:0x960AAEF2


Message édité par tfh le 20-06-2004 à 23:19:23
Reply

Marsh Posté le 20-06-2004 à 23:14:03   

Reply

Sujets relatifs:

Leave a Replay

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