ffmpegを使用したFLACからALACへのロスレスオーディオ変換


13

ALACとFLACはどちらもロスレスオーディオ形式であり、ある形式から別の形式に変換すると、ファイルのサイズは通常ほぼ同じになります。私ffmpeg -i track.flac track.m4aはこれら2つのフォーマット間の変換に使用していますが、生成されるALACファイルは元のファイルよりもはるかに小さいことに気づきました。MediaHuman Audio Converterなどのコンバーターソフトウェアを使用する場合、ALACのサイズはFLACとほぼ同じサイズのままであるためffmpeg、信号をダウンサンプリングする原因となっているいくつかのフラグがないと思います。


ffmpeg通常-acodec、会話を正しく行うために、宛先にはが必要です。使用するフロントエンドはたくさんありますがffmpeg、出力オプションとしてALACが含まれていないことに気づきました。
ビーガンファナティック

回答:


23

わかりました、私はおそらくここで少し迅速に尋ねましたが、将来の参考のためにここに答えがあります:

FLACとALACの間でロスレス変換-acodec alacffmpeg行うには、フラグを渡す必要があります。

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


6
ここで何が起こっているのかを説明するには:.m4aは、MP4ファイル形式のAppleバリアントです。FFmpegおよびその他のほとんどのs / wは、mp4またはに出力するときにデフォルトでAACエンコーダーになるm4aため、エクスプレス-acodecオプションが必要です。
Gyan

2
一部のFLACファイルには、アルバムカバーのサムネイルが含まれています。追加-vcodec copyして、それらを新しいALACファイルに含めることができます。
Sean、

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"

代替:

これを1つのコマンドで機能させることができると思いましたが、などの特殊文字をエスケープしません[

それはとても有望に見えた...

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

2
ここでは、変換のためのワンライナーIの使用があります: for i in *.flac; do echo $i; ffmpeg -i "$i" -y -v 0 -vcodec copy -acodec alac "${i%.flac}".m4a && rm -f "$i"; done
ポール・リンドナー

@PaulLindnerこれは、再帰なしの単一のディレクトリに最適なオプションのように見えます。
CoolAJ86
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.