[ロ] CentOS5.2 + ffmpeg でflv から 3gp に変換するで3gpは簡単に作成することができ、[ロ] Linuxで携帯動画をストリーミング再生対応で作成するでストリーミング再生をさせることはできた。
で、今度は3gpp2flvをやってみることにしました。モブログで携帯動画をflvでPCから表示させたいというのが動機。
今までのまま3gppをflvにコンバートすれば言いだけと思いきや難関が二つ発生。
1. オーディオコーデックがsamrというものになっており、それがサポートされていないという問題。
$ ffmpeg -i <in>.3gp -ar 44100 -f flv <out>.flv
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared --enable-pthreads --enable-gpl --disable-strip
libavutil version: 49.4.0
libavcodec version: 51.40.4
libavformat version: 51.12.1
built on Jun 4 2007 11:02:12, gcc: 4.1.1 20070105 (Red Hat 4.1.1-52)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20090123162119.3gp':
Duration: 00:00:04.3, start: 0.000000, bitrate: 150 kb/s
Stream #0.0(jpn): Video: mpeg4, yuv420p, 176x144, 30.00 fps(r)
Stream #0.1(jpn): Audio: samr / 0x726D6173, 8000 Hz, mono
Output #0, flv, to 'kkk3.flv':
Stream #0.0: Video: flv, yuv420p, 176x144, q=2-31, 200 kb/s, 30.00 fps(c)
Stream #0.1: Audio: mp3, 44100 Hz, mono, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Unsupported codec (id=73728) for input stream
ffmpegのメーリングリストを見ていたら、最新版で対応したのでSVNチェックアウトすべし。との情報をつかんだのでインストールしてみた。rpmのffmpegはそのままに、ひとまずPREFIXを「/usr/local/ffmpeg」にしてインストールすることにした。
$ sudo yum install amrnb-devel
$ sudo yum install amrwb-devel
$ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
$ sudo yum install faac-devel lame-devel xvidcore-devel <-- [2009/05/26追記]
$ cd ffmpeg
$ ./configure --enable-gpl --enable-libmp3lame --enable-libamr-nb --enable-libamr-wb --enable-libxvid --disable-ffplay --disable-ffserver --enable-libfaac --enable-shared --enable-nonfree --prefix=/usr/local/ffmpeg
$ make
$ sudo make install
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib
$ /usr/local/ffmpeg/bin/ffmpeg -i <in>.3gp -ar 44100 -f flv <out>.flv
[2009/05/26追記] のところは 26日にcheckout したリビジョン18938 で必要になった?もしくはCentOS 5.3 にバージョンアップしてたからか、別のマシンだったので入ってなかったか。。。不明ですが、必要だったので追記。
2. output buffer too small というエラー発生
できた!とおもったら下記エラー。うぅむ。
[libmp3lame @ 0x91976c0]lame: output buffer too small (buffer index: 9404, free bytes: 388)
Audio encoding failed
解決策発見。→同梱ffmpegのlameエンコードの不具合
感謝。すばらしいです。
こちらのパッチをあててコンパイルしなおしたところ完成!無事ドコモの3gppファイルからflvファイルを生成することができました。オーディオもきちんと再生できてる。
満足