40 lines
1.2 KiB
Bash
Executable File
40 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Vérifier si le nombre d'arguments est correct
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: $0 fichier.mkv"
|
|
exit 1
|
|
fi
|
|
|
|
# Nom du fichier MKV en entrée
|
|
input_file="$1"
|
|
|
|
# Vérifier si le fichier MKV existe
|
|
if [ ! -f "$input_file" ]; then
|
|
echo "Le fichier $input_file n'existe pas."
|
|
exit 1
|
|
fi
|
|
|
|
# Extraire le nombre de pistes audio dans le fichier MKV
|
|
num_audio_tracks=$(ffprobe -i "$input_file" -select_streams a -show_entries stream=index -of csv=p=0 | wc -l)
|
|
|
|
# Vérifier s'il y a au moins une piste audio
|
|
if [ "$num_audio_tracks" -eq 0 ]; then
|
|
echo "Le fichier MKV ne contient aucune piste audio."
|
|
exit 1
|
|
fi
|
|
|
|
# Créer un répertoire pour stocker les fichiers audio extraits
|
|
output_dir="${input_file%.mkv}_audio_tracks"
|
|
mkdir -p "$output_dir"
|
|
|
|
# Boucler à travers chaque piste audio et les extraire dans leur format natif
|
|
for ((i = 0; i < num_audio_tracks; i++)); do
|
|
output_file="$output_dir/audio_track_$i.$(ffprobe -i "$input_file" -select_streams a -show_entries stream=codec_name -of csv=p=0 -v 0 | sed -n "$(($i+1))p")"
|
|
ffmpeg -i "$input_file" -map "a:$i" "$output_file"
|
|
echo "Piste audio $i extraite dans $output_file."
|
|
done
|
|
|
|
echo "Extraction terminée. Les fichiers audio sont stockés dans le répertoire $output_dir."
|
|
|