diary/Kojima

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

前回紹介したように、smplayer/mpvならば bd:////dev/sr1 というURL指定で Blurayメディアが再生できるようになったはずなのに、 日を改めて再度試すと「MPlayer/mpvは予期せず終了しました。終了コード:2」という メッセージでエラー終了してしまう。

smplayer_ng.jpg

エラーログはこんな感じ。

/usr/bin/mpv --no-config --no-quiet --terminal --no-msg-color
   --input-file=/dev/stdin --msg-level=ffmpeg/demuxer=error --no-fs
   --hwdec=no --sub-auto=fuzzy --no-input-default-bindings
   --input-vo-keyboard=no --no-input-cursor --cursor-autohide=no
   --no-keepaspect --wid=62914577 --monitorpixelaspect=1 --osd-level=1
   --osd-scale=1 --osd-bar-align-y=0.6 --sub-ass --embeddedfonts
   --sub-ass-line-spacing=0 --sub-scale=1 --sub-font=Arial
   --sub-color=#ffffffff --sub-shadow-color=#ff000000
   --sub-border-color=#ff000000 --sub-border-size=0.75 --sub-shadow-offset=2.5
   --sub-font-size=50 --sub-bold=no --sub-italic=no --sub-codepage=ISO-8859-1
   --vid=1 --aid=2 --sid=1 --secondary-sid=1 --sub-pos=100 --volume=86
   --cache=auto --start=668 --screenshot-template=cap_%F_%p_%02n
   --screenshot-format=jpg
   --screenshot-directory=/home/kojima/画像/smplayer_screenshots
   --audio-pitch-correction=yes --volume-max=110
   --term-playing-msg=MPV_VERSION=${=mpv-version:}
INFO_VIDEO_WIDTH=${=width}
INFO_VIDEO_HEIGHT=${=height}
INFO_VIDEO_ASPECT=${=video-aspect}
INFO_VIDEO_FPS=${=container-fps:${=fps}}
INFO_VIDEO_FORMAT=${=video-format}
INFO_VIDEO_CODEC=${=video-codec}
INFO_AUDIO_FORMAT=${=audio-codec-name}
INFO_AUDIO_CODEC=${=audio-codec}
INFO_AUDIO_RATE=${=audio-params/samplerate}
INFO_AUDIO_NCH=${=audio-params/channel-count}
INFO_LENGTH=${=duration:${=length}}
INFO_DEMUXER=${=current-demuxer:${=demuxer}}
INFO_SEEKABLE=${=seekable}
INFO_TITLES=${=disc-titles}
INFO_CHAPTERS=${=chapters}
INFO_TRACKS_COUNT=${=track-list/count}
METADATA_TITLE=${metadata/by-key/title:}
METADATA_ARTIST=${metadata/by-key/artist:}
METADATA_ALBUM=${metadata/by-key/album:}
METADATA_GENRE=${metadata/by-key/genre:}
METADATA_DATE=${metadata/by-key/date:}
METADATA_TRACK=${metadata/by-key/track:}
METADATA_COPYRIGHT=${metadata/by-key/copyright:}
INFO_MEDIA_TITLE=${=media-title:}
INFO_STREAM_PATH=${stream-path}
 --audio-client-name=SMPlayer --term-status-msg=STATUS: ${=time-pos} / ${=duration:${=length:0}}
 P: ${=pause} B: ${=paused-for-cache} I: ${=core-idle}
 VB: ${=video-bitrate:0} AB: ${=audio-bitrate:0} bd:////dev/sr1
Playing: bd:////dev/sr1
aacs.c:546: Error calculating media key. Missing right processing key ?
[bd] AACS error: no matching processing key
No protocol handler found to open URL bd:////dev/sr1
The protocol is either unsupported, or was disabled at compile-time.
Exiting... (Errors when loading file)

「あれれ、、昨日まではちゃんと再生できてたのに何で??」と首をひねりつつ、 ライブラリや環境変数、PATH等を確認するも異常なし。

