私はこのコマンドを発行できます:
ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a
m4aファイルを作成します。
しかし、このコマンドを発行すると
ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac
ffmpegはエラーをスローして言っています
出力ファイル#0のヘッダーを書き込めませんでした(コーデックパラメーターが正しくありません)。
また、m4aファイルのサイズは元のファイルの約5.8倍です。これは、私が望んでいたことではなく、AACに変換したかった理由です。
これは、FFmpegが持つ最高品質のAACを使用して入力をAACオーディオに変換する最も基本的なFFmpegコマンドです。 libfdk_aac
はフラウンホーファーAACエンコーダーで、FFmpegをサポートしてコンパイルした場合に使用できます。
ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a
品質を変更するには、2つのオプションがあります。
可変ビットレート(VBR)の場合は、-vbr
オプションを使用します。たとえば、-vbr 4
は適切な選択です(ステレオオーディオでは約128 kBit/s)。高いほど良いということです。値の範囲は1〜5です。
ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
固定ビットレート(CBR)の場合、-b:a
オプション(-b:a 128k
など)を使用します。ほとんどの場合、128 kBit/sで十分です。より低い値を選択することもできます。
ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
デフォルトのAAC-LC(低複雑度)プロファイルの代わりにHE-AAC(v1/v2)を使用することもできます。これは低ビットレートに最適です。
ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a
libfdk_aac
がない場合はどうなりますか?FFmpegの一部のバージョンにはlibfdk_aac
がありません(ライセンス上の理由から)。その場合は、組み込みのAACエンコーダーを使用できます。
ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a
このエンコーダーはVBRを適切にサポートしていないため、それまたはHE-AACが必要な場合は、以下をお読みください。
Ffmpegを自分でコンパイルして、libfdk_aac
サポートを追加できます。ガイドがあります FFmpeg Wikiに 。コンパイルはLinuxでは簡単、OS Xではやや簡単、Windowsではやや難しい。コンパイルガイドに従って適切なライブラリをインストールする前に、FFmpegはlibfdk_aac
を使用するオプションを提供します。
あなたの元のアプローチにはいくつかの問題がありました:
alac
はAACではありません。 ALACは Apple Lossless Audio Codec ですが、AACは Advanced Audio Coding です。
MP3とは対照的に、ALACは依然として圧縮されているため、出力が入力よりも大きいのはそのためです。ただし、ALACはロスレスである必要があります。そのため、より多くのデータを保存する必要があります。
.aac
はALACオーディオの出力コンテナではありません。 AACを使用している場合は、これでうまくいくはずです。私はMP4またはM4Aを使用します。
Zeranoe Windowsビルド用のAACへの簡単な変換
ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a
Libfaacまたはlibfdk_aacの代わりに「aac」を使用します: https://trac.ffmpeg.org/wiki/Encode/AAC
"FFmpegは3つのAAC-LCエンコーダー(aac、libfaac、libfdk_aac)と1つのHE-AAC(v1/2)エンコーダー(libfdk_aac)をサポートできます。libfaacとlibfdk_aacのライセンスはGPLと互換性がありません、したがって、GPLは、GPLライセンスコードも含まれている場合、これらのライセンスに基づいてライセンスされたコードを含むバイナリの配布を許可しません。 "