Home / Linux環境でDVDが観れない I can't watch a DVD in a Linux environment

(2020-09-16)
内蔵ドライブに装着した市販DVDをVLCメディアプレーヤで観ようとすると空振りしてしまう。

問題を起こす環境
PC:             ThinkPad T410
DVDドライブ:    内蔵 MATSHITA DVD-RAM UJ892, Type:CD-ROM, Revision:SB01
OS:             Lubuntu 19.10 / 20.04 64bit
再生ソフト:     VLCメディアプレーヤー 3.0.8, totem 3.34.1-2ubuntu1
メディア:       市販DVD
正常に観れる環境
PC:             ThinkPad X41
DVDドライブ:    ウルトラベース LG製 HL-DT-ST DVD-ROM GDR8083N, Type:CD-ROM, Revision:OK04
OS:             Lubuntu 18.04 32bit
再生ソフト:     VLCメディアプレーヤー 

Totem や目ぼしい他の再生ソフトでも同じ。まるで「装着してるのがDVDじゃない!」とばかりに無視される。冷たく何も表示せずに… 考えてみれば Ubuntu で DVD を観た事が無い。あれこれ検索|試行すると、これには問題が2つ有るのが判った。

  1. 観れない ................ 解決。ドライブにリージョンを設定。
  2. ブロックノイズ|音切れ ... 未解決|絞込み済。回避策で使用中。

以下、顛末の記録。

1. 観れない件

検索すると多くの記事には次の3つをインストールすれば観れるようになる、と書かれている。 (古い記事だが) どうすればDVD再生用の制限されたコーデックを使用できますか? 辺りに「暗号化されているから復号化ソフトウェアが必要」と説明されている。

そこに書かれている手順は libdvdnav4, libdvdread4, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, libdvd-pkg をインストールし、dpkg-reconfigure libdvd-pkg を実行せよ、と書かれているが、某はよく読まずに次の手順でやってしまった。(いけない手順でも無さそうだが)

$ sudo apt install libdvd-pkg
$ sudo dpkg-reconfigure libdvd-pkg
$ sudo apt install ubuntu-restricted-extras

因みに上記の理由でライブ起動の配布物にも含まれて居ない。
下記 dpkg-reconfigure の様子。

$ sudo dpkg-reconfigure libdvd-pkg
[sudo] password for usskim:
libdvd-pkg: Downloading orig source...
I: libdvdcss_1.4.2
/usr/bin/wget --tries=3 --timeout=40 --read-timeout=40 --continue -O libdvdcss_1.4.2.orig.tar.bz2 \
          http://download.videolan.org/pub/libdvdcss/1.4.2/libdvdcss-1.4.2.tar.bz2 \
        || /usr/bin/uscan --noconf --verbose --rename --destdir=/usr/src/libdvd-pkg --check-dirname-level=0 --force-download --download-current-version /usr/share/libdvd-pkg/debian
--2020-09-16 05:26:47--  http://download.videolan.org/pub/libdvdcss/1.4.2/libdvdcss-1.4.2.tar.bz2
Resolving download.videolan.org (download.videolan.org)... 213.36.253.2, 2a01:e0d:1:3:58bf:fa02:c0de:5
Connecting to download.videolan.org (download.videolan.org)|213.36.253.2|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 366824 (358K) [application/octet-stream]
Saving to: ‘libdvdcss_1.4.2.orig.tar.bz2’

libdvdcss_1.4.2.orig.tar.bz 100%[==========================================>] 358.23K  27.9KB/s    in 7.4s

2020-09-16 05:26:55 (48.3 KB/s) - ‘libdvdcss_1.4.2.orig.tar.bz2’ saved [366824/366824]

libdvd-pkg: Checking orig.tar integrity...
/usr/src/libdvd-pkg/libdvdcss_1.4.2.orig.tar.bz2: OK
libdvd-pkg: Unpacking and configuring...
libdvd-pkg: Building the package... (it may take a while)
libdvd-pkg: Build log will be saved to /usr/src/libdvd-pkg/libdvdcss2_1.4.2-1~local_amd64.build
Current: = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read+ep
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_wake_alarm,cap_block_suspend,cap_audit_read
Securebits: 024/0x14/5'b10100
 secure-noroot: no (unlocked)
 secure-no-suid-fixup: yes (unlocked)
 secure-keep-caps: yes (unlocked)
