下面是针对“关于Windows10环境下编译Python3版pjsua库的问题”的完整攻略:
1. 准备工作
在开始编译之前,需要软件和库的支持。以下是需要的软件和库:
Python和Pip
需要安装Python 3.x版本和对应的pip包管理器。可以从官方网站(https://www.python.org/downloads/windows/)下载Python 3.x版本的安装包。安装完成后,运行以下命令来安装pip:
python get-pip.py
Visual Studio
需要安装Visual Studio工具和C++编译器。可以从官方网站(https://visualstudio.microsoft.com/downloads/)下载Visual Studio 2019 Community版。
PJSIP
需要下载PJSIP的最新源代码(https://www.pjsip.org/download.htm)。这里以2.10版本为例。
2. 安装Python包
在Windows命令行中,运行以下命令来安装python库:
pip install wheel
pip install cffi
3. 编译PJSIP
3.1 配置
首先需要在PJSIP源代码根目录下创建一个新的环境变量,名为APP_PLATFORM
,内容为winstore
。在Windows命令行下进入PJSIP根目录,运行以下命令:
cd <pjsip_source_folder>
python configure.py --disable-video --disable-lua --disable-sound --disable-ssl --disable-g7221codec --disable-opencore-amr --disable-speex-aec --disable-resample --disable-speex-codec --prefix="path/to/pjsip/install/folder" --enable-shared
注意:在以上命令中需要将
<pjsip_source_folder>
替换为你下载并解压后的实际PJSIP源代码路径。
其中--prefix
选项是设置PJSIP的安装目录,需要自定义设置为一个实际存在的目录。也可以使用默认路径,不添加该选项。
3.2 编译
可以使用Visual Studio的开发人员命令提示符来编译PJSIP。在Windows菜单栏中找到Visual Studio 2019的快捷方式,右键选择以管理员身份运行。在打开的命令提示符下输入以下命令:
cd <pjsip_source_folder>
msbuild /p:Platform=x86 /p:Configuration=Release pjproject.sln
注意:需要将
<pjsip_source_folder>
替换为实际PJSIP源代码路径。
编译完成后,可以在<pjsip_source_folder>\pjsip-apps\src\python
目录下找到编译好的_pjsua.pyd
文件,将其拷贝到Python的安装目录中。
4. 测试
可以在Python交互模式下测试_pjsua模块是否可用。在Windows命令行下输入python进入Python交互模式,输入以下代码:
from _pjsua import *
如果没有报错,则证明_pjsua模块加载成功。
5. 示例说明
以下是两个使用pjsua的简单示例,可以供参考:
示例1:拨打电话
import sys
import pjsua as pj
# Logging callback
def log_cb(level, str, len):
print(str),
# Create Endpoint
try:
ep = pj.Endpoint()
except pj.Error as e:
print("Exception: " + str(e))
ep = None
sys.exit(1)
# Initialize Endpoint
ep.libInit()
# Configuration
cfg = ep.libCreateDefaultConfig()
# UDP transport
transport = cfg.transportCreate(pj.TransportType.UDP)
# Start the library
ep.libStart()
# Create local SIP account
acc_cfg = pj.AccountConfig()
acc_cfg.idUri = "sip:192.168.0.100"
acc_cfg.regConfig.registrarUri = "sip:192.168.0.100"
acc_cfg.regConfig.timeoutSec = 400
acc = ep.createAccount(acc_cfg)
# Create call
call = acc.makeCall("sip:test@test.com")
# Wait for call to be answered
call.waitForAnswer(15000)
# Hangup
call.hangup()
示例2:接受电话
import sys
import pjsua as pj
# Logging callback
def log_cb(level, str, len):
print(str),
# Create Endpoint
try:
ep = pj.Endpoint()
except pj.Error as e:
print("Exception: " + str(e))
ep = None
sys.exit(1)
# Initialize Endpoint
ep.libInit()
# Configuration
cfg = ep.libCreateDefaultConfig()
# UDP transport
transport = cfg.transportCreate(pj.TransportType.UDP)
# Start the library
ep.libStart()
# Create local SIP account
acc_cfg = pj.AccountConfig()
acc_cfg.idUri = "sip:192.168.0.100"
acc_cfg.regConfig.registrarUri = "sip:192.168.0.100"
acc_cfg.regConfig.timeoutSec = 400
acc = ep.createAccount(acc_cfg)
# Callback for incoming call
def onIncomingCall(call):
call.answer(200)
# Register call callback
acc.setCallback(pj.AccountCallback())
acc.callback.onIncomingCall = onIncomingCall
# Wait for call
ep.libHandleEvents(10000)
以上就是使用Windows10环境下编译Python3版pjsua库的完整攻略及示例说明。如果还有其他问题,请在评论区留言,我会为你解答。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于windos10环境下编译python3版pjsua库的问题 - Python技术站