diary/Kojima

・LinuxでのBluray Disc再生の現状(その1)

DVDに比べてはるかに強力なコピープロテクトを施しているBluray Disc(BD)、このコピープロテクトのせいでLinuxではロクに再生できないことを知ってはいたものの、収められている情報量がDVDよりもはるかに大きいこともあり、つい発注してしまったまま放置してたBDメディアがずいぶん溜ってしまったので、少し時間が取れた機会にPlamo-7.0上でどれくらいBDが再生できるものかを調べてみた。

BDに対応しているドライブを接続しておけば、特に何もしなくてもBDを挿入するだけで、udevあたりが認識し、自動的にマウントしてくれる。

BD_01.png

BDメディアのファイル形式はUDFで、

 $ mount | grep sr1
 /dev/sr1 on /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1 type udf
   (ro,nosuid,nodev,relatime,uid=1000,gid=100,iocharset=utf8,uhelper=udisks2)

中身を一覧することもできる。

 $ ls -lR /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/
 /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/:
 合計 6,144
 dr-xr-xr-x  3 kojima users 644 10月 31日  15:08 AACS/
 dr-xr-xr-x 10 kojima users 520 10月 31日  15:08 BDMV/
 dr-xr-xr-x  3 kojima users 136 10月 31日  15:08 CERTIFICATE/
 
 /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/AACS:
 合計 4,630,528
 -r--r--r-- 1 kojima users     2,048 10月 31日  14:54 CPSUnit00001.cci
 -r--r--r-- 1 kojima users       288 10月 31日  15:08 Content000.cer
 ....  

これらファイルのうち、実際の動画データらしいのは、BDMV/STREAM 以下。

 /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/BDMV/STREAM:
 合計 33G
 -r--r--r-- 1 kojima users  58M 10月 31日  14:54 00000.m2ts
 -r--r--r-- 1 kojima users  98M 10月 31日  14:54 00001.m2ts
 -r--r--r-- 1 kojima users 7.6G 10月 31日  15:00 00002.m2ts
 -r--r--r-- 1 kojima users 7.6G 10月 31日  15:01 00003.m2ts
 -r--r--r-- 1 kojima users 7.6G 10月 31日  15:07 00004.m2ts
 -r--r--r-- 1 kojima users 7.6G 10月 31日  15:08 00005.m2ts
 -r--r--r-- 1 kojima users  61M 10月 31日  15:07 00006.m2ts
 -r--r--r-- 1 kojima users 417M 10月 31日  15:07 00007.m2ts
 ....

これらのファイルはH.264形式でエンコードされた動画と音声のデータなはずだけど、 AACSと呼ばれる暗号化が施されていて、そのままでは無意味なバイト列でしかない。

 $ file /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/BDMV/STREAM/00002.m2ts 
 /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/BDMV/STREAM/00002.m2ts: data
 $ od -cx /run/media/kojima/GUP_TV_AND_OVA_51CH_BDBOX_D1/BDMV/STREAM/00002.m2ts  | head
 0000000 342   n 273   h   G   @  \0 020  \0  \0 260 021  \0  \0 301  \0
            6ee2    68bb    4047    1000    0000    11b0    0000    00c1
 0000020   g   ,   >   O   Q   s 270   Q 262 336 316 221  \t   ;   M 352
            2c67    4f3e    7351    51b8    deb2    91ce    3b09    ea4d
 0000040 343 243   p   0 371 316   , 362 002 263 207 255 366   # 321 034
            a3e3    3070    cef9    f22c    b302    ad87    23f6    1cd1
 ...

問題は、この暗号化されたデータをいかに復号して動画と音声データに戻すか、ということになる。

一番簡単なのは、MakeMKVという、市販のDVD/BDデータ変換ツールを使うこと。 このソフトはWindows/Mac版のみならずLinux版も公開されている。

Linux版のMakeMKVは、makemkv-binとmakemkv-ossという2つのファイルから構成されていて、

 $ ls -lh *tar.gz
 -rw-r--r-- 1 kojima users 9.0M  1月 30日  23:42 makemkv-bin-1.14.2.tar.gz
 -rw-r--r-- 1 kojima users 4.2M  1月 30日  23:42 makemkv-oss-1.14.2.tar.gz

このうち、makemkv-ossはQt5を用いたGUIや共有ライブラリの部分で、ソースコードを公開されているものの、ここには暗号化されたデータを復号する機能は含まれていない。

その機能を提供しているのがmakemkv-binの方で、こちらはコンパイル済みのバイナリ配布で、コアになるのは makemkvcon というコマンド。

 $ tar tvf makemkv-bin-1.14.2.tar.gz 
 drwxr-xr-x nobody/nogroup    0 2018-12-01 10:21:21 makemkv-bin-1.14.2/
 drwxr-xr-x nobody/nogroup    0 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/
 -rw-r--r-- nobody/nogroup 23952 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/eula_en_linux.txt
 -rw-r--r-- nobody/nogroup   306 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/ask_eula.sh
 drwxr-xr-x nobody/nogroup     0 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/share/
 -rw-r--r-- nobody/nogroup   101 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/share/blues.policy
 -rw-r--r-- nobody/nogroup 231936 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/share/appdata.tar
 -rw-r--r-- nobody/nogroup 2850026 2018-12-01 10:21:21 makemkv-bin-1.14.2/src/share/blues.jar
 -rw-r--r-- nobody/nogroup    1026 2018-12-01 10:21:21 makemkv-bin-1.14.2/Makefile
 drwxr-xr-x nobody/nogroup       0 2018-12-01 10:21:21 makemkv-bin-1.14.2/bin/
 drwxr-xr-x nobody/nogroup       0 2018-12-01 10:21:21 makemkv-bin-1.14.2/bin/i386/
 -rw-rw-r-- nobody/nogroup 6019032 2018-12-01 10:21:21 makemkv-bin-1.14.2/bin/i386/makemkvcon
 drwxr-xr-x nobody/nogroup       0 2018-12-01 10:21:21 makemkv-bin-1.14.2/bin/amd64/
 -rw-rw-r-- nobody/nogroup 6218344 2018-12-01 10:21:21 makemkv-bin-1.14.2/bin/amd64/makemkvcon

