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形式で、FirefoxでGreasemonkeyアドオンを入れ、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