[[diary/Kojima]] ・LinuxでのBluray Disc再生の現状(その3) 前回紹介したように、smplayer/mpvならば bd:////dev/sr1 というURL指定で Blurayメディアが再生できるようになったはずなのに、 日を改めて再度試すと「MPlayer/mpvは予期せず終了しました。終了コード:2」という メッセージでエラー終了してしまう。 #ref("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あたりで直接試聴する、 でBDドライブを初期化して、後はsmplayerあたりで直接視聴する、 というのが精神衛生上もよろしかろうということで。 - もっとも、このあたりはAACSの仕組み上、BDメディアやドライブ(のfirmware)が絡んでくるので、お使いの環境によって状況は変わるだろうことは為念。 -- [[kojima]] &new{2019-02-17 (日) 15:47:07}; #comment