Le 20/10/2010 10:34, Thierry Chatelet a écrit :
> Est-il possible de lire, ou de transformer dans un autre format les wmv?
> je suis en squeeze, soit en 32 bits, soit en 64.
> Thierry
> 

Bonjour,

J'ai écrit un script en bash il y a quelques temps déjà que j'avais
publié sur le forum d'ubuntu-fr. C'est un script qui convertie divers
formats de vidéos (wmv, flv, avi, mpeg, mp4, etc) vers le format mkv.

Il réencode la piste audio en ogg (car le format mkv n'accepte pas le
format wma utilisé dans les wmv), et mux le tout dans un fichier mkv.

Pour l'utiliser, il suffit de l'exécuter sans paramètre dans le dossier
contenant le ou les vidéos à convertir.

La qualité de l'encodage vorbis peut être modifiée dans une variable au
début du script.

Cette méthode à l'avantage d'être rapide et de ne pas altérer la vidéo
convertie.

Je le copie en pièce jointe.

Il nécessite les paquets suivant :

-mencoder
-mkvtoolnix
-vorbis-tool
-ffmepg
-file (je ne sais plus si il est par défaut présent dans les distributions)

#!/bin/bash


#Script de multiplexage des fichiers vidéo vers mkv, avec réencodage du son 
en vorbis si nécessaire.
#Licence GPL - Auteur Goldy <go...@goldenfish.info>

## Variables de configurations
# Éditez les variables pour modifier la configuration.

## USAGE
# exécutez le sans paramettre dans le dossier contenant la ou les vidéos à 
convertir.

#Qualité vorbis (entre -1 et 10) 10 = meilleurs qualité
vorbis_q=4



## Définition du type de conteneur


##fonction

analyse_conteneur () {


#Définition de la variable sur la sortie de la commande "file"
file_type="`file -b -L "$file"`"
conteneur= #réinitialise $conteneur
mpeg="MPEG"
avi="AVI"
mp4="MP4"
mkv="MKV"
flv="FLV"
ogm="OGM"
ogg="Ogg/Theora"
wmv="WMV"
real="RealMedia"
###boucle de détection

case "$file_type" in

#Video MPEG
        *"MPEG"*)
                conteneur="$mpeg"
                ;;              

#Video AVI
        *"AVI"*)
                conteneur="$avi"
                ;;      

#Video AVI
#       *"data"*)
#               conteneur="$avi"
#               ;;              
#Video MP4
        *"MPEG v4 system"*)
                conteneur="$mp4"
                ;;              

#Video MKV
        *"Matroska data"*)
                conteneur="$mkv"
                ;;              

#Video FLV
        *"Macromedia Flash Video"*)
                conteneur="$flv"
                ;;              

#Video OGM
        *"OGM video"*)
                conteneur="$ogm"
                ;;      
#Video OGG Theora
        *"Theora "*)
                conteneur="$ogg"
                ;;
#Vidéo WMV
        *"ASF"*)
                conteneur="$wmv"
                ;;
        
esac



#Affichage du conteneur
case "$conteneur" in
        "$mp4"|"$ogm"|"$ogg")
                echo "Le conteneur de $file est au format $conteneur, il sera 
directement convertie"
                direct=1
                ;;
        "$mpeg"|"$wmv"|"$flv"|"$avi")
                echo "Le conteneur de $file est au format $conteneur, il sera 
convertie"
                ;;
#Fichiers non pris en charge    
        *)
                echo "Le fichier n'est pas pris en charge"
                error=1
                ;;

esac
}


#Sequence de conversion sonore

sound_conv () {
filewav=""$file".wav"
fileogg=""$file".ogg"

if ffmpeg -i "$file" "$filewav"
        then
                if oggenc "$filewav" -q"$vorbis_q" -o "$fileogg"
                        then
                                sounderror=0
                        else
                                sounderror=1
                fi
        else
                sounderror=1
fi

}

#Séquence de conversion wmv to avi

wmv_to_avi () {

fileavi=""$file".avi"

if mencoder "$file" -ovc copy -nosound -of avi -o "$fileavi"
        then
                error=0
        else
                error=1
fi

}


## Séquence de multiplexage mkv

mkv_mux () {

filemkv="${file%.*}.mkv"
filenosoundmkv="${file%.*}[no_sound].mkv"

if [ $sounderror -eq "0" ]
        then
                if [ $direct -eq "1" ]
                        then
                        mkvmerge "$file" -o "$filemkv"
                else
                        mkvmerge "$fileavi" "$fileogg" -o "$filemkv"
                fi
        else
                mkvmerge "$fileavi" -o "$filenosoundmkv"
fi

}

#Séquence de ménage

menage () {

rm "$fileavi" "$fileogg" "$filewav"

}

## Séquence de conversion

convertion () {
error=0
direct=0
sounderror=0
analyse_conteneur

if [ $error -eq "0" ]
        then
                if [ $direct -eq "1" ]
                        then
                                mkv_mux
                        else
                                sound_conv
                                wmv_to_avi
                        
                                if [ $error -eq "0" ]
                                        then
                                                mkv_mux
                                                menage
                                else    
                                        echo "erreur, le fichier $file ne sera 
pas traité"
                                fi
                fi
        else
                echo "erreur, le fichier $file ne sera pas traité"
fi


}




## Séquence d'execution

for file in *
do
echo "$file"
convertion
done


Répondre à