码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python3使用pjsua进行呼叫测试


    环境:CentOS 7.6_x64   
    Python版本 :3.9.12
    pjsip版本:2.13
     
    之前写过一篇CentOS7环境编译python3.9版本pjsua的文章:
    https://www.cnblogs.com/MikeZhang/p/centos7py39pjsua20230608.html
    在上篇文章中我着重介绍了怎样编译python3.9版本的pjsua库,并演示了如何使用,今天记录下CentOS7环境下python3.9使用pjsua作为uas或uac,对接FreeSWITCH进行呼叫测试的过程,并提供示例代码及相关资源下载,可从如下渠道获取:
    关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    一、关键点描述

     1、音频设备设置

    CentOS7虚拟机没有音频设备,可以通过set_null_snd_dev来避免pjsua模块报错。

    2、编码设置

    可以通过set_codec_priority函数来设置编码的优先级,避免编码问题导致呼叫失败。
    pjsua支持的编码列表如下:
    复制代码
    speex/8000/1
    speex/32000/1
    iLBC/8000/1
    GSM/8000/1
    PCMU/8000/1
    PCMA/8000/1
    G722/16000/1
    opus/48000/2
    G729/8000/1
    L16/44100/1
    L16/44100/2
    复制代码
    具体可参考如下文档:
    https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA

     

    3、自动播放声音文件

    1)通过 create_player 函数创建playerId;
    2)通过player_get_slot函数获取slot;
    3)通过call对象获取呼叫的slot;
    4)然后conf_connect进行连接两个slot连接,进而实现音频播放。
     
    具体参考这里:
    https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA

      

    二、具体实现

     1、作为uac进行测试

    需要作为分机注册到FreeSWITCH,示例如下:
    acc = lib.create_account(pj.AccountConfig("192.168.137.32:5060", "1012", "0000"))

    代码如下:

     完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    2、作为uas进行测试

    1)编写UAS脚本
    需要指定sip服务端口,示例如下:
    tp= lib.create_transport(pj.TransportType.UDP,pj.TransportConfig(55081))
    lib.start()

    代码如下:

     完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    2)编写拨号方案
    复制代码
    <extension name="pjsua_uas_test">
        <condition field="destination_number" expression="^123$">
             <action application="set" data="hangup_after_bridge=true"/>
             <action application="bridge" data="sofia/external/123@192.168.137.32:55081"/>
        condition>
    extension>
    复制代码

    三、运行效果

    1、uac测试效果

    1)启动FreeSWITCH;
    2)运行uac脚本注册分机;
    source /root/py39env/env.sh
    /root/py39env/bin/python3.9 uac.py
    3)使用软电话注册分机;
    4)使用软电话拨打uac分机; 
    预期效果:
    软电话可听到uac分机播放的音频。

     运行效果视频获取途径:

    关注微信公众号(聊聊博文,文末可扫码)后回复 2023062201 获取。 

    2、uas测试效果

    1)启动FreeSWITCH;
    2)编写拨号方案;
    3)运行uas脚本启动服务;
    source /root/py39env/env.sh
    /root/py39env/bin/python3.9 uas.py
    4)使用软电话注册分机;
    5)使用软电话拨打接入号验证;
    预期效果:
    软电话可听到uas播放的音频。

    运行效果视频获取途径:

    关注微信公众号(聊聊博文,文末可扫码)后回复 2023062202 获取。 

    四、资源获取

    本文涉及源码和文件,可以从如下途径获取:
    关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

  • 相关阅读:
    docker——知识点回顾(2)
    java常见微服务架构
    IP地址在各行业中的应用场景
    【毕业设计】58-基于51单片机的智能语音密码锁设计(原理工程+PCB工程+仿真工程+源代码+答辩论文+实物图)
    WebSocket的使用,前后端发送消息的例子
    LeetCode 362. Design Hit Counter(计数器)
    【无人机】基于粒子群优化干扰受限下无人机群辅助网络附matlab代码
    基于SCL语言的模拟量平均值滤波FB库功能介绍及创建FB库的具体方法
    智能车电磁组元素处理(圆环、三岔、路障)
    Day 46 | 139.单词拆分 & 多重背包理论基础 & 背包问题总结
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/pyPjsuaExample20230623.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号