ffmpegを使ってflacファイルをwavファイルにGNU Parallelを使って並列処理で変換をする

初めに

開発環境

  • cuda:12.2.0
  • ubuntu22.04

詳細

以下のコードにて、指定したフォルダ内にあるflacファイルをwavファイルに変換します。このとき -j $(nproc) でCPUの最大コア数を指定しているのため、必要に応じて変更してください

#!/bin/bash

# 引数から音声ファイルがあるパスを取得
input_dir="$1"

# 変換後のwavファイルを保存するフォルダを作成
mkdir -p convert_wav

# 並列処理の関数を定義
convert_file() {
  file="$1"
  output_file="convert_wav/$(basename "${file%.flac}.wav")"
  echo "Converting file: $file"
  ffmpeg -i "$file" -acodec pcm_s16le -ar 44100 -ac 2 "$output_file"
  if [ $? -eq 0 ]; then
    echo "Conversion successful: $output_file"
  else
    echo "Conversion failed: $file"
  fi
}

# GNU Parallelを使用して並列処理を実行
export -f convert_file
find "$input_dir" -maxdepth 1 -name "*.flac" | parallel -j $(nproc) convert_file {}

echo "Conversion complete."

上記は以下のように実行します

./convert.sh output_flac/