self-build によるマルチメディア環境の構築(MPlayer, FFmpeg 編)
[追記 2010/0919]現在では、self-build パッケージどうしの依存関係は、自動的に解決できるようになっています。例えば、self-build-ffmpeg の場合は、
$ sudo apt-get install self-build-setup $ sudo apt-get install self-build-ffmpeg
を実行だけで、おkです。
self-build-ffmpeg と self-build-ffmpeg-mh を upload する準備がようやくできました.週末にアップロードする予定です.
Vine Linux にもマルチメディア環境がだいぶ整ってきたと思います.まだ self-build-ffmpeg と self-build-ffmpeg-mh をアップロードしていませんが,実際に mplayer と ffmpeg, ffmpeg-mh をすべてフル装備でインストールするためには,現時点では以下のような手順となります.
# apt-get install self-build-setup # apt-get install self-build-xvidcore self-build-faac self-build-lame self-build-x264 self-build-libdca self-build-a52dec self-build-libdvdcss # apt-get install self-build-ffmpeg self-build-ffmpeg-mh self-build-mplayer self-build-mplayer-codecs
Vine Linux で携帯動画変換君!
比較的最新スナップショットの FFmpeg を提供する self-build-ffmpeg だけでなく,self-build-ffmpeg-mh というパッケージも作ってみました.
ffmpeg-mh は,Windows 用携帯動画変換君の Mobile Hack for UNIX というものです.self-build-ffmpeg-mh をインストールすると,携帯動画変換君のソースを取得して,ビルドし,ffmpeg-mh というバイナリを生成するようにしています.x264 については別途差分パッチが提供されていますが,要望があれば static でリンクしますので,とりあえず放置にしておきます.
追記 [2009/01/11]:self-build-ffmpeg-mh-0.33-6vl5 以降、別途 x264 を static ビルドしています([id:munepi:20090111:1231655397])。
Subversion を利用する self-build-ffmpeg
以下,self-build-ffmpeg を作るにあたってのメモを残します.
FFmpeg を self-build 化するためには,ソースをネット上から取ってこないといけないのです.
VLC のところ http://download.videolan.org/pub/videolan/vlc/0.8.5/contrib/ から取ってくるとなると,最新の ffmpeg-20060710.tar.bz2 でも良いんですが,ソース自体がもう 1 年半前なのとそのまま取ってくるのはあまり芸がないので,SVN から取ってくることにしました.
普通にソースを取ってくる self-build パッケージの場合は,spec の %post で単に
/usr/lib/rpm/self-build-rpm.sh %{name} %{pkgname}.spec "%{sourceurl}"
とするだけなのですが,今回 self-build-ffmpeg を作るにあたり,subversion を利用するので,%post で一工夫が必要でした.今の手元の spec では以下のようにしてあります.
%post # set locale case $LANG in ja*)LOCALE=ja ;; *) LOCALE=C ;; esac GetSrc_C(){ echo "Download source file with Subversion..." } GetSrc_ja(){ echo "Subversion を用いてソースファイルをダウンロードしています..." } # svn checkout ( set -e tmp=$(mktemp -d) trap cleanup EXIT cleanup() { set +e [ -z "$tmp" -o ! -d "$tmp" ] || rm -rf "$tmp" } unset CDPATH GetSrc_$LOCALE cd "$tmp" svn checkout -r {%{svndate}} svn://svn.mplayerhq.hu/%{pkgname}/trunk \ %{pkgname}-%{svndate} > /dev/null cd %{pkgname}-%{svndate} ./version.sh . find . -type d -name .svn -print0 | xargs -0r rm -rf #sed -i -e '/^\.PHONY: version\.h$/d' Makefile cd .. tar jcf %{pkgname}-%{svndate}.tar.bz2 %{pkgname}-%{svndate} %{__install} -m 644 %{pkgname}-%{svndate}.tar.bz2 %{_datadir}/%{name}/ cd - >/dev/null ) /usr/lib/rpm/self-build-rpm.sh %{name} %{pkgname}.spec
なので,self-build-ffmpeg をインストールすると,次のようなコンソールになります.
$ sudo rpm -Uvh rpm/RPMS/i386/self-build-ffmpeg-0.4.9-0.20080128vl1.i386.rpm 準備中... ########################################### [100%] 1:self-build-ffmpeg ########################################### [100%] Subversion を用いてソースファイルをダウンロードしています... rpm パッケージをビルド中... rpm パッケージのビルドが完了しました。
self-build パッケージ提供するがパッケージどうしの依存を apt-get により解決できない
今一つ問題が出てきました.ffmpeg は self-build-xvidcore self-build-faac self-build-lame self-build-x264 self-build-libdca self-build-a52dec のそれぞれの devel パッケージが必要(むしろ無いと,ffmpeg の有り難みがあまり無い)なのですが,今の self-build の仕組みだと,self-build-ffmpeg に上記の self-build たちを依存させても,ffmpeg をビルドするときに上記のそれぞれの devel がインストールされないんです.つまり,self-build-ffmpeg をインストールする前に,あらかじめ上記の self-build たちをインストールしている必要があるわけです.