scripts-bash/local/bin/mkv_extract.sh

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."