ページ

2012年9月30日日曜日

Ubuntu でDVDをアレコレする

前回は(音楽)CDをアレコレする話を書きましたが、今回はDVDをアレコレする方法です。前回も書きましたが10月から法律が変更されて、これから行う行為が法律違反になってしまうらしいです。というか既にマズいかすらよく解っていませんが、一応注意書きしておきます。

まず最初にUbuntuというかLinuxでDVDを再生する方法について軽く書きたいと思います。DVDを再生するには最低限、MPEG2とAC-3やMP2といったコーデックの再生とDVDメニュー等の操作が可能な事、商用DVDの場合はCSSによる暗号化の解除も必須です。

この中で一番厄介なのが最後のCSSによる暗号化なのですが、有難い事にLinuxでも対策可能です。DeCSSという解除プログラムを元にした「libdvdcss」がそうです。

ただし、このlibdvdcssは国によって解釈が違うので、残念ながらUbuntuのデフォルトリポジトリには収録されていません。使いたいならば個人の判断によってローカルからインストールするか「Medibuntu」のようなリポジトリを追加してインストールする必要があります。

ちなみにメディアプレイヤーとしては「VLC」が一番使いやすいと思います。このVLCはクロスプラットフォームなのでWindowsやMacと同じように使えるのも大きなメリットだと思います。

このVLCはシステムに「libdvdcss」がインストールされていれば自動的に認識してDVDを再生する事が可能になっています。Ubuntuで商用DVDを再生したい場合はlibdvdcssを手動でインストールしVLCもインストールすれば簡単に見られるようになります。

次にDVDをリッピングして好きなようにエンコードする方法ですが、これもクロスプラットフォームな「Handbrake」が一番手っ取り早いと思います。

このHandbrakeもVLCと同じく単独でCSSによる暗号化を解除出来ませんが、libdvdcssをインストールすればシームレスにリッピングからエンコードまで行えるようになります。

