blob: 548aec2c5f325ee1a6d9f5861dc2d30f586f6b7c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#!/bin/sh
# on veut 1 paramètre
if [ $# != 1 ]; then
printf "%b\n" "erreur, ce script attend 1 unique paramètre: le nom du fichier source." >&2
exit 1
fi
# obtenir le format de la piste audio
# - les parenthèses nous épargent d'utiliser des antislashs \
# - l'info qu'on recherche est dans la sortie d'erreur standard (stderr),
# on la redirige dans la sortie standard (stdout)
# - syntaxe regex: grep recherche "Stream" puis n'importe quoi puis "Audio"
echo -e "\n-- Format audio et extension du nouveau fichier--\n"
echo -e "Saisir le nom du format retourné ci-dessous juste après le mot \"Audio:\""
ffmpeg -i "$1" 2>&1 | grep Stream.*Audio
echo -e "\nCe sera l'extension du nouveau fichier sauf dans ces cas particuliers:\nSi le format est vorbis, l'extension sera ogg.\nSi le format est aac, l'extension sera m4a.\nSi le format est wmav2, l'extension sera wma."
# saisie utilisateur
printf "\nQuel est le format? "
read format
# cas particuliers
if [ $format == vorbis ]; then
format=ogg
elif [ $format == aac ]; then
format=m4a
elif [ $format == wmav2 ]; then
format=wma
fi
# nom sans extension
# $1 est le nom du fichier original en paramètre
# rev inverse les caractères de la chaîne
# 2- permet de cibler les champs aux positions 2 et supérieures
# note: basename fait la même chose, nécessite le paquet 'coreutils'
name=`echo $1 | rev | cut -f 2- -d "." | rev`
nameNew="$name"."$format"
# debug
#echo -e $1
#echo -e $nameNew
# renommage de l'ancien fichier si l'extension ne change pas
# permet de conserver le fichier original comme dans l'autre cas
# évite à ffmpeg d'échouer et de retourner une erreur
if [ "$1" == "$nameNew" ]; then
nameOld=$1"-old"
mv "$1" "$nameOld"
else
nameOld=$1
fi
# création du nouveau fichier
# -loglevel 24 rend ffmpeg silencieux sauf "warning" et "error"
ffmpeg -loglevel 24 -i "$nameOld" -vn -acodec copy "$nameNew"
echo -e "\nSi aucun message d'erreur n'apparaît, un nouveau fichier devrait avoir été créé appelé:\n "$nameNew
if [ "$1" == "$nameNew" ]; then
echo -e "Le fichier original devrait avoir été renommé:\n "$nameOld"."
fi
#echo "Ce processus devrait être très rapide (pas de réencodage), signifiant que la qualité du son n'a pas été dégradée."
# En cas d'échec de ffmpeg
# - extensions différentes: le fichier original est conservé
# - même extension: le fichier original est renommé (pas top mais au moins c'est dit)
|