悸村です。

青木@名古屋さん、ご助言をありがとうございます。

> 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&section=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]

Reply via email to