今回のお題は、
Youtube でおなじみの FLVフォーマット( Flush Video )から音声を抽出して、mp3ファイルに出力する方法である。
変換コマンドは意外なほどに簡単。
$ ffmpeg -i InputFile.flv Output.mp3
デフォルトのサンプリングレートは 64K だが、気になる場合は適当に指定することもできる。
$ ffmpeg -i InputFile.flv -ab 128K Output.mp3
ところが、ffmpge によるmp3変換には意外な落とし穴がある。
筆者はちょっとだけハマってしまった(^^;)。要点は以下の通り。
----------------------------------------------------
- ffmpeg はコンパイル時にオプションが必要
( ./configure --enable-libmp3lame )
- lame は ver 3.99 が必要
----------------------------------------------------
【ffmpeg は再コンパイルが必要】
普通にコンパイルしたffmpegだと何故かエラーになる。
$ ffmpeg -i InputFile.flv Output.mp3
・・・・中略・・・
> Encoder (codec id 86017) not found for output stream #0.0
ご存じの通り、ffmpeg は lame のライブラリを使ってmp3エンコードをするのだが、必要な libmp3lame は既にインストールされているのにもかかわらず「エンコーダが無い」とはどういうことか(*_*)。
小一時間調べてみた結果、ffmpeg から libmp3lame を使うには、コンパイル時にオプションを指定しておかねばならないことが判明。
$./configure --enable-libmp3lame
ということで、気をとり直して再コンパイルした。
だが、またしても落とし穴があった(;_;)。
【Lame は Ver3.99が必要】
ffmpeg の再コンパイルが終わり、再度チャレンジ。。
今度はmp3変換が順調に進むのだが、変換の最後の最後でエラー(;_;)。
$ ffmpeg -i InputFile.flv Output.mp3
・・・・中略・・・
> output buffer too small
バッファが足りない(?_?)、なんじゃこりゃ?
困ったときの Google 先生。とりあえずググッて見ると、以下のブログ記事を発見。
どうやら 筆者が使っていたバージョンのlame ( ver 2.98 )にはバグがあったらしい。。。
というわけで、毎度お馴染みの SourceForge から新しい lame を拾ってきてインストールし直した。最新バージョンは 3.99である。
というわけで、再度 flv --> mp3 変換を試みる。。
やった(^_^)v 無事成功である!!
これで youtubeからダウンロードした音楽をmp3プレーヤで聴ける(^^;)。
---------------------------------------------------------
$ ffmpeg -i InputFile.flv Output.mp3
Output #0, mp3, to 'Output.mp3':
Metadata:
TSSE : Lavf52.64.2
Stream #0.0: Audio: libmp3lame, 22050 Hz, stereo, s16, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
size= 6830kB time=874.21 bitrate= 64.0kbits/s
video:0kB audio:6830kB global headers:0kB muxing overhead 0.000472%
$
---------------------------------------------------------
Youtube でおなじみの FLVフォーマット( Flush Video )から音声を抽出して、mp3ファイルに出力する方法である。
変換コマンドは意外なほどに簡単。
$ ffmpeg -i InputFile.flv Output.mp3
デフォルトのサンプリングレートは 64K だが、気になる場合は適当に指定することもできる。
$ ffmpeg -i InputFile.flv -ab 128K Output.mp3
ところが、ffmpge によるmp3変換には意外な落とし穴がある。
筆者はちょっとだけハマってしまった(^^;)。要点は以下の通り。
----------------------------------------------------
- ffmpeg はコンパイル時にオプションが必要
( ./configure --enable-libmp3lame )
- lame は ver 3.99 が必要
----------------------------------------------------
【ffmpeg は再コンパイルが必要】
普通にコンパイルしたffmpegだと何故かエラーになる。
$ ffmpeg -i InputFile.flv Output.mp3
・・・・中略・・・
> Encoder (codec id 86017) not found for output stream #0.0
ご存じの通り、ffmpeg は lame のライブラリを使ってmp3エンコードをするのだが、必要な libmp3lame は既にインストールされているのにもかかわらず「エンコーダが無い」とはどういうことか(*_*)。
小一時間調べてみた結果、ffmpeg から libmp3lame を使うには、コンパイル時にオプションを指定しておかねばならないことが判明。
$./configure --enable-libmp3lame
ということで、気をとり直して再コンパイルした。
だが、またしても落とし穴があった(;_;)。
【Lame は Ver3.99が必要】
ffmpeg の再コンパイルが終わり、再度チャレンジ。。
今度はmp3変換が順調に進むのだが、変換の最後の最後でエラー(;_;)。
$ ffmpeg -i InputFile.flv Output.mp3
・・・・中略・・・
> output buffer too small
バッファが足りない(?_?)、なんじゃこりゃ?
困ったときの Google 先生。とりあえずググッて見ると、以下のブログ記事を発見。
どうやら 筆者が使っていたバージョンのlame ( ver 2.98 )にはバグがあったらしい。。。
というわけで、毎度お馴染みの SourceForge から新しい lame を拾ってきてインストールし直した。最新バージョンは 3.99である。
というわけで、再度 flv --> mp3 変換を試みる。。
やった(^_^)v 無事成功である!!
これで youtubeからダウンロードした音楽をmp3プレーヤで聴ける(^^;)。
---------------------------------------------------------
$ ffmpeg -i InputFile.flv Output.mp3
Output #0, mp3, to 'Output.mp3':
Metadata:
TSSE : Lavf52.64.2
Stream #0.0: Audio: libmp3lame, 22050 Hz, stereo, s16, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
size= 6830kB time=874.21 bitrate= 64.0kbits/s
video:0kB audio:6830kB global headers:0kB muxing overhead 0.000472%
$
---------------------------------------------------------