Re: Film en wmv
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 <goldy@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
Reply to: