ALAC와 FLAC는 모두 무손실 오디오 형식이며, 한 형식에서 다른 형식으로 변환할 때 파일 크기는 일반적으로 거의 같습니다. 나는 자주 ffmpeg -i track.flac track.m4a
이 두 형식 사이를 변환하지만 결과 ALAC 파일이 원본 파일보다 훨씬 작다는 것을 알았습니다. MediaHuman Audio Converter와 같은 변환기 소프트웨어를 사용할 때 ALAC의 크기는 FLAC와 동일한 크기로 유지되므로 ffmpeg
신호가 다운샘플링되도록 하는 일부 플래그가 누락된 것 같습니다 .
답변1
알겠습니다. 여기에 질문하는 것이 조금 빠르겠지만 나중에 참고할 수 있도록 답변은 다음과 같습니다.
FLAC와 ALAC 간의 무손실 변환을 -acodec alac
위해 플래그를 전달해야 합니다 .ffmpeg
ffmpeg -i track.flac -acodec alac track.m4a
답변2
전체 디렉토리를 변환하는 데 사용되었습니다 ...
용법
pushd './Music/Some Album [flac]'
bash flac-to-alac.sh
flac-to-alac.sh
:
#!/usr/bin/env bash
my_bin="$(dirname $0)/flac-to-alac-ffmpeg.sh"
find . -type f -name '*.flac' -exec "$my_bin" {} \;
flac-to-alac-ffmpeg.sh
:
#!/usr/bin/env bash
set -e # fail if there's any error
set -u
my_file=$1
my_new="$(echo $(dirname "$my_file")/$(basename "$my_file" .flac).m4a)"
echo "$my_file"
ffmpeg -y -v 0 -i "$my_file" -acodec alac "$my_new"
# only gets here if the conversion didn't fail
#rm "$my_file"
선택하다:
단일 명령으로 작동하게 할 수 있다고 생각했지만 [
.
유망해 보이는데...
#!/usr/bin/env bash
set -e # exit immediately on error
set -u # error if a variable is misspelled
while read -r my_file; do
# ./foo/bar.flac => ./foo/bar.m4a
my_new="$(dirname "$my_file")/$(basename "$my_file" .flac).m4a"
ffmpeg -i "$my_file" -acodec alac "$my_new"
# safe because of set -e, but still do a test run
#rm "$my_file"
done <<< "$(find . -type f -name '*.flac')"