#!/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."