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