M4A WAV FFmpeg AudacityでM4Aが読めない?
(FFmpegのDLL)

AudacityでM4Aファイルを開こうとしたら、エラーが出て読み込めませんでした。
調べてみると、FFmpegというライブラリをインストールする必要があるとのこと。

<svg class="eyecatch-svg" viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg">
  <!-- 背景 -->
  <rect width="192" height="192" fill="white" rx="32" ry="32" />
  
  <!-- 左側:圧縮ファイル(M4A/MP3) -->
  <g transform="translate(30, 60)">
    <!-- ファイルアイコン -->
    <path d="M 0 0 L 30 0 L 40 10 L 40 50 L 0 50 Z" fill="#E0E0E0" stroke="#607D8B" stroke-width="2" stroke-linejoin="round" />
    <path d="M 30 0 L 30 10 L 40 10" fill="none" stroke="#607D8B" stroke-width="2" stroke-linejoin="round" />
    
    <!-- 圧縮を表す線(小さい波形) -->
    <path d="M 10 20 L 15 18 L 20 22 L 25 20 L 30 22" fill="none" stroke="#FF9800" stroke-width="3" stroke-linecap="round" />
    <path d="M 10 30 L 15 28 L 20 32 L 25 30 L 30 32" fill="none" stroke="#FF9800" stroke-width="3" stroke-linecap="round" />
    
    <!-- M4A ラベル -->
    <text x="20" y="45" font-family="Arial, sans-serif" font-size="8" font-weight="bold" fill="#607D8B" text-anchor="middle">M4A</text>
  </g>
  
  <!-- 中央:双方向矢印(変換プロセス) -->
  <g transform="translate(96, 85)">
    <!-- 右向き矢印 -->
    <path d="M -20 -8 L 10 -8 L 10 -15 L 20 0 L 10 15 L 10 8 L -20 8" fill="#2196F3" stroke="none" />
    <!-- 左向き矢印 -->
    <path d="M 20 -8 L -10 -8 L -10 -15 L -20 0 L -10 15 L -10 8 L 20 8" fill="#9E9E9E" stroke="none" />
  </g>
  
  <!-- 右側:非圧縮データ(WAV波形) -->
  <g transform="translate(122, 60)">
    <!-- ファイルアイコン -->
    <path d="M 0 0 L 30 0 L 40 10 L 40 50 L 0 50 Z" fill="#E0E0E0" stroke="#607D8B" stroke-width="2" stroke-linejoin="round" />
    <path d="M 30 0 L 30 10 L 40 10" fill="none" stroke="#607D8B" stroke-width="2" stroke-linejoin="round" />
    
    <!-- 非圧縮を表す波形(大きい波形) -->
    <path d="M 8 25 L 10 15 L 13 35 L 16 18 L 19 32 L 22 20 L 25 30 L 28 22 L 32 25" fill="none" stroke="#4CAF50" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" />
    
    <!-- WAV ラベル -->
    <text x="20" y="45" font-family="Arial, sans-serif" font-size="8" font-weight="bold" fill="#607D8B" text-anchor="middle">WAV</text>
  </g>
  
  <!-- 下部:FFmpeg DLL表現 -->
  <g transform="translate(96, 130)">
    <!-- 歯車アイコン(小) -->
    <circle cx="0" cy="0" r="10" fill="#9C27B0" stroke="none" />
    <circle cx="0" cy="0" r="6" fill="white" stroke="none" />
    <rect x="-2" y="-14" width="4" height="4" fill="#9C27B0" rx="1" />
    <rect x="-2" y="10" width="4" height="4" fill="#9C27B0" rx="1" />
    <rect x="-14" y="-2" width="4" height="4" fill="#9C27B0" rx="1" />
    <rect x="10" y="-2" width="4" height="4" fill="#9C27B0" rx="1" />
    
    <!-- DLL テキスト -->
    <text x="0" y="22" font-family="Arial, sans-serif" font-size="10" font-weight="bold" fill="#9C27B0" text-anchor="middle">FFmpeg</text>
  </g>
</svg>AudacityでM4Aが読めない?<br class="chiilabo-br is-on">(FFmpegのDLL)

ふと疑問が湧きました。「このFFmpegのインストールって、一体何をしているんだろう?」

関連記事

1. FFmpegインストールで追加されるファイル

「FFmpeg for Audacity」をインストールすると、ソフトではなくDLLが追加されます。

DLL(Dynamic Link Library)は、複数のプログラムで共有できる部品のようなものです。
Audacity本体に機能を組み込むのではなく、外部のライブラリとして用意することで、必要な人だけがインストールできます。

