Skip to content

Instantly share code, notes, and snippets.

@k-zakhariy
Created October 23, 2024 20:52
Show Gist options
  • Save k-zakhariy/8d6ccc38277d93c00c381e1fd3a5276b to your computer and use it in GitHub Desktop.
Save k-zakhariy/8d6ccc38277d93c00c381e1fd3a5276b to your computer and use it in GitHub Desktop.
Convert BlueRay to WAV/FLAC
#!/bin/bash
# Змінні
INPUT_FILE="00010.m2ts" # Назва вхідного файлу
OUTPUT_FORMAT="wav" # Вибір формату: "wav" або "flac"
OUTPUT_DIR="./output" # Директорія для збереження виходу
AUDIO_TRACK="0:1"
# Створюємо директорію, якщо вона не існує
mkdir -p "$OUTPUT_DIR/$OUTPUT_FORMAT"
# Часові мітки
declare -a timestamps=(
"00:00:00.000 00:01:34.041"
"00:01:34.041 00:06:56.583"
)
# Цикл для обробки кожного треку
for i in "${!timestamps[@]}"; do
# Розбиваємо часові мітки на початок і тривалість
read start_time duration <<< "${timestamps[i]}"
# Визначаємо вихідний файл
if [ "$OUTPUT_FORMAT" == "flac" ]; then
OUTPUT_FILE="$OUTPUT_DIR/flac/track$((i+1)).flac"
CODEC="flac"
EXTRA_OPTIONS="-ar 48000 -sample_fmt s32 -compression_level 0 -map_metadata 0 -map 0:v:0? -c:v copy"
elif [ "$OUTPUT_FORMAT" == "wav" ]; then
OUTPUT_FILE="$OUTPUT_DIR/wav/track$((i+1)).wav"
CODEC="pcm_s24le"
EXTRA_OPTIONS=""
else
echo "Невірний формат виходу: $OUTPUT_FORMAT. Використовуйте 'wav' або 'flac'."
exit 1
fi
# Створюємо підкаталог для формату, якщо він не існує
mkdir -p "$(dirname "$OUTPUT_FILE")"
# Виконуємо конвертацію
ffmpeg -i "$INPUT_FILE" -ss "$start_time" -t "$duration" -map "$AUDIO_TRACK" -c:a "$CODEC" $EXTRA_OPTIONS \
"$OUTPUT_FILE"
done
echo "Конвертація завершена! Вихідні файли збережені в директорії $OUTPUT_DIR."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment