web-dev-qa-db-ja.com

MP3をAACに変換するFFmpegコマンド

私はこのコマンドを発行できます:

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に変換したかった理由です。

24
Soham Dasgupta

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を使用します。

40
slhck

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ライセンスコードも含まれている場合、これらのライセンスに基づいてライセンスされたコードを含むバイナリの配布を許可しません。 "

5
SaltySub2