しつこいようですが10月からは暗号化されたコンテンツを解除して保存する事が法律で禁止されるようなので、このHandbrakeとlibdvdcssの組み合わせでのリッピングは違法という事になるようです:-(

しかもレンタル等だけでなく、自らが所有しているDVDでもリッピングする事が違反となるらしいので注意が必要です。正直、ユーザーの権利を侵害しているとしか思えないのですが、今更言ってもどうしようもない事なのかもしれませんね……。どうみてもおかしいですけど:-(

Handbrake自体の使い方ですが、これはLinux特有という訳ではないので検索すれば、もっと詳しく解説されているウェブサイトがあると思います。ですので敢えて説明しません。

ただHandbrakeには「HandBrakeCLI」というコマンドラインで操作出来るインターフェースもあるので、そちらを簡単に説明したいと思います。

まずDVDをDVDドライブにセットします。あるいはDVDのISOイメージをHDDに用意します。最初にDVDの内容を表示します。
$ HandBrakeCLI -i /dev/dvd -t 0
$ HandBrakeCLI -i Movie.iso -t 0
上がDVDドライブからで、下がHDDに保存してあるISOファイルからの読み込みです。
+ title 1:
+ Main Feature
+ vts 1, ttn 1, cells 0->13 (2441827 blocks)
+ duration: 01:49:38
+ size: 720x480, pixel aspect: 853/720, display aspect: 1.78, 23.976 fps
+ autocrop: 58/62/0/0
+ chapters:
+ 1: cells 0->0, 132021 blocks, duration 00:05:54
+ 2: cells 1->1, 126876 blocks, duration 00:06:25
+ 3: cells 2->2, 147231 blocks, duration 00:07:00
+ 4: cells 3->3, 257751 blocks, duration 00:11:16
+ 5: cells 4->4, 108529 blocks, duration 00:05:36
+ 6: cells 5->5, 298975 blocks, duration 00:13:06
+ 7: cells 6->6, 73934 blocks, duration 00:03:46
+ 8: cells 7->7, 373033 blocks, duration 00:16:26
+ 9: cells 8->9, 360527 blocks, duration 00:15:49
+ 10: cells 10->10, 235804 blocks, duration 00:10:21
+ 11: cells 11->11, 175811 blocks, duration 00:08:14
+ 12: cells 12->12, 151148 blocks, duration 00:05:43
+ 13: cells 13->13, 187 blocks, duration 00:00:00
+ audio tracks:
+ 1, English (AC3) (5.1 ch) (iso639-2: eng), 48000Hz, 384000bps
+ 2, Japanese (AC3) (5.1 ch) (iso639-2: jpn), 48000Hz, 384000bps
+ subtitle tracks:
+ 1, English (Closed Caption) (iso639-2: eng) (Bitmap)(VOBSUB)
+ 2, Japanese (iso639-2: jpn) (Bitmap)(VOBSUB)
+ 3, Japanese (iso639-2: jpn) (Bitmap)(VOBSUB)
+ title 5:
+ vts 4, ttn 1, cells 0->0 (9310 blocks)
+ duration: 00:00:28
+ size: 720x480, pixel aspect: 853/720, display aspect: 1.78, 29.970 fps
+ autocrop: 68/76/98/100
+ chapters:
+ 1: cells 0->0, 4957 blocks, duration 00:00:16
+ 2: cells 0->0, 4166 blocks, duration 00:00:12
+ 3: cells 0->0, 187 blocks, duration 00:00:00
+ audio tracks:
+ 1, Unknown (AC3) (5.1 ch) (iso639-2: und), 48000Hz, 448000bps
+ subtitle tracks:
+ 1, Closed Captions (iso639-2: und) (Text)(CC)
すると、こんな感じで結果が表示されると思います。DVDによってはやたらと長い結果、例えば「アイアンマン2」とかだと、タイトルが99個もあったりして、ほぼ選別不可能だったりします。明らかにリッピング対策が施されているタイトルも多いのでHandbrakeではリッピング出来ない物もあります。

読み方ですが"title"から次の"title"までが一つの区切りとなっています。上記の例では"title 1"と"title 5"の2つの区切りがあります。title 1の次はtitle 2のような気がしますが、DVDによってバラバラなので注意が必要です。

"duration"は文字通り"再生時間"。これは本編を探る重要な手がかりなので見逃さないようにしましょう。"title 1"では"01:49:38"もあり、"title 5"では"00:00:28"しかありません。

"size"もそのものズバリですね。両方共"720x480"ですが、フレームレートが"23.976 fps"と"29.970 fps"と明らかに違いがあります。

"chapters"もそのものズバリ"チャプター"ですね。この例だとtitle 1は"1-13"、"title 5"は"1-3"までしかありません。ちなみにチャプター単位でエンコードする事が出来ます。ですから、"3-5"のように指定してあげれば、自分の好きなチャプターだけ切り出してエンコードが可能になったりします。

"audio tracks"も文字通り"音声"ですね。この例だと英語と日本語のAC3、5.1chの音声が収録されています。title 5は国籍不明でAC-3、5.1chの音声が一つだけ収録されているようです。

最後に"subtitle tracks"ですが、これも"字幕"の事ですね。title 1だと英語と日本語が2つの計3つの字幕が収録されているようです。映画の場合、一つはセリフでもう一つ監督のコメントだったり、必要最低限だけの日本語解説だったりするようです。"title 5"の"クローズドキャプション"は、具体的にどうなのか判りません。

取り敢えず、そんな所ですかね。続いて実際のエンコード方法ですが、私はプリセットを利用して手抜きしています。以下が主なプリセットの内容です。
#Devices
+ Universal: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:bframes=0:weightp=0:8x8dct=0:trellis=0:subme=6

+ iPod: -e x264 -b 700 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 -m -x level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0

+ iPhone & iPod Touch: -e x264 -q 20.0 -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 480 -m -x cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0

+ iPhone 4: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 960 --loose-anamorphic -m

+ iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1280 --loose-anamorphic -m

+ AppleTV: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500

+ AppleTV 2: -e x264 -q 20.0 -r 29.97 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1280 --loose-anamorphic -m

+ AppleTV 3: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1920 --decomb="7:2:6:9:1:80" --loose-anamorphic --modulus 2 -m -x b-adapt=2

+ Android Mid: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 480 -x cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0

+ Android High: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 720 --loose-anamorphic -x weightp=0:cabac=0

#Regular
+ Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --strict-anamorphic -m -x ref=1:weightp=1:subq=2:rc-lookahead=10:trellis=0:8x8dct=0

+ High Profile: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --decomb --loose-anamorphic -m -x b-adapt=2:rc-lookahead=50

#Legacy
+ Classic: -b 1000 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4

+ iPod Legacy: -e x264 -b 1500 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 640 -m -x level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0
"Devices"は、iPhoneやiPad向けのプリセットで"Regular"はPC等の汎用性重視のプリセット、"Lagacy"は名前の通り古い端末? 向けのプリセットなので、あまり使う事は無いと思います。

私は基本的に"Regular"の"Normal"プリセットを使っています。"High Profile"でも良いのですが、一応互換性重視という事で:-P

基本的に、このプリセットをベースに自分で足りないオプションや変更したいオプションをコマンドラインで追加して使用します。それぞれのオプションの説明は、複雑すぎてここでは説明出来ませんが、Handbrakeのウェブサイトで説明されているので、自分で確認してみて下さい。

試しに上記のDVDのタイトル1をリッピングしてエンコードする場合は、以下のような感じになります。
$ HandBrakeCLI -Z "Normal" -i /dev/dvd --markers -t 1 -a 2,1 -s 1,2,3 -o ./Movie.mp4
-Z "Normal"がプリセットの指定、"-i"でDVDドライブの指定、"--markers"で再生時のチャプター再生設定、これはVLC等の一部のメディアプレイヤーにしか適用されません。"-t"でタイトルの指定、これを"-t 5"とすると、タイトル5がリッピング対象になります。"-a"で音声指定。コンマで区切る事で複数選択可能です。"-a 2,1"でデフォルトの再生音声が2番目の日本語になります。"-s"で字幕指定。こちらも音声と同様にコンマで区切って複数指定、最初の数字が優先的に表示されます。"-o"で出力先の指定です。

他にも色々とオプションがありますが、余りにも膨大なので、ここでは割愛します。上記のDVDはもともとプログレッシブなので、特にフィルターを掛けていませんが、"29.970 fps"のソースなんかは"--deinterlace"や"--decomb"等のフィルター補正が必要になる事もあるので注意して下さい。

大雑把な目安として、古いアニメなんかは"--decomb"、大人同士の裸のぶつかり合い(えっ)なんかは"--deinterlace"じゃないと激しいシーンで取りこぼしがあるかもしれません。この辺りはソースに依存するので、自分で判断して下さい……。

駆け足で説明しましたが、普通はGUI版のHandbrakeを使用すると思うので、こんなややこしい事は必要ないかと思います。ただ、慣れてくるとHandbrakeCLIの方がテンプレ化出来て楽ではあります。個人的意見ですけど。

さて、勢いで書いてしまいましたが、果たして書いて良かったのだろうか……。危なかったら即消しますのでご容赦下さい……。

#外部リンク
HandBrake
http://handbrake.fr/index.php

CLIGuide – HandBrake
https://trac.handbrake.fr/wiki/CLIGuide

VideoLAN - Official page for VLC media player, the Open Source video framework!
http://www.videolan.org/vlc/

VideoLAN - developers - libdvdcss
http://www.videolan.org/developers/libdvdcss.html

DeCSS - Wikipedia
http://ja.wikipedia.org/wiki/DeCSS

Medibuntu :: Multimedia, Entertainment & Distractions In Ubuntu
http://medibuntu.org/

HandBrake Releases : John Stebbins
https://launchpad.net/~stebbins/+archive/handbrake-releases

このように対策されているDVDもあります
HandBrake and the 99 title DVD mystery | Macworld
http://www.macworld.com/article/1154702/99_title_dvd.html

0 件のコメント:

コメントを投稿