summaryrefslogtreecommitdiff
path: root/extract_audio.sh
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2023-04-07 00:12:13 +0200
committerpolo <ordipolo@gmx.fr>2023-04-07 00:12:13 +0200
commit6fec2f42c2d4cd051283c24d560a7f88f654a40b (patch)
tree016bd11fc309703a6f2d3705746c0533446b315c /extract_audio.sh
downloadffmpeg-6fec2f42c2d4cd051283c24d560a7f88f654a40b.zip
extract_audio
Diffstat (limited to 'extract_audio.sh')
-rwxr-xr-xextract_audio.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/extract_audio.sh b/extract_audio.sh
new file mode 100755
index 0000000..d506f4c
--- /dev/null
+++ b/extract_audio.sh
@@ -0,0 +1,69 @@
1#!/bin/bash
2
3# on veut 1 paramètre
4if [ $# != 1 ]; then
5 printf "%b\n" "erreur, ce script attend 1 unique paramètre: le nom du fichier source." >&2
6 exit 1
7fi
8
9# obtenir le format de la piste audio
10# - les parenthèses nous épargent d'utiliser des antislashs \
11# - l'info qu'on recherche est dans la sortie d'erreur standard (stderr),
12# on la redirige dans la sortie standard (stdout)
13# - syntaxe regex: grep recherche "Stream" puis n'importe quoi puis "Audio"
14echo -e "\n-- Format audio et extension du nouveau fichier--\n"
15echo -e "Saisir le nom du format retourné ci-dessous juste après le mot \"Audio:\""
16ffmpeg -i "$1" 2>&1 | grep Stream.*Audio
17
18echo -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."
19
20# saisie utilisateur
21printf "\nQuel est le format? "
22read format
23
24# cas particuliers
25if [ $format == vorbis ]; then
26 format=ogg
27elif [ $format == aac ]; then
28 format=m4a
29elif [ $format == wmav2 ]; then
30 format=wma
31fi
32
33# nom sans extension
34# $1 est le nom du fichier original en paramètre
35# rev inverse les caractères de la chaîne
36# 2- permet de cibler les champs aux positions 2 et supérieures
37# note: basename fait la même chose, nécessite le paquet 'coreutils'
38name=`echo $1 | rev | cut -f 2- -d "." | rev`
39
40nameNew="$name"."$format"
41
42echo -e $1
43echo -e $nameNew
44
45# renommage de l'ancien fichier si l'extension ne change pas
46# permet de conserver le fichier original comme dans l'autre cas
47# évite à ffmpeg d'échouer et de retourner une erreur
48if [ "$1" == "$nameNew" ]; then
49 nameOld=$1"-old"
50 mv "$1" "$nameOld"
51else
52 nameOld=$1
53fi
54
55# création du nouveau fichier
56# -loglevel 24 rend ffmpeg silencieux sauf "warning" et "error"
57ffmpeg -loglevel 24 -i "$nameOld" -vn -acodec copy "$nameNew"
58
59echo -e "\nSi aucun message d'erreur n'apparaît, un nouveau fichier devrait avoir été créé:\n "$nameNew
60
61if [ "$1" == "$nameNew" ]; then
62 echo -e "Le fichier original devrait avoir été renommé:\n "$nameOld"."
63fi
64
65#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."
66
67# En cas d'échec de ffmpeg
68# - extensions différentes: le fichier original est conservé
69# - même extension: le fichier original est renommé (pas top mais au moins c'est dit)