uid=0(root)
gid=0(root)
groups=0(root)
libdvd-pkg: Installing...
以前に未選択のパッケージ libdvdcss-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 287624 個のファイルとディレクトリがインストールされています。)
.../libdvdcss-dev_1.4.2-1~local_amd64.deb を展開する準備をしています ...
libdvdcss-dev:amd64 (1.4.2-1~local) を展開しています...
以前に未選択のパッケージ libdvdcss2:amd64 を選択しています。
.../libdvdcss2_1.4.2-1~local_amd64.deb を展開する準備をしています ...
libdvdcss2:amd64 (1.4.2-1~local) を展開しています...
libdvdcss2:amd64 (1.4.2-1~local) を設定しています ...
libdvdcss-dev:amd64 (1.4.2-1~local) を設定しています ...
libc-bin (2.30-0ubuntu2.2) のトリガを処理しています ...

これで観れると思いきや…観れない orz

何が原因なのか?

昔から「問題の切り分け」で万事解決と思われているが、事はそう簡単ではない。 切り分けの判断が曖昧さを含むから下手すると間違った方向へ進んでしまい、迷宮入りする可能性が少なくないからだ。 思い付く要因と、それが原因である確率を推測してみる。

  1. DVDドライブ ... 20%
    CD-ROMは読めるし、生ファイルとしては読み込めてるっぽい。

  2. メディア ...... 10%
    目視では傷も無く、生ファイルとしては読み込めてるっぽい。
    他にメディアが有れば良いが、生憎手持ちが無い。残念。

  3. ライブラリ .... 70%
    インストールエラーは出ていないが、ハードの原因が低いなら、ここに問題が有りそう。

  4. 再生ソフト .... 10%
    VLC以外のソフトも観れないので可能性は低い。

  5. OS ............ 5%
    これが原因とするには話題に上らないのはおかしい。

ライブラリの確認

古い記事に「sudo /usr/share/doc/libdvdread4/install-css.sh」をやれ、と書かれているが、それは 15.10 より前の版の話しらしいので今回は無視して良い。
情報元: ubuntu 16.04 インストール(8) マルチメディア系 - kashiの日記
何より現状そんなファイルは存在しない↓

$ ll /usr/share/doc/libdvdread4/
total 92
drwxr-xr-x    2 root root  4096 10月 17  2019 ./
drwxr-xr-x 2057 root root 69632  9月 16 06:08 ../
-rw-r--r--    1 root root  1176  1月  3  2014 AUTHORS
-rw-r--r--    1 root root  2648 11月  6  2013 README
-rw-r--r--    1 root root   754  2月 10  2019 README.css
-rw-r--r--    1 root root  1810  2月 10  2019 changelog.Debian.gz
-rw-r--r--    1 root root  1303  2月 10  2019 copyright

復号化の肝心なファイルは libdvdcss だそうなので、これらの存在を見ておく。

$ find /usr -name 'libdvd*'
/usr/share/bug/libdvdnav4
/usr/share/bug/libdvdread4
/usr/share/libdvd-pkg
/usr/share/libdvd-pkg/libdvdcss_1.2.12.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/libdvdcss_1.4.2.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/libdvdcss_1.3.0.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/libdvdcss_1.2.13.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/debian/libdvdcss2.install
/usr/share/libdvd-pkg/debian/libdvdcss2.symbols
/usr/share/libdvd-pkg/debian/libdvdcss-dev.install
/usr/share/libdvd-pkg/libdvdcss_1.4.0.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/libdvdcss_1.2.11.orig.tar.bz2.sha256
/usr/share/libdvd-pkg/libdvdcss_1.4.1.orig.tar.bz2.sha256
/usr/share/lintian/overrides/libdvdnav4
/usr/share/lintian/overrides/libdvd-pkg
/usr/share/doc/libdvdcss2
/usr/share/doc/libdvdcss-dev
/usr/share/doc/libdvdnav4
/usr/share/doc/libdvdread4
/usr/share/doc/libdvd-pkg
/usr/lib/libdvd-pkg
/usr/lib/x86_64-linux-gnu/libdvdcss.so
/usr/lib/x86_64-linux-gnu/libdvdread.so.4.2.0
/usr/lib/x86_64-linux-gnu/libdvdnav.so.4.2.0
/usr/lib/x86_64-linux-gnu/libdvdread.so.4
/usr/lib/x86_64-linux-gnu/vlc/plugins/access/libdvdread_plugin.so
/usr/lib/x86_64-linux-gnu/vlc/plugins/access/libdvdnav_plugin.so
/usr/lib/x86_64-linux-gnu/libdvdcss.so.2.2.0
/usr/lib/x86_64-linux-gnu/libdvdnav.so.4
/usr/lib/x86_64-linux-gnu/pkgconfig/libdvdcss.pc
/usr/lib/x86_64-linux-gnu/libdvdcss.so.2
/usr/src/libdvd-pkg
...

