min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi 3 に HandBrakeCLI をインストールしてDVD吸い出し&mp4にエンコードする → 成功

 

前記事で、RaspberryPi(初代)にHandBrakeのインストールができなかった。

min117.hatenablog.com

リベンジに、RaspberryPi 3 に HandBrake をインストールすることにする。初代 と 3 とでは、3のほうがCPUの数が4倍に増えているし、エンコードスピードも段違いだろう。

なんと、RaspberryPi 3 (と2)用に、専用のインストーラdebファイル)を作っている人がいた

Raspberry Pi • View topic - Video Converter HandBrake 0.10.5 for RPi2&3

たったこれだけでインストールできるらしい。

f:id:min117:20161127114647p:plain

インストールしてみる。作業は全部 sudo してから行うことにする。

まずは gdebi-core とやらをインストール。

# sudo -s

# apt-get install gdebi-core

f:id:min117:20161127115240p:plain

次はwgetdebファイルをダウンロード。

# wget http://steinerdatenbank.de/software/ghb_0.10.5-1_armhf.deb

f:id:min117:20161127115031p:plain

gdebiコマンドで、debファイルをインストールする。

# sudo gdebi ghb_0.10.5-1_armhf.deb

f:id:min117:20161127114846p:plain

インストール完了。

f:id:min117:20161127115613p:plain

たったの3ステップで HandBrake がインストールできてしまった。arm用は無いからソースからコンパイルを覚悟してたし、前記事のようなエラーは出るだろうから、それを1つ1つ読んでいかねば…と思っていたけど、これ一発で解決。ほんと、ネットは素晴らしい。

 

インストールした HandBrake のヘルプを見てみる。

f:id:min117:20161127115839p:plain

ちゃんとインストールされたようだ。さっそくエンコードを試してみる。ソースはDVDディスク。dfコマンドに表示される /media/pi/DVD_VIDEO がそれ。

$ df

f:id:min117:20161127120605p:plain

エンコード(圧縮)後に出力されるmp4の保存先は、ネットワーク内にあるNAS(192.168.xxx.xxx)の「PT3」という共有フォルダにする。見慣れた書き方をすれば「¥¥192.168.xxx.xxx¥PT3」といったところか。

NASをマウントする。RaspberryPi3のfstabに記述があるので、mountコマンドでマウントしてやる。

$ sudo mount -a

マウントされたか確認。

$ df | grep PT3

f:id:min117:20161127121221p:plain

/volumes/PT3 としてマウントされたのがわかる。

 

これで、圧縮元ソース(DVD_VIDEO)と、圧縮先のNAS(PT3)が揃った。早速HandBrakeでエンコードしてみる。

と思ったが、今回のDVD(4.7GB)をエンコードする前に、小さいサンプルファイルで綺麗にエンコードできるかテストしてみよう。

 

まずはソースファイルがあるNAS(共有フォルダ「PT3」)に移動する。

# cd /volumes/PT3

f:id:min117:20161127122604p:plain

サンプルファイルには、以前キャプチャした動画ファイルを使う。ファイル名に「花束」「ver1」という単語を含んで、かつ、ファイル名の終わりがtsで終わるファイルがそれそれを検索し、そのサイズを確かめる。

# for i in *花束*ver1*ts; do echo "$i"; ls -shal | grep "$i"; done

f:id:min117:20161127122939p:plain

ファイルサイズは 43MB しかない。これならエンコードにも時間はかかるまい。サンプルとしてちょうどいい。

書式

HandBrakeCLI -i ソース -o 出力先 -Z "品質指定プロファイル"

実行

HandBrakeCLI -i 花束を君に_ver1.ts -o 花束を君に_ver1.ts.mp4 -Z "AppleTV 3"

※ 品質指定の「AppleTV 3」については、HandBrakeが持っている品質指定ファイル(プロファイル)名を指定する。どんなプロファイルがあるかはネットに情報が溢れてるけど、今まで試した中で一番バランスが取れてるのが「AppleTV 3」だったので、今回もそれを使ってみた。

なお、「AppleTV」と「3」の間に半角スペースがあるので、指定するときはダブルクオート""で囲んで "AppleTV 3"としてやる必要がある。

 

エンコード実行。-i や -o を手書きするのが面倒なので、for文に組み込む。

# for i in *花束*ver1*ts; do echo "$i";  HandBrakeCLI -i "$i" -o "$i".mp4 -Z "AppleTV 3"; done

f:id:min117:20161127123319p:plain

圧縮開始した。上から数行目に「4 CPUs detected」とある。RaspberryPi 3 の4つのCPUがフル活用されるようだ。完了までしばらく待つ。

 

圧縮完了。数分で終わった。

f:id:min117:20161127124729p:plain

映像は1分ほどで、圧縮も1分程度だから、映像ファイルの元時間と同じ程度で圧縮できるってことがわかった。十分に速い。RaspberryPi3の消費電力はスマホ程度だから、これで、超省電力の動画圧縮専用マシンができたことになる。

 

エンコードされたファイル.mp4 を再生してみる。

f:id:min117:20161127125308p:plain

f:id:min117:20161127125342p:plain

十分キレイ。元ファイル.tsに見劣りしない。さすがは HandBrake。圧縮前後の動画ファイルサイズはどうか。

f:id:min117:20161127125554p:plain

圧縮前:43MB

圧縮後:29MB

何パーセント圧縮された?計算式は「29 / 43 * 100」でいいと思うけど、面倒なのでpythonにやらせる(bashだと小数点計算が面倒だから)。

$ python

f:id:min117:20161127125900p:plain

>>> 29.000 / 43.000 * 100

f:id:min117:20161127125945p:plain

67.4% 圧縮された。 ほんと RaspberryPi 3 最高。