diary/Kojima/2019-02-17
の編集
http://plamo.linet.gr.jp/?diary/Kojima/2019-02-17
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・LinuxでのBluray Disc再生の現状(その2) 試行錯誤していたので、ずいぶん間が空いちゃったけど、とりあえず「その2」。 前回紹介したように、MakeMKVを使えば Linux 上でも AACSで暗号化されたBDディスクのデータをmkv形式に変換できるものの、 やはり一々mkv形式に変換しなければいけないというのは面倒なので、 もう少しなんとかならないかと、libbluray + libaacs を試してみた。 [[libbluray:https://www.videolan.org/developers/libbluray.html]]と [[libaacs:https://www.videolan.org/developers/libaacs.html]]は VLCを公開しているVideoLanプロジェクトが開発しているライブラリで、 libblurayがBDディスクの構造解析、libaacsがAACS暗号を解読する機能を担っているらしい。 両者とも開発版のコードはgitで提供されているようなので、 まずはlibblurayのコードをgit cloneで持ってきてビルドしようとしたところ、 "Apache Ant"というJava用のビルドシステムが無い、旨のエラーになる。 じゃあ、"Apache Ant"を入れるか、、と試したら、Javaの開発環境が必要、ということで、 結局 OpenJDK が公開しているJava開発環境を入れた上でApache Antをインストールし、 ようやくlibblurayがビルドできた。 libblurayのコード自体はC++みたいなのに、なんでJavaな開発環境が必要なんだろ、、と調べたところ、 どうやらBDには対話的なメニューやゲーム等を提供する機能があって、 その部分がJavaになっているので、BD対応用のライブラリであるlibblurayもJavaに対応する必要があるらしい。 libaacsはKEYDB.cfgというキーファイルが必要ということで、それもダウンロードしておく。 KEYDB.cfgはprocessing keyとHost certificate、disc VUK keyという3種のデータが並んだ、 かなり大きなファイル。詳しくは調べてないけど、processing keyとHost certificateが公開 鍵と秘密鍵みたいなものなもので、これらがきちんと機能すれば全てのBD discを読めるものの、 漏洩した鍵は定期的に無効にされるため、disc VUK keyというBD discごとのIDも用意しておく 必要があるらしい。 libblurayに付属の bd_info というコマンドで、BDの情報を確認してみるとこんな感じ。 $ bd_info /dev/sr1 Using libbluray version 1.0.2 aacs.c:546: Error calculating media key. Missing right processing key ? Volume Identifier : GUP_TV_AND_OVA_51CH_BDBOX_D1 BluRay detected : yes First Play supported: yes Top menu supported : yes HDMV titles : 6 BD-J titles : 0 UNSUPPORTED titles : 0 BD-J detected : no AACS detected : yes libaacs detected : yes Disc ID : 3CA717B91B1FEB9EB36AF86FB92730B8EDDDA653 AACS MKB version : 65 AACS handled : yes BD+ detected : no Application info: initial mode preference : 2D 3D content exists : No video format : ignored (0x0) frame rate : ignored (0x0) provider data : ' ' Disc library metadata: Metadata file : bdmt_jpn.xml Language : jpn Disc name : ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1 Alternative : <undefined> Disc # : <undefined>/<undefined> TOC count : 0 Thumbnail count : 2 ./GuP_51ch_BOX_META_S.jpg 416x240 ./GuP_51ch_BOX_META_L.jpg 640x360 一応、内容は認識できている感じ。 こうして用意したlibblurayとlibaacsを組み込むように、 vlc-3.0.3とmpv-0.29.1をビルドしてみた。 試行錯誤の過程は省いて結論だけ述べると、 vlcでは[メディア]=>[ディスク]=>[ブルーレイ]/[ディスクデバイス]を指定してやると、 しばらくBDを読み込んでなにやらやっているものの、 タイトルロゴしか表示できなかった。 #ref("vlc_BD.jpg") [ツール]=>[メッセージ]で出力レベルを「デバッグ」にしたら、こんな感じのログが取れた。 main debug: incoming request - stopping current input main debug: removing module "libbluray" libbluray info: Closing overlays. main debug: dead input main debug: processing request item: bluray:///dev/sr1, node: プレイリスト, skip: 0 main debug: rebuilding array of current - root プレイリスト main debug: rebuild done - 2 items, index 1 main debug: starting playback of new item main debug: resyncing on bluray:///dev/sr1 main debug: bluray:///dev/sr1 is at 1 main debug: creating new input thread main debug: Creating an input for 'bluray:///dev/sr1' main debug: requesting art for new input thread main debug: looking for meta fetcher module matching "any": 1 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher main debug: no meta fetcher modules matched main debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art main debug: no art finder modules matched main debug: looking for meta fetcher module matching "any": 1 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher main debug: no meta fetcher modules matched main debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac main debug: using timeshift granularity of 50 MiB main debug: using default timeshift path main debug: `bluray:///dev/sr1' gives access `bluray' demux `any' path `/dev/sr1' main debug: creating demux: access='bluray' demux='any' location='/dev/sr1' file='/dev/sr1' main debug: looking for access_demux module matching "bluray": 15 candidates lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art main debug: no art finder modules matched qt debug: IM: Deleting the input qt debug: IM: Setting an input qt debug: IM: Deleting the input qt debug: IM: Setting an input libbluray info: First play: 1, Top menu: 1 HDMV Titles: 6, BD-J Titles: 0, Other: 0 libbluray debug: Disc is using AACS libbluray debug: Selecting Title 0 main debug: using access_demux module "libbluray" main debug: creating demux: access='' demux='ts' location='' file='(null)' main debug: looking for demux module matching "ts": 48 candidates main debug: no demux modules matched main debug: attempt to destroy nonexistent variable "title 0" main debug: attempt to destroy nonexistent variable "title 1" main debug: attempt to destroy nonexistent variable "title 2" main debug: attempt to destroy nonexistent variable "title 3" main debug: attempt to destroy nonexistent variable "title 4" main debug: attempt to destroy nonexistent variable "title 5" main debug: looking for meta reader module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/reader lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader main debug: no meta reader modules matched main debug: `bluray:///dev/sr1' successfully opened main debug: creating demux: access='' demux='ts' location='' file='(null)' main debug: looking for demux module matching "ts": 48 candidates main debug: no demux modules matched イマイチこのログをどう読むのかは分かってないのだけれど、 libblurayが対象のBDをAACS使用と認識し、 AACSをデコードするためのdemuxを探したものの "no demux modules matched"で再生できなかった、 って感じかな。 一方、mpvとそれをバックエンドにしているsmplayerでは、 メニューの[ディスクを開く]からでは再生できなかったものの、 起動時の引数として直接 "bd:////dev/sr1" みたいな URL を指定してやれば再生できた。 #ref("smplayer_BD.jpg") URLの指定方法は bd://[track_no]//[device_name] みたいな感じで、 再生したいトラック番号が分かっていれば直接それを指定できるし、 track_noを指定しなければディスクの頭から再生するらしい。 手元ではBDドライブは/dev/sr1にしているので、 最初から再生する場合は "smplayer bd:////dev/sr1" という形になる模様。 UIの無いmpvでは確認できなかったけど、smplayerならば字幕の有無とか、 オーディオコメンタリーなトラックの選択もできたので、 メニューが無いことを除けば、とりあえず再生はできてる感じ。 #ref("smplayer_BD2.jpg") 「やったー、OSSなソフトだけでBDが再生できた!!」と喜んだのも束の間、 大きな落とし穴が待ち構えていたのであった。。([[続く:http://plamo.linet.gr.jp/index.html/index.php?diary%2FKojima%2F2019-02-18]]) #comment
タイムスタンプを変更しない
[[diary/Kojima]] ・LinuxでのBluray Disc再生の現状(その2) 試行錯誤していたので、ずいぶん間が空いちゃったけど、とりあえず「その2」。 前回紹介したように、MakeMKVを使えば Linux 上でも AACSで暗号化されたBDディスクのデータをmkv形式に変換できるものの、 やはり一々mkv形式に変換しなければいけないというのは面倒なので、 もう少しなんとかならないかと、libbluray + libaacs を試してみた。 [[libbluray:https://www.videolan.org/developers/libbluray.html]]と [[libaacs:https://www.videolan.org/developers/libaacs.html]]は VLCを公開しているVideoLanプロジェクトが開発しているライブラリで、 libblurayがBDディスクの構造解析、libaacsがAACS暗号を解読する機能を担っているらしい。 両者とも開発版のコードはgitで提供されているようなので、 まずはlibblurayのコードをgit cloneで持ってきてビルドしようとしたところ、 "Apache Ant"というJava用のビルドシステムが無い、旨のエラーになる。 じゃあ、"Apache Ant"を入れるか、、と試したら、Javaの開発環境が必要、ということで、 結局 OpenJDK が公開しているJava開発環境を入れた上でApache Antをインストールし、 ようやくlibblurayがビルドできた。 libblurayのコード自体はC++みたいなのに、なんでJavaな開発環境が必要なんだろ、、と調べたところ、 どうやらBDには対話的なメニューやゲーム等を提供する機能があって、 その部分がJavaになっているので、BD対応用のライブラリであるlibblurayもJavaに対応する必要があるらしい。 libaacsはKEYDB.cfgというキーファイルが必要ということで、それもダウンロードしておく。 KEYDB.cfgはprocessing keyとHost certificate、disc VUK keyという3種のデータが並んだ、 かなり大きなファイル。詳しくは調べてないけど、processing keyとHost certificateが公開 鍵と秘密鍵みたいなものなもので、これらがきちんと機能すれば全てのBD discを読めるものの、 漏洩した鍵は定期的に無効にされるため、disc VUK keyというBD discごとのIDも用意しておく 必要があるらしい。 libblurayに付属の bd_info というコマンドで、BDの情報を確認してみるとこんな感じ。 $ bd_info /dev/sr1 Using libbluray version 1.0.2 aacs.c:546: Error calculating media key. Missing right processing key ? Volume Identifier : GUP_TV_AND_OVA_51CH_BDBOX_D1 BluRay detected : yes First Play supported: yes Top menu supported : yes HDMV titles : 6 BD-J titles : 0 UNSUPPORTED titles : 0 BD-J detected : no AACS detected : yes libaacs detected : yes Disc ID : 3CA717B91B1FEB9EB36AF86FB92730B8EDDDA653 AACS MKB version : 65 AACS handled : yes BD+ detected : no Application info: initial mode preference : 2D 3D content exists : No video format : ignored (0x0) frame rate : ignored (0x0) provider data : ' ' Disc library metadata: Metadata file : bdmt_jpn.xml Language : jpn Disc name : ガールズ&パンツァー TV&OVA 5.1ch Blu-ray Disc BOX 1 Alternative : <undefined> Disc # : <undefined>/<undefined> TOC count : 0 Thumbnail count : 2 ./GuP_51ch_BOX_META_S.jpg 416x240 ./GuP_51ch_BOX_META_L.jpg 640x360 一応、内容は認識できている感じ。 こうして用意したlibblurayとlibaacsを組み込むように、 vlc-3.0.3とmpv-0.29.1をビルドしてみた。 試行錯誤の過程は省いて結論だけ述べると、 vlcでは[メディア]=>[ディスク]=>[ブルーレイ]/[ディスクデバイス]を指定してやると、 しばらくBDを読み込んでなにやらやっているものの、 タイトルロゴしか表示できなかった。 #ref("vlc_BD.jpg") [ツール]=>[メッセージ]で出力レベルを「デバッグ」にしたら、こんな感じのログが取れた。 main debug: incoming request - stopping current input main debug: removing module "libbluray" libbluray info: Closing overlays. main debug: dead input main debug: processing request item: bluray:///dev/sr1, node: プレイリスト, skip: 0 main debug: rebuilding array of current - root プレイリスト main debug: rebuild done - 2 items, index 1 main debug: starting playback of new item main debug: resyncing on bluray:///dev/sr1 main debug: bluray:///dev/sr1 is at 1 main debug: creating new input thread main debug: Creating an input for 'bluray:///dev/sr1' main debug: requesting art for new input thread main debug: looking for meta fetcher module matching "any": 1 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher main debug: no meta fetcher modules matched main debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art main debug: no art finder modules matched main debug: looking for meta fetcher module matching "any": 1 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher main debug: no meta fetcher modules matched main debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac main debug: using timeshift granularity of 50 MiB main debug: using default timeshift path main debug: `bluray:///dev/sr1' gives access `bluray' demux `any' path `/dev/sr1' main debug: creating demux: access='bluray' demux='any' location='/dev/sr1' file='/dev/sr1' main debug: looking for access_demux module matching "bluray": 15 candidates lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art main debug: no art finder modules matched qt debug: IM: Deleting the input qt debug: IM: Setting an input qt debug: IM: Deleting the input qt debug: IM: Setting an input libbluray info: First play: 1, Top menu: 1 HDMV Titles: 6, BD-J Titles: 0, Other: 0 libbluray debug: Disc is using AACS libbluray debug: Selecting Title 0 main debug: using access_demux module "libbluray" main debug: creating demux: access='' demux='ts' location='' file='(null)' main debug: looking for demux module matching "ts": 48 candidates main debug: no demux modules matched main debug: attempt to destroy nonexistent variable "title 0" main debug: attempt to destroy nonexistent variable "title 1" main debug: attempt to destroy nonexistent variable "title 2" main debug: attempt to destroy nonexistent variable "title 3" main debug: attempt to destroy nonexistent variable "title 4" main debug: attempt to destroy nonexistent variable "title 5" main debug: looking for meta reader module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/kojima/.local/share/vlc/lua/meta/reader lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader main debug: no meta reader modules matched main debug: `bluray:///dev/sr1' successfully opened main debug: creating demux: access='' demux='ts' location='' file='(null)' main debug: looking for demux module matching "ts": 48 candidates main debug: no demux modules matched イマイチこのログをどう読むのかは分かってないのだけれど、 libblurayが対象のBDをAACS使用と認識し、 AACSをデコードするためのdemuxを探したものの "no demux modules matched"で再生できなかった、 って感じかな。 一方、mpvとそれをバックエンドにしているsmplayerでは、 メニューの[ディスクを開く]からでは再生できなかったものの、 起動時の引数として直接 "bd:////dev/sr1" みたいな URL を指定してやれば再生できた。 #ref("smplayer_BD.jpg") URLの指定方法は bd://[track_no]//[device_name] みたいな感じで、 再生したいトラック番号が分かっていれば直接それを指定できるし、 track_noを指定しなければディスクの頭から再生するらしい。 手元ではBDドライブは/dev/sr1にしているので、 最初から再生する場合は "smplayer bd:////dev/sr1" という形になる模様。 UIの無いmpvでは確認できなかったけど、smplayerならば字幕の有無とか、 オーディオコメンタリーなトラックの選択もできたので、 メニューが無いことを除けば、とりあえず再生はできてる感じ。 #ref("smplayer_BD2.jpg") 「やったー、OSSなソフトだけでBDが再生できた!!」と喜んだのも束の間、 大きな落とし穴が待ち構えていたのであった。。([[続く:http://plamo.linet.gr.jp/index.html/index.php?diary%2FKojima%2F2019-02-18]]) #comment
テキスト整形のルールを表示する
添付ファイル:
vlc_BD.jpg
201件
[
詳細
]
smplayer_BD.jpg
222件
[
詳細
]
smplayer_BD2.jpg
208件
[
詳細
]