HandBrakeCLI

欲しい動画なりをSMBに放り込んで置けばPSP用やiPod touch用のファイルを作ってくれるような仕組みを考える。(持ち運び毎にソースをwindowsのHandBreakでちまちま変換するのがめんどくさくなったので。)家でMPGやISOで見ていたものを外で続きを見たくなった場合などに、iPod touchPSPで持ち運び安くなるのを目指す。

キャプチャやリップはwindows側でやるだろうから保存先をSMB側にして、クローンで自動で変換させる仕組みを考える。(速いディスクの実験も出来たのでそちらもテストがてらにしてみる。)

変換にはHandBrakeCLIを使うことに。判断の参考は下記記述。
http://sourceforge.jp/magazine/08/07/10/018231/3
OSはfedora 9。HandBrakeCLIのインストールは前日の記述どおり。(やっぱりjamはいる。yasmも入れておかないとヘッダーファイルエラーが出る。)

キャプチャ部分。JCOMのターミナルで見たいものを自動でセット。windowsな端末でキャプチャ。持っていた手持ちの部品を使う。

BUFFALO PC-MDVD/U2 USB2.0対応 ビデオキャプチャーBOX

BUFFALO PC-MDVD/U2 USB2.0対応 ビデオキャプチャーBOX

出力先をSMBでサンバサーバーにしておく。ファイル名が「capture-MMDD,,,」とかになるはず。

DVDのリップにはDVDdecrypterかDVDFab(突破系)、使わないと思うけど4G圧縮にDVDShrinkを準備。(DVDFabのかわりにRip4Meでもいいかもしれない。ディスコンだけど。)フォーマットはISOで統一。手元読みにはVirtualCloneDriveを使う。

取ったMPG・ISOをSMBに入れる。沢山の対象があったり出入りが激しいようであればRAIDボックスを使うのも良いかも。(vmstat 1で見ている限り、IOが速いとやっぱり速い。windows端末からのファイルの転送の場合、windowsエクスプローラーはかなり遅い。BunBackup等の高速ファイル移動を使うと良いかもしれない。1本のGbEで600Mbitぐらいで書き出しが70MBぐらいだとかなり快適。)

HandBrakeCLIの変換の情報は下記から。
http://trac.handbrake.fr/wiki/BuiltInPresets#film
色々試して見たけれどPSP用のオプションが一番速くて良さそうだ。(使い勝手と変換速度でもちろん各々異なると思うけど。)オプションをPSP用の -b 1024 -a 1 -E faac -B 128 -R 48 -6 dpl2 -f mp4 -X 368 -Y 208 -mで組んで見る。(HandBrakeCLIはマルチプロセッサで変換出来るのでその分速い。topでもsar -P ALLでもきっちりみんな使っていそうだ。大体topのUserで80%ぐらいで変換していた。)

SMB保存先 $source_dir
変換済み保存先 $target_dir

<?php

$source_dir = "/mnt/raid/movie_data";
$target_dir = "/mnt/raid/PSP/movie_data";

exec("ls $source_dir",$ls);
//find option
//exec("find $source_dir -name \"*.ISO\" -or -name \"*.MPG\"",$ls);

foreach($ls as $val){

if(fnmatch("*.MPG",$val) or fnmatch("*.ISO",$val) ){
if(fnmatch("*.MPG",$val)){
print("MPG file \n");
// if find mode ,adding path to input_file is not needed.
$input_file = $source_dir . "/" . $val;
$out_val = str_replace(".MPG",".mp4",$val);
$output_file = $target_dir . "/" . $out_val;
}else if(fnmatch("*.ISO",$val)){
print("ISO file \n");
// if find mode ,adding path to input_file is not needed.
$input_file = $source_dir . "/" . $val;
$out_val = str_replace(".ISO",".mp4",$val);
$output_file = $target_dir . "/" . $out_val;
}
if (file_exists($output_file)) {
system("HandBrakeCLI -i $input_file -o $output_file -b 1024 -a 1 -E faac -B 128 -R 48 -6 dpl2 -f mp4 -X 368 -Y 208 -m");
//system("rm -rf $input_file");
}else{
print("already converted . \n");}

}

}

?>

これをクローンで一日一回自動実行。

で、2/3日使って見た。手持ちのソースを一括で変換する場合「ls $source_dir」の部分を「find $source_dir -name "*.ISO"」と化にして再帰的にディレクトリを操作しても良いかもしれない。(その際は1回目の全部のソースの変換に1日まるまるかかるかもしれない。)HandBrakeCLIの出力先に「file_exists」でチェックをかけて置けば新しいやつだけ変換してくれるだろう。
1時間のMPG・ISOが約10分程度で変換。(Intel(R) Xeon(R) CPU 3040)4コアであればもっと速く変換すると思う。変換時のCPUはtop User80%ぐらい、IOはvmstat 1で10000ぐらい。CPUに余力があればもっと出るのかもしれない。(うう、やってみたいなあ。)
DVDだと容量が4.4Gから500Mぐらいに圧縮されている。画質は自分的には十分かなあ、と思うけどそれなりに粗いとは思う。好みでx264かもしれない。
iPod touchの容量が8Gなのでちょくちょく入れ替えてだろう。(こっちは音楽も入っているしなあ。)PSPの方は16Gもあるのでどんどん入れて行っても良いかも。通勤・通学がある人には便利なシステムだなあ。、、、ああ、通勤も通学もないから使いどころが少ないな。_(x_x)_

この手のシステムのボトルネックは逆に帯域と流量なので技術的な意義は少ないかもしれないけれど、正しい課金が出来る手堅い領域では十分機能しそうな予感。(その手のビジネスモデルを作るだけでも大仕事だけれど。)今回は、趣味の世界。