flv/mp4ファイルから音声のみ劣化無しに抽出

最近は、仕事で必要にせまられ、Macを使ってる時間が増えてきてます。ちょっとテスト用にYoutubeの動画から音(mpeg4 audio)を取り出したくて調べたので、メモを残す。

環境は、基本 Mac OS X 10.6 (Snow Leopard)の、ターミナルです。GUIソフトは除外。
コマンドラインツールとして、ffmpegとmp4boxを利用する。Mac OSXでコンパイルされたものとして
こちらに用意されたものを使用した。http://www.tkn.tu-berlin.de/research/evalvid/

最近のYouTubeの動画は、基本flv,mp4形式で、FirefoxGreasemonkeyアドオンを入れ、YouTube Video Downloadスクリプトを使えば、簡単にローカルに保存できる。

このダウンロードされた動画から、音声を劣化無しに抽出する。最近のYouTubeの動画は、flvやmp4に分かれるが、中身はVideo:h264, Audio:aacという形式になってるようだ。なぜか、パック形式がflvとmp4と2つあるのかはブラウザ対応の関係だろうか。この中で、音声のみを取り出して、mpeg4 audio (m4a)にする。

第一段階:音声部 aac を劣化無しに抜き出す

ffmepg -i [INPUT flv/mp4] -vn -acodec copy [OUTPUT aac]

第二段階:抜き出した aacファイルを Mpeg4 Audio形式にパックする

mp4box -add [INPUT aac] [OUTPUT m4a]

例)test.flv から test.m4a を抜き出す。

% ffmpeg -i test.flv -vn -acodec copy test.aac
% mp4box -add test.aac test.m4a

となる。

動画ファイルにどのような形式で保存されているかは、ffmpegで読み込めばわかる。

% ffmpeg -i [INPUT flv/mp4]
 ---(省略)---
  Duration: 00:05:36.30, start: 0.000000, bitrate: 1113 kb/s
    Stream #0.0: Video: h264, yuv420p, 852x480 [PAR 1:1 DAR 71:40], 1014 kb/s, 29.92 tbr, 1k tbn, 59.94 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16, 98 kb/s

(補足)GUIツール
FLV Extract (Win) http://moitah.net/
iExtractMP3(OSX) http://www.fraction.jp/log/archives/2008/01/18/FLVMP3Extractor