悸村です。 青木@名古屋さん、ご助言をありがとうございます。
> FreshPortsでデフォルトの依存関係を見る限り、smplayerも再生自体には > mpvを使っているのは同じですし、最初のメールのエラーメッセージの > Tracebackでコケているところがmpv_detach_destroyというシンボルが > 定義されていないというものなので、恐らくmpvを呼び出そうとして > 失敗した後処理でクラッシュしているくさいですね。 mpv.py というファイルに対する変更を diffutils で探ってみました。 pkg のバイナリを主に利用しています。FreeBSD-3.3-p2 (amd64) です。 hypnotics のソースは github で開発されているようで、 git clone で 入手できるのですが、LinuxMint のサイトでも配布されているようです。 https://github.com/linuxmint/hypnotix http://packages.linuxmint.com/search.php?release=any§ion=any&keyword=hypnotix で、LinuxMint の .deb ファイルを入手し、2.9 と 3.2 の差分を取り、 加筆ぶんを mpv.py に適用したら、 FreeBSD の hypnotix -2.9 は 起動するようになりました。実行ファイル = python のスクリプトで作業 した (作業してしまった) 結果です。 ( /usr/local/lib/hypnotix/mpv.py ) FreeBSD ports のスケルトンに対する改変は未実行です。 hypnotix が使用する Free-TV なる IPTV ですが、hypnotix の サイトでは、"legal" (合法的) と見ている旨、書かれているのですが、 日本国内の TV に関する法律 (放送法、著作権法など) でどうなるのか、はっきり 理解できない状況ではないでしょうか。 ( 前出: https://github.com/linuxmint/hypnotix) 参照: インターネットサイマル配信、サイマル放送等 -- 悸村成一 25行の hypnotix ソース・ファイルの差分なので、合法な差分と考え、最後に転記しておきます。 タブが2個、含まれています (1行め、2行め - file 名の後ろ)。 diff.mpv.py-2.9-to-3.2 --- 2.9/src/usr/lib/hypnotix/mpv.py 2022-07-24 19:13:16.000000000 +0900 +++ 3.2/src/usr/lib/hypnotix/mpv.py 2023-01-07 01:36:05.000000000 +0900 @@ -525,10 +525,12 @@ backend.mpv_create.restype = MpvHandle _mpv_create = backend.mpv_create +_API_VER = _mpv_client_api_version()[0] + +_handle_func('mpv_destroy' if _API_VER > 1 else 'mpv_detach_destroy', [], None, errcheck=None) _handle_func('mpv_create_client', [c_char_p], MpvHandle, notnull_errcheck) _handle_func('mpv_client_name', [], c_char_p, errcheck=None) _handle_func('mpv_initialize', [], c_int, ec_errcheck) -_handle_func('mpv_detach_destroy', [], None, errcheck=None) _handle_func('mpv_terminate_destroy', [], None, errcheck=None) _handle_func('mpv_load_config_file', [c_char_p], c_int, ec_errcheck) _handle_func('mpv_get_time_us', [], c_ulonglong, errcheck=None) @@ -881,7 +883,7 @@ self._message_handlers[target](*args) if eid == MpvEventID.SHUTDOWN: - _mpv_detach_destroy(self._event_handle) + _mpv_destroy(self._event_handle) if _API_VER > 1 else _mpv_detach_destroy(self._event_handle) return except Exception as e: [EOF]