« Air VideoのバージョンアップでVideo出力が復活! | メイン | Ubuntu/Macで動画の詳細をMediaInfoで調べてHandBrakeするメモ »

Ubuntu/MacでHandBrake SVN版を使ってみるメモ

動画の変換ソフトHandBrake、お手軽に使えて重宝しているのですが、正式版のリリースペースが多少遅いのでSVN版(開発版)を使ってみることに。自分でビルドするのは大変なので入手先のメモと印象、エンコードに使っているMakefile等をメモ。

まずは入手先。 

後者の方は"sudo add-apt-repository ppa:stebbins/handbrake-snapshots"で追加

インストールしたバージョンはSVN 3552。丁度x264の最新のstable版が取り込まれたようなので使ってみることに。 

最初の印象はx264が高速化しているところ。特にフィルタやパラメータが少ない場合(2パスのターボ[-T])の速度アップが顕著です。定量的ではありませんが3-50%位高速な感じです。2パス目は10-20%UP程度でしょうか。またpreviewが設定出来たり、開始位置、終了位置をチャプターではなく時間で指定できるようになっていたり便利になっています。

特に便利と感じたのは新たに追加されている"--main-feature"オプションで自動でメインのタイトルを選択出来るようになっています。これは複数のタイトルを通常の使い方をしておらず普通にリップするとおかしくなったりするようなソースで有効です。試してみたところ今まではタイトル指定が必要だったものが正しい内容を選択してくれているようです。ただし1話1タイトルで複数タイトル含むようなものには当然ながら上手くありません。(下記Makefileも対応していません)

コレと"-N jpn --subtite-burn"を組み合わせるとほぼ手放しで字幕付のエンコードが可能になります。もちろん全てのソースでは上手くいきませんのでそういうものは個別に対応する必要はありますが。 

画質については...元々iPad/iPhone向けが多くさほど拘っていないのでプリセットベース。よくある(?)普通に見れる設定だと思います。最近はiPadでもiPhoneと同じ低ビットレート(1300kbps)のものをAirVideoで視聴していますが特に不満な画質ではないと思います。大画面TVにつなぐとさすがに粗が見えます。-5(--decomb), -9(--detelecine)はソースによりますので適当に調整。モノによっては画質が落ちたり乱れることがあるのでオプションを外したり--deinterlace slowや--denoise weakあたりを使用。

余り書くことがないので変換に使っているMakefileを。GUIは使わず以下のような適当なMakefileを作ってCLI版で一括変換してます。vbvはちょい適当。vbv-bufsize=3000位でいいかも。元データをSRCのディレクトリにファイルを放りこんでMakefileを動画保存用のディレクトリに入れておいて"make -k -s"で一括変換。"make -j2 -k -s"等とすると2エンコード同時進行。iPhone向けにm4v, PC向けにmp4としていて別ディレクトリでmakeしてます。

flvの変換はかなりいい加減でffmpegでmp4に抜き出し出来ない時はHandBrakeでエンコード。H.264ベースの動画はエンコード無しでコンテナだけ変換というもの。 

.PHONY: all
.SUFFIXES: .flv .mp4 .m4v
SYSTEM=$(shell uname -s)

SRCPATH=元データのディレクトリ 
VPATH=$(SRCPATH)
OPT_LANG=-N jpn --subtitle-burn
OPT_TITLE=--main-feature
 
AENC_Darwin=-E ca_aac
AENC_Linux=-E faac
AENC=$(AENC_$(SYSTEM))

define encode
HandBrakeCLI  -O -I -e x264 $(AENC)  -6 dpl2 -R 48 -D 2.5 -f m4v -X 720 -m -2 -T -5 -9  $(OPT0) $(OPT)  --crop autocrop  $(OPT_LANG) $(OPT_TITLE) -i  $< -o $@
endef
  
# for iPhone/iPod Touch 
%.m4v : OPT0=-b 1300 -B 160 -x cabac=0:ref=2:me=umh:bframes=0:subq=6:8x8dct=0:trellis=0:analyse=all:vbv-maxrate=1500:vbv-bufsize=1500
# for iPad/PC 
%.mp4 : OPT0=-S 1900 -B 160 --loose-anamorphic -x ref=2:bframes=2:subq=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0

%.m4v : %  # Makefile /usr/local/bin/HandBrakeCLI
  $(encode)
%.m4v : %.avi
  $(encode)
# from youtube etc
%.m4v : %.flv
  ffmpeg -i $< -acodec copy -vcodec copy $@  || ( $(encode) )
%.mp4 : %
  $(encode)
 
SRC=$(sort $(notdir $(shell find $(SRCPATH) -mindepth 1 -maxdepth 1 -type d)))
DST=$(addsuffix .m4v, $(basename $(SRC)))  # .m4v <= mp4 for high bit rate
 
all :  $(DST)

# per file 
foo.m4v :: OPT=XXX
bar.m4v :: OPT_LANG=-a2 -s2 --subtitle-burn 2
hoge.m4v :: OPT_TITLE=-t1
 
$(DST) :: 
 
適当に数本をエンコードさせてみましたが、画質、安定性など現状特に問題はなさそうです。tsファイルの扱いが良くなっているらしいのでそちらも正常に処理出来るかどうか、今後試してみる予定。
 
aptリポジトリを追加した場合の注意点として、svn版なので当然といえば当然ですが頻繁にアップデートされます。安定性、バグ等が紛れ込むのは必至ですのでバージョンアップの時にはHandBrakeをバックアップしてから行う方がいいと思います。
 
ところでHandBrakeで気になるのは4コアCPUでの遅さでしょうか。フォーラムなどでも触れられていますが、4CPUを使ってもせいぜい260-70%前後までしかCPUを使ってくれずシングルの4倍(に近い数字)の速度にはならない点です。SVN版で改善を期待したのですが基本的に同じです。
 
Core2 Duo 2GhzとPhenom X4 2.5Ghzで性能差が1.5倍程度です。Intelの方がエンコード向きとはいえこれではせいぜい3Ghz位のCore2と同じ程度。ホースパワーは計算上2x2=4Ghzと2.5x4=10Ghzなのでやはりマルチコアでの性能向上はいまいち。
 
個人的にはPC用、iPhone用に設定を変えて2回エンコードすることが多いので、同時に走らせると300%以上CPUを使ってくれますが、今後ますますマルチコアが増える可能性が高いのでもうちょっと多コアで性能アップしてくれたらうれしいですね。残念ながら現状では4-6コアのCPUを使うより2-3コアでも高クロックなCPUの方が速いという結果になります。今後はGPUでの高速化も期待したいところですが、とりあえずi5/i7や新しいPhenomの自動クロックブーストは有効なのか試してみたいところです。

トラックバック

このエントリーのトラックバックURL:
http://blog.browncat.org/cgi-bin/mt/mt-tb-abc.cgi/900


コメントを投稿

(お書きになったコメントはすぐには表示されません。ご了承ください。)


About

2010年09月27日 02:09に投稿されたエントリーのページです。

ひとつ前の投稿は「Air VideoのバージョンアップでVideo出力が復活!」です。

次の投稿は「Ubuntu/Macで動画の詳細をMediaInfoで調べてHandBrakeするメモ」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

           

カテゴリー

Powered by
Movable Type 3.36

Twitter


最近のエントリー

デル株式会社ads

注目エントリー