ffmpeg

ffmpegを使いflvをmp4に変換しPSPで見る

ffmpegでYouTube等からダウンロードしたflvをPSPで見られるようmp4へ変換する。

数多くのオプションが用意されていて、様々な設定ができるようだけど、とりあえずflvからmp4へ変換するための最低限のオプションを指定。

ffmpeg -y -f mp4 -i /mnt/video/youtube.flv -s 480x272 -vcodec libx264 -b 768k -acodec libfaac -ab 128k -ar 48000 -coder 1 -level 21 -ac 2 youtube.mp4

コーデックの指定は以前は"h264"とか"aac"だったような気がするが、最近のffmpegは"libx264"とか"libfaac"と指定する必要があるらしい。
またビットレートの指定も以前はkbit単位だったような気がするが、bit単位での指定になったようで、-b 768 にしていると"値が小さすぎる"というメッセージが表示されるようになった。

また、ffmpegでスクリーンショットを抜き出すには

ffmpeg -y -i /mnt/video/youtube.flv -f image2 -ss 7 -vframes 1 -s 160x120 -an youtube.jpg

とした。
上で変換した動画と同じフォルダにコピーしておくと、動画選択一覧を表示している時このスクリーンショットが表示される。

ffmpegをコンパイル、インストール

YouTube等からダウンロードした動画をPSPで見られるようにしたいが、Ubuntuのレポジトリにあるffmpegをapt-getでインストールしてもlibx264がリンクされていないため、PSP用動画として変換できないようだ。
そこで、ffmpegをSVNからダウンロードしてコンパイル、インストールしてみた。

一応、Ubuntu 7.04と7.10で動作確認を行った。

まずはソースをダウンロード。

$ svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

configure。
liboggやlibvorbisやlibtheoraなどは必要なさそうだが、一応有効にしておいた。

$ cd ffmpeg
$ ./configure --prefix=/usr/local --disable-debug --enable-memalign-hack --enable-pp --enable-gpl --enable-pthreads --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libogg --disable-ffplay --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid

必要なら環境変数CFLAGSにGCCの最適化オプションを指定する。
Optimize Options - Using the GNU Compiler Collection (GCC)
i386 and x86-64 Options - Using the GNU Compiler Collection (GCC)

結果、以下のようにして実行。

$ CFLAGS="-O3 -march=nocona -fforce-addr -msse2 -pipe -mfpmath=sse -ffast-math" ./configure --prefix=/usr/local --disable-debug --enable-memalign-hack --enable-pp --enable-gpl --enable-pthreads --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libogg --disable-ffplay --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid

コンパイルに必要なヘッダーファイル等がない場合はエラーになるので、config.errを確認し、必要なパッケージをインストールする。
私の環境では以下のパッケージをインストールした。

$ sudo apt-get install libfaad2-dev
$ sudo apt-get install libmp4v2-dev
$ sudo apt-get install liba52-dev
$ sudo apt-get install libfaac-dev
$ sudo apt-get install liblame-dev
$ sudo apt-get install libogg-dev
$ sudo apt-get install libtheora-dev
$ sudo apt-get install libvorbis-dev
$ sudo apt-get install libx264-dev
$ sudo apt-get install libxvidcore4-dev

makeする。

$ make

バージョンの確認。

$ ./ffmpeg -version
FFmpeg version SVN-r10927, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --prefix=/usr/local --disable-debug --enable-memalign-hack --enable-pp --enable-gpl --enable-pthreads --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libogg --disable-ffplay --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
  libavutil version: 49.5.0
  libavcodec version: 51.47.2
  libavformat version: 51.17.1
  built on Nov  5 2007 16:22:30, gcc: 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
FFmpeg SVN-r10927
libavutil   3212544
libavcodec  3354370
libavformat 3346689
コンテンツの配信