もしFFmpegのDLLファイルを削除してしまうと、M4Aなどのファイルは再び読み込めなくなります。

実際に追加されるのは、主に3つのDLLファイルです。

FFmpegインストールで追加されるファイル C:\Program Files\FFmpeg For Audacity\ avformat -60.dll ファイル形式 解析 構造を読み取る avcodec -60.dll 圧縮データ 変換 エンコード/デコード avutil -58.dll 補助処理 ユーティリティ機能 容量: 約27.5MB
  • avformat-60.dll – 音声や動画のファイル形式を解析する
  • avcodec-60.dll – 圧縮データの変換(エンコード/デコード)を担当
  • avutil-58.dll – 補助的な処理を行う

これらのファイルは、Audacity本体とは別の場所に保存されます。
Audacityは必要なときにこれらのDLLを参照して使う仕組みなんですね。

2. 圧縮ファイルは直接編集できない

ここで重要な事実に気づきました。
M4AやMP3のような圧縮形式は、そのままでは編集できないんです。

圧縮ファイルは直接編集できない M4A 圧縮済 デコード WAV 非圧縮 編集作業 エンコード M4A 圧縮保存 圧縮形式のまま編集は不可能 必ず非圧縮に展開してから編集する

音量を調整したり、一部をカットしたりするには、波形データのサンプル一つひとつに対して操作する必要があります。圧縮データのままでは、この操作ができません。

圧縮ファイルは、人間の耳に聞こえにくい部分のデータを削除したり、数式的に圧縮したりして小さくしています。つまり、音声の波形データそのものではなく、「圧縮された情報」として保存されているわけです。

2.1. 実際の処理の流れ

Audacityで圧縮ファイルを扱うときは、こんな流れで処理されています。

2.1. 実際の処理の流れ
M4A(圧縮) → デコード → WAV(非圧縮) → 編集 → エンコード → M4A(圧縮)
  1. ファイルを開くとき:FFmpegが圧縮データをWAV形式に展開
  2. 編集中:展開された非圧縮データに対してAudacityが処理
  3. 保存するとき:FFmpegがWAVデータを圧縮形式に変換

つまりFFmpegは、入口と出口でだけ働く「翻訳者」のような役割なんですね。

2.2. メモリ使用量が増える理由

FFmpegのDLLファイルが実際に働くのは次のタイミングです。

  1. avformat-60.dllがファイルの構造を解析
  2. avcodec-60.dllが圧縮データをデコード
  3. 非圧縮のWAVデータとしてメモリに展開

編集作業中は、FFmpegのDLLは使われません。すでに展開された非圧縮データに対して、Audacity本体が処理を行っています。

ここで気になったのが、メモリの使用量です。
圧縮ファイルを開くと、パソコンの動作が重くなることがあります。

例えば、10MBのM4Aファイルを開いた場合を考えてみましょう。

  • 元のM4Aファイル:10MB(圧縮済み)
  • メモリ上のWAVデータ:約100MB以上

なんと10倍以上です。これは、ステレオ音声、44.1kHz、16bitという一般的な音質の場合、1分間の音声が非圧縮で約10MBになるためです。10分の曲なら100MB、1時間なら600MB以上になります。

長時間の音声ファイルを編集するときは、元のファイルサイズの10倍以上のメモリやディスク容量が必要になる可能性があるわけです。

3. MP3の場合はどうなる?

MP3も基本的な構造は同じです。ただし、使われるライブラリが少し違います。

MP3の場合、FFmpegだけでなく、LAMEという専用のライブラリが使われることもあります。

  • LAME(lame_enc.dll) – MP3のエンコード用
  • libmp3lame – デコード用(FFmpegに含まれることもある)

Audacityのバージョンや設定によって、どちらのライブラリを使うかが変わります。でも、「圧縮⇔非圧縮の変換時にライブラリが働く」という基本的な仕組みは、M4AでもMP3でも同じです。

4. わかったこと

今回の調査で、いくつかの重要なことがわかりました。

まず、AudacityでM4AやMP3を扱えるのは、FFmpegという外部ライブラリのおかげだということ。これらのDLLファイルは、Audacity本体とは別に保存され、必要なときに参照される仕組みになっています。

そして、圧縮ファイルは直接編集できず、必ず一度非圧縮形式に展開する必要があること。このため、小さなファイルでもメモリ使用量は大きくなります。

最後に、FFmpegが働くのは入出力のタイミングだけで、編集中はAudacity本体が処理を担当していること。

何気なく使っていた機能の裏側には、こんな仕組みがあったんですね。エラーメッセージに従ってインストールするだけでなく、その背景を知ると、より適切な使い方ができるようになる気がします。