2015年11月21日土曜日

HandBrakeCLI 0.10.2 をCentOS5向けにビルドする

まだlinux版ではQSVも使えませんし、こんな間抜けなことをするのは世界中でもわずかでしょうから一応メモ。もっとも、QSVはh264。Windows10で視聴するならh265でしょう!!

ってことで。

200x年代にエンコードしたタモリ倶楽部をもっと圧縮すべく、HandBrakeさんにお願いするとしましょう。
CentOS5ではFFmpegやらmencoderはしがらみが多すぎて最新版にするのが面倒くさいという事情もあります。FFmpeg vs libavの抗争に巻き込まれるのも面倒ですしね。

早速、HandBrake-0.10.2.tar.bz2を展開したら
./configure
すると./buildに入ってmakeしろという指示が出るのでmakeします。

すると、libdvdreadやlibdvdnavなどでコンパイルに失敗します。
CentOS5のautomakeが古いためで、この場合、configure.acでエラーが発生している場合、以下の4パターンが起きます。
  • aclocal -Im4 オプションなんか知らねえよと怒られる。
     -> configure.ac中に
           ACLOCAL_AMFLAGS = -Im4
        という行があるので -I m4 というようにホワイトスペースを挿入する。
  • AM_PROG_CC_C_Oが未定義と怒られる
     ->configure.acの適当なところにAM_PROG_CC_C_Oを追記。
    ま、要するに最近のautomakeでは廃止されるマクロを使わないでくれという要請に従っているプログラムがエラーになるので、廃止されるマクロをいちいち追記するということです。
  • AC_PROG_LIBTOOLが未定義と怒られる。
     ->configure.acの適当なところにAC_PROG_LIBTOOLを追記。
  • AS_CASEがどうたらと怒られる。
     ->configure.acのAS_CASEの行はlinuxとは関係ないので丸ごとコメントアウトしてしまう。
また、Makefile.amで docdir未定義、と怒られたら、
dist_doc_DATA = AUTHORS ChangeLog COPYING README TODO
という行があるのでコメントアウトしちゃっていいです。
我ながら乱暴ですが、まるで問題ありませんのでご安心ください。

ちょいちょい上記のようなエラーで止まりますが、コンパイルそのものはgcc4.1.2でも通ります。有難いことです。

但し、期待されているライブラリやファイルがなければ当然ヘッダがねーよとかライブラリがねーよ、というエラーは出ます。
私の場合は以下を追加で入れました。
baseリポジトリになければrpmforgeにあります。

libass-devel
libx264-devel
lame-devel
libogg-devel
libvorbis-devel
libsamplerate-devel と libsamplerate
fribidi-devel と fribidi
bzip2-devel
intltool
perl-Compress-Zlib
perl-HTML-Parser
perl-HTML-Tagset
perl-XML-Parser
perl-libwww-perl

まあ、ヘッダがないとかライブラリがないとか言い出したら適当にrpmを見繕って突っ込めばいいです。パッケージャの皆さんありがとう!!

但し、libtheora-develだけは残念ですが利用できません。
CentOS5向けのパッケージは古いのでヘッダもライブラリも足りないからmakeが通りません。
古いlibtheoraはgnomeやmencoderが依存しまくっているので消さずに残し、別途ビルドして/usr/localに突っ込みます。

今回はlibtheora-1.1.1.tar.bz2を利用しましたが、ビルド方法は、これまたありがたいことに./configureを実行後、make installするだけです。
defaultで/usr/local配下に展開してくれるようになっています。

あ、LD_LIBRARY_PATHはお忘れなく。DLLがないよ、と怒られますからね。

最後に
No package 'gtk+-3.0' found
No package 'gio-2.0' found
No package 'libnotify' found
No package 'dbus-glib-1' found
No package 'gudev-1.0' found
というエラーで止ってしまった場合ですが、GUI版がほしい人は要求に従ってください。
今回はHandBrakeCLI自体はできているので無視して終了です。
お疲れ様でした。

早速、以前にmencoderでオリジナルtsの1/3程度にmpeg4でエンコード済みのファイルを早速h265で再エンコードしてあげると・・・さすがにIntel(R) Celeron(R) CPU G1820 @ 2.70GHzでは4~5時間かかります。

同一ファイルを同一オプションでCore-i7機で処理すると3~40分です。
但しCPU温度は90度を越えます。G1820のほうは26度程度です(設置場所が違うとか諸条件がまるで違うのですが)。

そして、出来上がってみると音声がずれています。
オプションに音声をコピーするよう指示してあってもです。

ここからがHandBrakeの楽なところですよね。コマンドラインに--cfrを指定してあげるだけで固定ビットレートになるので音声がずれなくなります。

-q 28 の場合、実に 205 MB までスリムになりました( -q 20 の場合は 622 MB でした)。

すげえ...

これでタモリが100歳超えても大丈夫。
長生きしてくださいね!!

私が先にくたばること請け合いですが。

*** ご参考 ***
変換元ファイルを作成した時のmencoderのオプションは以下でした。
-demuxer lavf \
  -vf harddup,crop=0:0:0:0,scale=1440:-2 \
  -sws 9 \
  -ovc lavc \
  -lavcopts \
vcodec=mpeg4:vbitrate=6000:vmax_b_frames=0:vme=4:mbd=1:autoaspect:dia=1:vb_strategy=0:predia=1:last_pred=0 \
  -af volnorm=1 \
  -oac mp3lame \
  -lameopts aq=5:cbr:br=192

変換先を作成するHandBrakeのオプションは以下でした。
-e x265 --h265-profile main --modulus 2 -q 28 --cfr --aencoder copy

0 件のコメント:

コメントを投稿