「じゃぁ、makemkvだと?」と、modprobe sg してから makemkv を実行すると、 makemkv からは問題なくディスクを読み込める。

「えー、なんで??」と首を傾げつつ、smplayerで試すと、 今度はちゃんとBDを読み込んで、前回同様に再生できるようになった。

再生できるようになったログ(コンソールに出力される)はこんな感じで、 "aacs.c:546: Error calculating media key. Missing right processing key ?" というエラーは再生できなかった場合と同様に出力されているものの、 その後は"[bd] List of available titles:"、 "[bd] idx: 0 duration: 00:00:00 (playlist: 0001"、 という形でメディアを読み出せている。

Debug: SMPlayer::processArgs: arguments: 2
Debug: SMPlayer::processArgs: 0 = smplayer
Debug: SMPlayer::processArgs: 1 = bd:////dev/sr1
Debug: SMPlayer::processArgs: files_to_play: count: 1
Debug: SMPlayer::processArgs: files_to_play[0]: 'bd:////dev/sr1'
Debug: SMPlayer::gui: changed working directory to app path
Debug: SMPlayer::gui: current directory: /usr/bin
Debug: Screen::setAutoHideCursor: 0
Debug: Screen::setAutoHideCursor: 0
Debug: Images::setTheme: "H2O" is an internal theme
Debug: Images::setThemesPath: ""
Debug: MediaSettings::reset
Debug: Core::changeFileSettingsMethod: hash
Debug: PlayerID::Player: player_bin: "/usr/bin/mpv" filename: "mpv"
...skipping...
Debug: BaseGui::checkStayOnTop
 Debug: MPVProcess::parseLine: "aacs.c:546: Error calculating media key. Missing right processing key ?"
Debug: BaseGuiPlus::updateShortcutsContext
Debug: BaseGui::checkReminder
Debug: MPVProcess::parseLine: "[bd] List of available titles:"
Debug: MPVProcess::parseLine: "[bd] idx:   0 duration: 00:00:00 (playlist: 00010.mpls)"
Debug: MPVProcess::parseLine: "[bd] idx:   1 duration: 01:36:59 (playlist: 00001.mpls)"
Debug: MPVProcess::parseLine: "[bd] idx:   2 duration: 00:00:00 (playlist: 00011.mpls)"
....

あれこれ試してみたところ、どうやらシステムを再起動してしまうと、 一度makemkvを実行しない限り、smplayerでBDが再生できる状態にはならないらしい。

一方、一度smplayerで再生できるようになると、 別のディスクに取り替えても問題なく再生できるし、 suspend/resumeしても、その状態は変わらない。

これらを合わせ考えると、 どうやら makemkv はBDメディアを読み出すだけではなく、 ドライブ(のfirmware?)に対しても何らかの処理を施して、 AACSの復号化を容易にしているような感じ。 一度その処理を施されたドライブは、 再起動して初期化されるまではその状態を維持し続けるのだろう。

ということで、LinuxでBDメディアを再生するには、smplayer/mpvを使う場合でも、 makemkvの手を借りる必要がある、というのが現状での結論。

「その1」でも触れたように、 makemkvはコアの部分は非公開なsharewareなものの、 GUIはソースコードを公開しているし、 コアの部分のAPIもlibmmbd.so経由で外部から使えるらしいから、 ずいぶん良心的なソフトだと感じているので、 試用期間を延長するためのコードを毎月入力するよりも、 ちゃんとレジストレーション(6256円+消費税500円 らしい)して、 Linux版の開発を支援した方がいいかな、、と思っているところ。

まぁ、厳密に言うと、正当に入手したBDメディアでも、 AACSを解除してMKV形式に変換するのは、 日本の今の著作権法では違法になるので、

$ sudo modprobe sg
$ makemkvcon info dev:/dev/sr1

でBDドライブを初期化して、後はsmplayerあたりで直接視聴する、 というのが精神衛生上もよろしかろうということで。



添付ファイル: filesmplayer_ng.jpg 273件 [詳細]

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