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


21

次のコマンドを発行できます。

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に変換したい理由でもありません。

回答:


38

AACに変換するにはどうすればよいですか?

これは、Amp FFmpegが持つ最高品質を使用して入力を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


元のアプローチにはいくつかの問題がありました。

  • alacAACではありません。ALACはApple Lossless Audio Codecですが、AACはAdvanced Audio Codingです。

  • MP3とは対照的に、ALACは圧縮されたままですが、ロスレスである必要があるため、出力が入力よりも大きいのはこのためです。そのため、より多くのデータを保存する必要があります。

  • .aacALACオーディオの出力コンテナではありません。AACを使用する場合、それは機能するはずです。ただし、MP4またはM4Aを使用します。


Ubuntu 12.04ではオプションを使用できませんでしたが、-c:aこれには同義語がありますか?私はそれが意味するかもしれないと思いますが-acodec:a、最終的に私はそれをドロップffmpegし、目的の出力ファイル名に基づいてコーデックを推測することができました。(-strict experimentalただし、-map_metadata 0:0ID3タグを保持するために、適切な手段を講じてください。)
tripleee

また、注目に値する:ffmpegサポートされていないように見えるM4Bファイル(オーディオブック)が必要でしたが、M4Aに変換してから名前を変更するだけで機能するようです。
トリプリー

@tripleeeこれは、という古いプログラムを使用していることを意味しますがffmpeg、実際にはFFmpegからではなく、Libavフォークからのものです。残念ながら、Ubuntuは「本当の」ffmpegの代わりにそれをバンドルしました。参照:ffmpeg、libav、avconvの違いと関係を教えてくれる人は誰ですか
slhck

@slhck:迅速な更新とリンクをありがとう!
トリプリー

1
@tripleee実際、いいえ。を追加して、FFmpegにADTS形式での出力を強制することもできます-f adts
ビュグニーク

4

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


2
libfaac3.2からサポートも削除されました。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.