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