flv ファイル変換 †flv ファイルとは,Flash Video で使用されている動画のファイル形式です. flv ファイルの入手法 †とにかく,何らかの方法で変換元となる flv ファイルを入手します. FFmpeg †FFmpeg とは,動画ファイルの変換ツールです. Linux の場合は,ディストリビューション本体には含まれずに有志によるバイナリが提供されている場合が多いようです. 例えば debian では, deb http://www.debian-multimedia.org (リリース名: etch など) main の行を /etc/apt/sources.list に追加し,apt-get や aptitude でインストールできます. Windows の場合も一時配布元からのバイナリ提供がないので,ffmpeg を利用しているツールから抜き出して使うと良いでしょう. 携帯動画変換君などに同梱されているそうです. なお,FFmpeg には mp3, mpeg2, ac3 など特許権が設定されている codec が内蔵されています. 業(事業)として配布する際にはこれらのライセンスを処理する必要があると思われます. また,FFmpeg 自体のライセンスは LGPL (コンパイルオプションによっては GPL)なので,バイナリ配布に際してはソースコードの開示が必要です. FFmpeg コマンドラインオプション †主なものはここらへんを参照のこと. UNIX ユーザの場合
ということに注意しましょう. UNIX コマンドの慣習とは違うので,入力ファイルを上書きしてしまいそうになってしまうことがあります. flv ファイル形式 †動画ファイルなので,動画像と音声が含まれているはずです. 入手した flv ファイルを foo.flv として ffmpeg -i foo.flv と実行してみましょう. Windows の場合はコマンドプロンプト(CMD.EXE)上で実行します. ffmpeg.exe ファイルをダブルクリックしてもダメなので注意. で,実行すると,以下のような出力が得られます. $ ffmpeg -i foo.flv FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuration: --prefix=/usr --libdir=${prefix}/lib --shlibdir=${prefix}/lib --incdir=${prefix}/include/ffmpeg --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaad --mandir=${prefix}/share/man --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-pp --enable-libamr-nb --enable-libamr-wb --enable-x11grab --enable-libogg --enable-libgsm --enable-libx264 --enable-liba52 --enable-libtheora --extra-cflags=-Wall -g -fPIC -DPIC --cc=ccache cc --enable-swscaler libavutil version: 49.5.0 libavcodec version: 51.44.0 libavformat version: 51.13.3 built on Sep 17 2007 15:29:56, gcc: 4.2.1 (Debian 4.2.1-5) Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.92 (359/12) Input #0, flv, from 'foo.flv': Duration: 00:03:49.4, start: 0.000000, bitrate: 128 kb/s Stream #0.0: Video: vp6f, yuv420p, 512x384, 29.92 fps(r) Stream #0.1: Audio: mp3, 44100 Hz, stereo, 128 kb/s Must supply at least one output file $ 最初の方の --enable-なんちゃら…の部分は,FFmpeg をコンパイルしたときの設定なので,無視して構いません. Input #0, flv, from 'foo.flv': Duration: 00:03:49.4, start: 0.000000, bitrate: 128 kb/s Stream #0.0: Video: vp6f, yuv420p, 512x384, 29.92 fps(r) Stream #0.1: Audio: mp3, 44100 Hz, stereo, 128 kb/s の部分に注目してみましょう. 動画像としては vp6f 形式,音声としては mp3 形式で格納されていることがわかります. つまり,ファイルの構造はこのようになっているようです. +- flv ファイル ------+ |+-動画像-+ +-音声---+| ||vp6f形式| |mp3 形式|| |+--------+ +--------+| +---------------------+ 音声を抜き出し mp3 プレーヤで楽しみたい †前置きはこのぐらいにして,実践に移りましょう. まずは
という場合. 変換元ファイルを foo.flv,出力ファイルを foo.mp3 とすると ffmpeg -i foo.flv -vn -acodec copy foo.mp3 で,mp3 オーディオファイルに変換できます. 引数の説明をすると
となります. ここで注意するのは
のところです. 再エンコード処理をしていないので
DVD-Video ディスクを作りたい †DVD-R に焼いて DVD プレーヤで再生したい場合. ffmpeg -i foo.flv -target ntsc-dvd foo.mpg 新しく出てきた引数ですが
です. この場合は,
の MPEG2 ファイルに変換されるので,再エンコードがかかります. 気がついた点としては,まず,MPEG2 video のエンコードは FFmpeg ではあまり凝ったエンコードはしないようです (I frame と P frame のみ使用). あと,古いオーサリングツール(.mpg ファイルを .vob に変換するプログラム)の場合,AC3 音声に対応していない場合があります. 注意. 本日のツッコミ † |