Я хочу конвертировать целую кучу файлов FLAC в ALAC, используя такой инструмент, как ffmpeg или sox. Это само по себе достаточно просто с одной командной строкой. Тем не менее, я хочу сэкономить дисковое пространство путем понижающей дискретизации только тех файлов FLAC с частотой дискретизации, превышающей определенное значение. Так что-то вроде:


Для всех файлов * .flac в данном каталоге ...

... если входной файл имеет частоту дискретизации выше 96 кГц, преобразуйте в ALAC и уменьшите частоту до 96 кГц (добавив флаг «-ar 96000»).

ffmpeg -i track.flac -acodec alac -ar 96000 track.m4a

... иначе просто конвертируйте его в ALAC без изменений.

ffmpeg -i track.flac -acodec alac track.m4a

Можно ли добиться такого определения частоты дискретизации, и если да, то как будет выглядеть сценарий для выполнения вышеуказанного?

1 ответ1

1

... ааа и разобрался. Здесь, используя sox для определения частоты дискретизации, и ffmpeg для транскодирования. Воткну это в скрипт bash :

for f in *.flac; do

  RATE="$(soxi -r $f)"

  if [ $RATE -gt 96000 ]
  then
    echo Resampling and converting... 
    ffmpeg -i "$f" -acodec alac -ar 96000 -c:v copy "${f%}.m4a";
  else
    echo Converting...
    ffmpeg -i "$f" -acodec alac -c:v copy "${f%}.m4a";
  fi

done

Флаг копирования -c:v передает обложку альбома нетронутой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .