環境:CentOS 7.6_x64 Python版本 :3.9.12 pjsip版本:2.13 一、背景描述 pjsip地址:https://www.pjsip.org/ GitHub地址:https://github.com/pjsip/pjproject pjsip文檔地址:https://do ...
環境:CentOS 7.6_x64
Python版本 :3.9.12
pjsip版本:2.13
一、背景描述
pjsip地址:https://www.pjsip.org/
GitHub地址:https://github.com/pjsip/pjproject
pjsip文檔地址:https://docs.pjsip.org/en/latest/
最新版本:2.13
pjsip是一個功能強大的sip協議棧和媒體處理庫,MicroSIP軟電話就是基於pjsip實現的,功能很強大。
其中的pjsua可以實現軟電話的基礎功能,在日常開發中可以作為uas或uac輔助開發,但pjsua預設綁定的python版本是python 2.4,使用起來有諸多限制,希望可以使用python3調用pjsua庫。
之前寫過在windows10環境下編譯python3版本的pjsua:
這裡記錄下centos7環境編譯pjsua的過程及註意事項,並提供預編譯二進位文件下載,可通過如下途徑獲取:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20230608 獲取。
這裡使用 Python 3.9.12 版本,具體編譯過程可參考這篇文章:
二、具體實現
1、替換文件
官方給的代碼不支持python3,需要使用第三方代碼:
https://github.com/mgwilliams/python3-pjsip.git
下載之後,替換該目錄 pjsip-apps/src/python,或使用軟鏈接:
cp python3-pjsip.tar.gz pjproject-2.13/pjsip-apps/src/ cd pjproject-2.13/pjsip-apps/src/ mv python python_bak tar zxvf python3-pjsip.tar.gz ln python3-pjsip -s python
2、編譯pjsip
編譯pjsip時需要添加 -fPIC 選項
目錄:pjproject-2.13
編譯pjsip命令:
./configure CFLAGS="$CFKAGS -fPIC" make dep && make
3、編譯python3版本pjsua
目錄:pjproject-2.13/pjsip-apps/src/python
編譯腳本:
vim doBulild.sh
執行如下命令:
chmod a+x doBuild.sh
./doBulild.sh
ls build/lib.linux-x86_64-cpython-39/
編譯過程視頻獲取途徑:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 2023060801 獲取。
三、運行效果
1、環境準備
python3.9的env.sh文件,位置:/root/py39env/env.sh
內容:
#! /bin/bash pydir=/root/py39env export CFLAGS="-I$pydir/include" export LDFLAGS="-L$pydir/lib" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$pydir/lib
執行如下命令:
source /root/py39env/env.sh
2、導入測試
導入測試成功:
3、註冊測試
示例代碼路徑:
pjproject-2.13/pjsip-apps/src/python/samples
示例文件:registration.py
修改埠及註冊信息:
完整源碼獲取途徑:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20230608 獲取。
註冊測試:
四、資源下載
本文涉及源碼和文件,可以從如下途徑獲取:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20230608 獲取。
![](https://files.cnblogs.com/files/MikeZhang/201804weixingongzhong1.gif)