何やら入ってそう。
リコンフィグとやらを念の為に再度実行。

$ sudo dpkg-reconfigure libdvd-pkg
[sudo] password for usskim:
libdvd-pkg: guest package [libdvdcss2/1.4.2-1~local] is already installed.

再生ソフトのログ確認

まず、VLC の設定メニュー/すべてに替えて詳細設定/ロガーのログファイル名を設定するが、一向にファイルが作成されない。 後で気付くが、syslog には記録されているもよう。

一方、totem は再生しようとする度に次のメッセージを吐く。むぅ~

totem[8012]: Missing plugin: gstreamer|1.0|totem|DVD source|urisource-dvd (DVD source|urisource-dvd (DVD source)
totem[8012]: Automatic missing codec installation not supported (helper script missing)

リージョン それだ!

ここまで来ると、けったいなリージョン妨害工作としか思えない。
↓ここを読み、DVDリージョンコードを見てみる。
UbuntuTips/Others/HowToPlayDvd - Ubuntu Japanese Wiki

Windows だとデバイスマネージャが見せてくれるらしいが、Lubuntu に入れた System Infomation では見えない。
regionset をインストールして見る。

$ regionset
regionset version 0.1 -- reads/sets region code on DVD drives
Current Region Code settings:
RPC Phase: II
type: NONE
vendor resets available: 4
user controlled changes resets available: 5
drive plays discs from region(s):, mask=0xFF

Would you like to change the region setting of your drive? [y/n]:n

おや? 未設定なようだ(黄色反転部)。回数も5回残っている。
躊躇うが、コードは一致してないといけないそうだし、regionset でググると事例が見つかる。 某も実行しよう…

$ regionset
regionset version 0.1 -- reads/sets region code on DVD drives
Current Region Code settings:
RPC Phase: II
type: NONE
vendor resets available: 4
user controlled changes resets available: 5
drive plays discs from region(s):, mask=0xFF

Would you like to change the region setting of your drive? [y/n]:y
Enter the new region number for your drive [1..8]:2
New mask: 0xFFFFFFFD, correct? [y/n]:y
Region code set successfully!

mask とやらはビット反転表現か? これで観れるようになった (≧▽≦)

とは言え、ブロックノイズが酷い。

2. ブロックノイズ|音切れが酷い

一応、視聴出来るようになったとは言え、ブロックノイズが酷く、鑑賞に堪えない。 音声も周期的に途切れ、これはブロックノイズと言うより、まともに処理出来ていない様子。 どの再生ソフトも同様でまるで超低速回線環境 orz

ヒントになりそうな症状を挙げる。

  1. メディアに拠る
    幸い別の市販DVDが手に入ったのでそちらを観たら綺麗に観れた。
    問題のメディアは DVDメニューだけは綺麗に観れる(映像とミュージックのみだが)。
    本編の全てがブロックノイズ|音切れ。

  2. ファイルへ変換(リッピング)しても症状変わらず。
    handbrake でパラメータを(適当に)変えながらファイルへ変換してみたが…変わらず。

  3. 別のPCでは綺麗に観れる。
    非力で 32bit な ThinkPad X41+ウルトラベース内蔵DVDで問題のDVDを観ると綺麗に観れる。… 性能の差じゃない。
    (libdvd-pkg 辺りは同様の手順でインストール済み)

2-1. メディアの違い

DVDパッケージを見て気付くのは、問題のDVDが音声3ヶ国語、字幕5本と多い点。 問題無い方は音声・字幕共、英語と日本語の2本。 メニュー部分はオーディオは含まれるが、音声も字幕も無い点が気になる。

2-2. handbrake で変換

参考にしたサイト→ UbuntuでDVDをmp4に変換 - FXシステムトレード
以下3つをインストール

あれこれパラメータを変えてみたが改善しない。 また、変換したファイルを他の Windows PC へ持って行って観ても同じ症状。

正常に観れる X41 で、同じく handbrake をインストールし、リッピングしてみると正常。
また、そのファイルを T410 で観ると正常。

版が異なるのだが、T410 と X41 とで handbrake の振る舞いが異なる。
X41 ではソースを指定すると右のエリアに動画のスナップショットが表示されるのだが、T410 では表示されない。ここで既にブロックノイズ|音切れの兆候が現れているもよう。

これらから察するに T410 の DVD読み取りに何か問題有りそう。しかも一部のDVDに於いて。 ハードか、ソフトか…。切り分けが困難 orz

VLCのログ等を見る

VLC の syslog 出力を活かすと警告っぽいメッセージを連発している。 画像出力が遅過ぎの意味か…。 VLCの処理内容を知らないのでログを見ても判らない。

vlc[xxxxx]: picture is too late to be displayed (missing xxx ms)

統計表示はこんな風↓
vlc1.jpg(160102 byte)

回避策(ISOイメージファイル化)

ファイル化での改善を期待してリッピングを試したが、改善されないのでその線は排除していたが、考えてみれば動画ファイル形式への変換なので、より単純なISOイメージファイル化をやってみる価値がある。

やってみると…

OS変更 ... 絞込み成功

OS絡みかどうか、ドライブの違いか、ばっさり切り分ける為、PCはそのまま、Win10 で稼動させていた HDD へ差し替える。中古で購入時、動作確認の為に用意されていたもので、素の Win10 に近い。 VLC もインストールされていないのでインストールする。

結果、綺麗に観れた。これで DVDドライブの疑いは晴れた。 なれどソフトウェアと連携し、何らかのからくりを持っている可能性は残る。

X41 の Lubuntu 18.04 は 32bit 版なので、その差かどうか確かめたいが、生憎 HDD が余っておらず環境が用意出来ない。ライブUSBなら用意出来るのだが libdvd-pkg が入ってないからなぁ…

再考

原因解明の為、見よう見真似で図を描き、症状について再考する。

dvdread2.jpg
  1. メディアに拠って症状が出る/出ない
    収録言語、字幕数の違い。収録時の書き込みの違い。メディアの個体差。…

  2. 動画形式ファイルへ変換(リッピング)しても症状変わらず。
    ソースをDVDにすると症状が出る。また、プレビューが表示されない。
    ソースをISOファイルにすると

  3. 別のPC(Lubuntu 18.04)では綺麗に観れる。
    ドライバ/DVDライブラリの違い? 32bit/64bit。概略構成は同じ。

  4. OSを変えれば(Win10)綺麗に観れる。
    ドライバ/DVDライブラリの違い?

  5. ISOイメージファイルへ変換すれば

コピーガードを疑う

ここまで、掛けられているのは CSS(Content Scramble System)であり、そこは libdvd で解除されている、と思ってきたが、症状の酷さから見てスクランブルやジャミングのような別のコピーガードが掛かっているように思える。
そこで掛ける側に視点を移して情報を探す。
画像付きで解説してあれば良いのだが、そんなサイトは中々見当たらない。

(リージョン、CSS以外の)何らかのコピーガードが掛かっていると仮定し、各症状の(尤もらしい)原因を推測する。

  1. 症状が現れないDVDタイトルが有る
    ガードが掛けられていない。

  2. 症状が現れるのは本編である
    メニュー部にはガードが掛けられていない(メディアに問題が無い事を示している)。

  3. ISO化すると
    ガードの仕組みがそうなっている。

  4. X41 では症状が出ない
    DVDドライブの違い、又はOSのバージョン違い(ドライブ、OSと協調する)。

  5. Win10 では症状が出ない
    ガードがOSと協調して掛かる、または Windows 版のVLCが解除している。

総合すると

問題のDVDタイトルには何らかのコピーガードが施されていて、一部のDVDドライブ、且つ、Linux(or Windows10 以外)で使用した場合に発動する。と推測。



参考にしたサイト

DVD - Wikipedia:
https://ja.wikipedia.org/wiki/DVD#DVD-RAM

1510 CD-ROM/DVDドライブの構造:
http://www.sugilab.net/jk/joho-kiki/1510/

DVDプレスの際につけたいコピーガードの仕組み | アニメグッズ CDプレス - 株式会社G-CREWS ジークルーズ:
https://g-crews.com/column/theme01/contents02.html
ちっとも技術解説になってない!

ソフトでDVD再生!その実力:
https://www.cqpub.co.jp/try/1999-9/soft-dvd.htm

c - CD-ROMからの高速データ読み取り - ITツールウェブ:
https://ja.coder.work/so/c/2932120

CDROM ドライバ(sr もしくは scd)
http://archive.linux.or.jp/JF/JFdocs/SCSI-2.4-HOWTO/sr.html

DVDリージョンの仕組みの全容:
http://ddealer98.web.fc2.com/pc/columns/dvd-region-hack.html
VLCはリージョンチェックしない仕様だそうな。

DVD/Blu-rayの規格やファイル構造。動画を書き込む前に知っておくこと | With feeling like it https://freepc.jp/post-38060
DVD のフォルダ構成等…

Home / Linux環境でDVDが観れない

© 2008 usskim    http://usskim.web.fc2.com/
inserted by FC2 system