試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

一度動画のコンテナ形式に入れた音声を無劣化で取り出す

音声入りの動画ファイルから音声部分だけをエンコードせずに抜き出すのにffmpegが役に立つことがある。

  • -vnオプションを付けて「映像部分は用いない(作成しない)」ことを示す
  • -acodec copyオプションを付けると、動画のコンテナ形式からそのままの音声データを取り出して書き出す

以下は例。

(音声にMP3を用いた.flvファイルから音声を取り出して.mp3ファイルに書き出す)
$ ffmpeg -vn -i [.flvファイルの場所] -acodec copy [出力する.mp3ファイルの場所]

(音声にOgg Vorbisを用いた.ogvファイルから音声を取り出して.oggファイルに書き出す)
$ ffmpeg -vn -i [.ogvファイルの場所] -acodec copy [出力する.oggファイルの場所]

(音声にAACを用いた.mp4ファイルから音声を取り出して.aacファイルに書き出す)
$ ffmpeg -vn -i [.mp4ファイルの場所] -acodec copy [出力する.aacファイルの場所]

対象のコーデックが手元のffmpegによりサポートされていれば、これ以外のパターンでも使える。
.mp4ファイルからの音声の取り出しはGPACのMP4Boxを用いて

$ MP4Box -raw [オーディオのトラック番号] [.mp4ファイルの場所]

のようにしても取り出せて、取り出したファイルは.mp4ファイルのあるディレクトリに書き出される。トラック番号は

$ MP4Box -info [.mp4ファイルの場所]

の出力から確認できる。なお、手元で(AACオーディオを含む.mp4ファイルで)試してみたところ、ffmpegで取り出したものとMP4Boxで取り出したものは無事に同一のものとなった(両方とも正しく動作することが確認できた)。

使用したバージョン: