【Ubuntu 10.04】vaapiとffmpeg更新

例によっておやくそく
◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆
ここで行う事は、Ubuntuの提供するパッケージ管理機能に重大な影響を与えます。
自分でセキュリティホールの対処、バージョン管理ができない場合は、クラックされたりする危険があります。また、ここに書かれた事を実施した結果、PCが再起不能に陥ったとしても、わしは一切の責任を負いません。

◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆

vaapiのソースのページを見ると、

  • [2010/07/13] libva
    VA API extensions for VDPAU and XvBA backends
  • [2010/07/13] xvba-video
    XvBA backend for VA API
  • [2010/07/13] mplayer-vaapi
    VA API support for MPlayer

と、昨日更新されたようなので、それぞれソースを取ってくる。

~$ cd ダウンロード
~/ダウンロード$ wget http://www.splitted-desktop.com/~gbeauchesne/libva/libva-latest.tar.gz http://www.splitted-desktop.com/~gbeauchesne/xvba-video/xvba-video_0.7.2-1_i386.deb http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2

ローカルソースディレクトリへ移動

~/ダウンロード$ cd ../src

一応前に入れたlibvaソースツリーを削除

~/src$ rm -rf libva-0.31.1

ソース展開

~/src$ tar xvzf ../ダウンロード/libva-latest.tar.gz

パッケージビルド

~/src$ cd libva-0.31.1
~/src/libva-0.31.1$ dpkg-buildpackage -rfakeroot -uc -b
~/src/libva-0.31.1$ cd ..

libva関係まとめてインストール

~/src$ sudo dpkg -i libva1_0.31.1-1+sds4_i386.deb libva-dev_0.31.1-1+sds4_i386.deb ../ダウンロード/xvba-video_0.7.2-1_i386.deb

Ubuntu 10.04でffmpegコンパイル」を見て、ffmpegの再構築。せっかくなので、野良ビルドしたものは全て最新ソースにする。

libvpxのコンパイル

~/src$ git clone git://review.webmproject.org/libvpx.git
~/src$ cd libvpx
~/src/libvpx$ ./configure
~/src/libvpx$ make
~/src/libvpx$ sudo make install
~/src/libvpx$ cd ..

libnutのコンパイル

~/src$ svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut
~/src$ cd libnut&&make
~/src/libnut$ sudo make install
~/src/libnut$ cd ..

libx264のコンパイル

~/src$ git clone git://git.videolan.org/x264.git
~/src/x264$ cd x264/
~/src/x264$ ./configure
~/src/x264$ make

gcc -o x264 x264.o input/timecode.o input/yuv.o input/y4m.o output/raw.o output/matroska.o output/matroska_ebml.o output/flv.o output/flv_bytestream.o input/thread.o input/lavf.o libx264.a -lm -lpthread -s -L.  -pthread -L/usr/local/lib -lavformat -lavcodec -ljack -lasound -ldc1394 -lraw1394 -lxvidcore -lx264 -lvpx -lvorbisenc -lvorbis -ltheoraenc -ltheoradec -logg -lspeex -lschroedinger-1.0 -lpthread -loil-0.3 -lrt -lopenjpeg -lopencore-amrwb -lopencore-amrnb -lnut -lmp3lame -lgsm -lfaac -ldirac_encoder -ldirac_decoder -lstdc++ -lva -lm -lbz2 -lz -lswscale -lavutil
/usr/local/lib/libvpx.a(extend.c.o): In function vp8_extend_mb_row':
(.text+0x10c): warning: memset used with constant zero length parameter; this could be due to transposed parameters
/usr/local/lib/libavcodec.a(libx264.o): In function
X264_init’:
libx264.c:(.text.unlikely+0x4f7): undefined reference to x264_encoder_open_100'
collect2: ld returned 1 exit status
make: *** [x264] エラー 1

む!?
libavcodec.a はffmpegのライブラリだが、ffmpegをコンパイルするには、x264のヘッダとライブラリが必要で、x264をリンクするには、ffmpegのlibavcodec.aが必要…。

いわゆる、「卵が先か鶏が先か」だな。

とりあえず、ffmpegのコンパイルに必要なファイルはできているので、手動でファイルコピー

~/src/x264$ sudo cp x264.h /usr/local/include
~/src/x264$ sudo cp libx264.a /usr/local/lib
~/src/x264$ sudo cp x264.pc /usr/local/lib/pkgconfig

x264は一旦放置で、ffmpegのコンパイル

~/src/x264$ cd ..
~/src$ svn co svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
~/src/ffmpeg$ cd ffmpeg
~/src/ffmpeg$ ./configure --enable-gpl --enable-nonfree --enable-pthreads --disable-debug --disable-ffserver --disable-ffplay --enable-libdirac --enable-libschroedinger --enable-libdc1394 --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-bzlib --enable-libopenjpeg --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libnut --enable-libspeex --enable-libvpx --enable-avfilter --enable-avfilter-lavf --enable-vaapi
~/src/ffmpeg$ make
~/src/ffmpeg$ sudo make install

ffmpegはできたので、x264のコンパイルを通す。

~/src/ffmpeg$ cd ../x264
~/src/x264$ make
~/src/x264$ sudo make install

mplayer-vaapiをコンパイル

~/src/ffmpeg$ cd ..
~/src$ tar xvjf ../ダウンロード/mplayer-vaapi-latest-FULL.tar.bz2
~/src$ cd mplayer-vaapi-20100713
~/src/mplayer-vaapi-20100713$ ./checkout-patch-build.sh
~/src/mplayer-vaapi-20100713$ cd mplayer-vaapi
~/src/mplayer-vaapi-20100713/mplayer-vaapi$ sudo make install

gstreamer-vaapiをコンパイル。ソースは前回展開済みなので、再設定とコンパイル。

~/src/mplayer-vaapi-20100713/mplayer-vaapi$ cd ../../gstreamer-vaapi-0.2.4
~/src/gstreamer-vaapi-0.2.4$ make distclaen
~/src/gstreamer-vaapi-0.2.4$ ./configure && make
~/src/gstreamer-vaapi-0.2.4$ make install

で、やっと終了(´・ ω・) もうウンザリ。
動画プレーヤーで再生テストすると、モザイク表示が直ってた。
とりあえず、良かった。

【Ubuntu 10.04】地雷だったVLC firefox plugin

firefoxで動画の再生に、動画プレーヤー(totem)では無く、VLCのプラグインを使おうと思い、mozilla-plugin-vlc のパッケージをインストール。

例によって、Big Buck BunnyのFull HD(1920×1024 H.264)を再生してみると、再生、音量コントロールが無く、再生画面のみなので、Synaptic パッケージマネージャでmozilla-plugin-vlcを「完全削除」。

再度、Big Buck Bunnyを再生してみると、画面がこんな感じに 🙁

mplayer で -va vaapi のオプション付けた時と同じ様な現象だが、これは動画プレーヤーで、設定しようが無い。

noizumi@purplecat:~/src/gstreamer-vaapi-0.2.4$ sudo make uninstall

とやると、一応再生できるようになったが、当然のごとく動画再生支援が効かなくなった。これは、vaapiレヴェルまで入れ直さないといかんのかな?

noizumi@purplecat:~/src$ sudo aptitude purge libva1 libva-dev xvba-video

さっくり削除。

noizumi@purplecat:~/src$ dpkg -i libva1_0.31.1-1+sds3_i386.deb libva-dev_0.31.1-1+sds3_i386.deb ../ダウンロード/xvba-video_0.7.1-1_i386.deb

そして、再びインストール。
gstreamer-vaapiを入れ直す。

noizumi@purplecat:~/src/gstreamer-vaapi-0.2.4$ make distclean
noizumi@purplecat:~/src/gstreamer-vaapi-0.2.4$ ./configure && make
noizumi@purplecat:~/src/gstreamer-vaapi-0.2.4$ sudo make install

ダメ 🙁
よし、ffmpegから入れ直すか。