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

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: