我试图在python中通过pjsua2使用pjsip。 我的线程有问题
import pjsua2 as pj
import threading
# pjsua2 test function
def pjsua2_test():
# Create and initialize the library
ep = pj.Endpoint()
ep.libCreate()
if __name__ == "__main__":
pjsuadaemonthread = threading.Thread(name='PJSUA',
target=pjsua2_test)
pjsuadaemonthread.start()
ep = pj.Endpoint()
ep.libHandleEvents(10)
我得到这个错误:
python3: ../src/pj/os_core_unix.c:692: pj_thread_this: Assertion `!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."' failed.
如何从python调用pj_thread_register()
这是pj_thread_register()的语法:
不幸的是,即使调用libRegisterThread,它似乎也与python线程不兼容
我认为这是因为pjsip在内部使用pj_thread_t类型的线程,而python线程不是pj_thread_t类型
有关更多信息,请查看pjsip源代码中的Endpoint::libRegisterThread
但是,如果您只想在不同的线程上运行pjsip,下面的代码可能会有所帮助。它在名为“PJSUA-thread”的后台线程上运行pjsip。关键是在不同的线程上调用libCreate(),如下所示
这是日志输出。您可以看到pjsip正在PJSUA-thread线程上运行
相关问题 更多 >
编程相关推荐