makemkvconの依存関係はこんな感じ。

 $ readelf -d  /usr/bin/makemkvcon 
 
 Dynamic section at offset 0x5ec0a0 contains 30 entries:
  タグ        タイプ                       名前/値
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libmakemkv.so.1]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libdriveio.so.0]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libpthread.so.0]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libc.so.6]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libdl.so.2]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [libstdc++.so.6]
  0x0000000000000001 (NEEDED)             共有ライブラリ: [librt.so.1]
  0x000000000000000c (INIT)               0x405700
  0x000000000000000d (FINI)               0x6d2c54
  ....

ここで参照しているlibmakemkv.so.1とlibdriveio.so.0は、makemkv-oss のソースコードからビルドできる。

 $ less makemkv_oss-1.14.2-x86_64-B1.txz 
 drwxr-xr-x root/root         0 2019-01-30 23:49:45 usr/
 drwxr-xr-x root/root         0 2019-01-30 23:49:45 usr/lib/
 -rw-r--r-- root/root     26936 2019-01-30 23:49:45 usr/lib/libdriveio.so.0
 -rw-r--r-- root/root    589472 2019-01-30 23:49:45 usr/lib/libmakemkv.so.1
 -rw-r--r-- root/root     39296 2019-01-30 23:49:45 usr/lib/libmmbd.so.0
 drwxr-xr-x root/root         0 2019-01-30 23:49:45 usr/bin/
 -rwxr-xr-x root/root  25352192 2019-01-30 23:49:45 usr/bin/makemkv

ソースコードをビルド、インストールしてやると、"makemkv"コマンドでGUIな画面が表示され、 接続しているBDドライブを選ぶとデバイス情報が表示される。BDドライブはfirmwareにAACSが実装されているそうで、このBDドライブは"AACS v65"らしい。

makemkv_01.png

BDドライブのところをクリックするとメディアのコンテンツが読み込まれ、 認識された動画データがリストアップされる。

makemkv_02.png

変換したい動画データにチェックを入れて、出力フォルダを適切に指定し、 "MakeMkv"のアイコンをクリックすれば、指定した動画データが復号化された上で mkv形式に変換されて保存される。

makemkv_03.png

取り出した動画データはmkv(Matroska)形式になっている。

 $ ls -lh ガールズ&パンツァー TV&OVA\ 5.1ch\ Blu-ray\ Disc\ BOX\ 1_t0*
 -rw-r--r-- 1 kojima users 29G  1月 31日  16:15 ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1_t00.mkv
 -rw-r--r-- 1 kojima users 25G  1月 31日  16:37 ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1_t01.mkv
 $ file ガールズ&パンツァー TV&OVA\ 5.1ch\ Blu-ray\ Disc\ BOX\ 1_t0*
 ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1_t00.mkv: Matroska data
 ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1_t01.mkv: Matroska data

mkv形式は、smplayerやvlcといったメディアプレイヤーが対応しているので、 Linux上でも自由に再生できる。

makemkv_04.png

取り出した動画データはH.264形式。

makemkv_05.png

音声はdca/dts形式らしい。

makemkv_06.png

字幕データもちゃんと取り出せている。

makemkv_07.png

ということで、MakeMKVを使えば、BDのコンテンツを復号してmkv形式に取り出すことは可能で、Plamo-7.0でもちゃんと動いた。

MakeMkvは、復号化のコアの部分は公開されていない市販ソフトウェアなものの、30日の試用期間が設けられていて、その間は無料で試用可能。しかも、現在はβ版ということで、 毎月月末に試用期間を30日間延すためのキーが公開されているそうで、実質無料で使い続けられる模様。

もっともMakeMkvは「BDプレイヤー」ではなく「データコンバータ」なので、所有しているBDメディアをポンと入れて再生する、というわけにはいかず、Linux環境で見たいメディアは、いったんmkv形式に変換してHDD上にアーカイブしておく必要がある。圧縮率や含まれているデータ量にもよるだろうけど、今回試したBDでは約100分のコンテンツが30GB程度になったので、HDDはそれなりに手配しておく必要がありそう。

まぁ、暗号化されていないmkv形式で取り出せるので、必要ならばBD-R等に書き出し直すことも可能だろうし、最近のHDDは3TBで10k、8TBでも20K強くらいだから、ファイルサイズはあまり気にする必要は無い気もする。

MakeMKVがいつまでLinuxで使い続けられるかという懸念はあるものの、とりあえず手元のBDをアーカイブしておく、という用途には便利そう。 (続く)



添付ファイル: fileBD_01.png 298件 [詳細] filemakemkv_01.png 297件 [詳細] filemakemkv_06.png 227件 [詳細] filemakemkv_02.png 258件 [詳細] filemakemkv_04.png 218件 [詳細] filemakemkv_05.png 192件 [詳細] filemakemkv_07.png 313件 [詳細] filemakemkv_03.png 253件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:43