pjsua manual 手册

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

pjsua帮助手册(中文)

原文地址 : http://www.pjsip.org/pjsua.htm

介绍

  PJSUA是一个开源的命令行SIP用户代理(软电话),用PJSIP协议,PJNATH,和PJMEDIA实现。 它虽然只有很简单的命令行界面,但是功能齐全。

SIP功能:

复制代码
    多个id(帐户注册);
    多个呼叫;
    支持IPv6(在1.2版本中添加);
    PRACK(100rel,RFC 3262);
    UPDATE (RFC 3311);
    OPTIONS;
    呼叫保持;
    呼叫转移;
    简单的PIDF和XPIDF的支持(订阅/通知,RFC 3265,3856,3863);
    自定义存在状态文本(RPID,RFC 4480);
    支持PUBLISH(RFC 3903);
    即时消息(消息)和消息组成指示(RFC 3428,3994);
    支持UDP,TCP和TLS传输;
    SIP服务器的DNS SRV(RFC 3263);
    带INFO的DTMF(RFC 2976);
    STUN(RFC 3489bis);
    AKA认证(开发中,RFC 3310,4169)。
复制代码

媒体功能:

复制代码
    多个并发调用;
    会议;
    支持Speex,iLBC,GSM,G711,G722,和L16编解码;
    宽带和超宽带编解码(Speex);
    通过Intel的IPP库支持更多编解码:AMR-WB,AMR-NB,G.722.1(Siren7),G.723.1,G.726,G.728,G.729A;
    立体声编解码(L16);
    WAV文件播放,流媒体和录制;
    支持RTCP协议;
    通话质量监测;
    RFC 2833;
    自动应答,自动播放文件,自动循环RTP;
    产生声音;
    AEC(Accoustic回声消除);
    自适应抖动缓冲器;
    自适应静音检测;
    PLC(包丢失隐藏);
    丢包模拟;
    每个RTP包中包含多个帧;
    支持SRTP(安全RTP)
复制代码

NAT功能:

复制代码
    ICE(互动式连接建立,最新ICE草案);
    STUN(最新的RFC3489双);
    TURN(最新草案);
    rport;
    SIP的TCP和TLS保持活动;
    自动检测和恢复SIP UDP地址的变更;
    自动检测ICE媒体传输的变化;
复制代码

程序使用

复制代码
用法:
   PJSUA [选项] [SIP的URL调用]

一般选项:
   --config-file=file     读取从文件的配置/参数;
   --help         显示此帮助屏幕;
   --version         显示版本信息;

日志记录选项:
    --log-file=fname    日志文件名(默认是stderr);
    --log-level=N       设置日志的最大级别为N(0(无)6(跟踪))(默认值= 5);
    --app-log-level=N   设置日志的最大水平为stdout显示(默认值= 4);
    --color             运用丰富多彩的日志(在Win32默认开启);
    --no-color          禁用丰富多彩的日志;
    --light-bg          使用白底黑字的颜色(默认是黑暗的背景);

SIP帐户选项:
    --use-ims           开启和这个账号相关的3GPP/IMS设置;
    --use-srtp=N        是否使用SRTP?  0:不使用, 1:可选, 2:强制使用 (默认:0);
    --srtp-secure=N     SRTP 是否需要安全的SIP? 0:不需要, 1:tls方式, 2:sips (默认:1);
    --registrar=url     设置注册服务器的URL;
    --id=url            设置本地账户的URL
    --contact=url       选择性的覆盖联系人信息
    --contact-params=S  给指定的联系URI添加S参数
    --proxy=url         可选择的访问代理服务器的URL                     
    --reg-timeout=SEC   注册时间间隔 (default 55)
    --realm=string      设置域
    --username=string   设置用户名
    --password=string   设置密码
    --publish           发PUBLISH
    --use-100rel        需要可靠的临时响应(100rel)
    --auto-update-nat=N n为0或1来启用/禁用SIP遍历后面对称NAT(默认1)
    --next-cred         添加其他凭据

SIP帐户控制:
    --next-account      添加更多的账户

传输选项:
    --ipv6              使用IPv6
    --local-port=port   端口
    --ip-addr=IP        ip地址
    --bound-addr=IP     绑定端口
    --no-tcp            禁用TCP传输
    --no-udp            禁用UDP传输
    --nameserver=NS     域名服务器
    --outbound=url      设置全局代理服务器的URL,可以指定多次
    --stun-srv=name     设置STUN服务器主机或域名

TLS选项:
    --use-tls           启用TLS传输(默认不开启)
    --tls-ca-file       指定TLS CA文件(默认为无)
    --tls-cert-file     指定TLS证书文件(默认为无)
    --tls-privkey-file  指定TLS私钥文件(默认值=无)
    --tls-password      指定TLS私钥文件密码(默认为无)
    --tls-verify-server 验证服务器的证书(默认=没有)
    --tls-verify-client 验证客户端的证书(默认=没有)
    --tls-neg-timeout   指定超时(默认值无)
    --tls-srv-name      指定TLS服务器名称为多宿主服务器(可选)

媒体选项:
    --add-codec=name    手工添加编解码(默认开启所有)
    --dis-codec=name    禁用某个编解码
    --clock-rate=N      覆盖会议桥时钟频率
    --snd-clock-rate=N  覆盖音频设备时钟频率
    --stereo            音频设备及会议桥开通立体声模式
    --null-audio        使用NULL音频设备
    --play-file=file    在会议桥中注册WAV文件
    --play-tone=FORMAT  向会议桥注册音调,格式是'F1,F2,ON,OFF',其中F1,F2为频率,
            ON,OFF=on/off ,可以指定多次。
    --auto-play         自动播放文件(仅来电)
    --auto-loop         自动循环传入RTP到传出RTP
    --auto-conf         自动加入会议
    --rec-file=file     录音文件(扩展名可以使.wav 或者 .mp3)
    --auto-rec          自动记录通话
    --quality=N         指定媒介质量(0-10,默认6)
    --ptime=MSEC        覆盖编解码器ptime的毫秒的
    --no-vad            停用VAD方案/沉默探测器(默认启用VAD)
    --ec-tail=MSEC      设置回波抵消尾长度(默认值256)
    --ec-opt=OPT        选择回波抵消算法(0 =默认,1 = SPEEX,2 =抑制)
    --ilbc-mode=MODE    设置iLBC语音编解码器模式(20或30,默认是30)
    --capture-dev=id    音频捕获的设备ID(默认值= -1)
    --playback-dev=id   音频播放设备ID(默认值= -1)
    --capture-lat=N     音频捕获延迟(毫秒,默认值= 100)
    --playback-lat=N    音频播放延迟(毫秒,默认值= 100)
    --snd-auto-close=N  闲置N秒后自动关闭音频设备
                      指定n = -1(默认)禁用此功能。
                      指定即时关闭不使用时,N = 0。
    --no-tones          禁用听见声音
    --jb-max-size       指定最大值抖动缓冲(帧,默认= 1)

媒体传输选项:
    --use-ice           使用ICE(默认:不使用)
    --ice-no-host       禁用ICE主机候选(默认:no)
    --ice-no-rtcp       禁用RTCP组件(默认:no)
    --rtp-port=N        RTP尝试端口基数(默认4000)
    --rx-drop-pct=PCT   Drop PCT percent of RX RTP (for pkt lost sim, default: 0)
    --tx-drop-pct=PCT   Drop PCT percent of TX RTP (for pkt lost sim, default: 0)
    --use-turn          Enable TURN relay with ICE (default:no)
    --turn-srv          TURN服务器的域或主机名称
    --turn-tcp          使用TCP连接到TURN服务器(默认:no)
    --turn-user         TURN用户名
    --turn-passwd       TURN密码

好友名单(可以是多个):
    --add-buddy url     添加指定的URL到好友列表中

用户代理选项:
    --auto-answer=code  自动接听来电的应答代码(如200)
    --max-calls=N       最大并发呼叫数(默认:4,最大:255)
    --thread-cnt=N      工作线程数目(默认:1)
    --duration=SEC      设置最大通话时间(默认是:没有限制)
    --norefersub        转接通话时禁止事件订阅
    --use-compact-form  最小的SIP消息大小
    --no-force-lr       允许使用严格路由
    --accept-redirect=N 指定如何处理呼叫重定向响应(3XX)。
                       0:拒绝,1:自动(默认),2:询问
复制代码

命令介绍

复制代码
呼叫命令
m    产生一个呼叫
M    向同一个地址产生多个呼叫
a    响应呼叫(发送100-699)
h    挂断当前呼叫(ha为挂断所有)
H    呼叫保持
v    恢复通话(解除呼叫保持)
U    发送UPDATE请求
],[ 呼叫翻页(前一个/下一个)
x    呼叫转移
X    呼叫替换
#    发送DTMF(RFC238)
*    发送DTMF(SIP INFO)
dq    显示当前通话质量
S    给远端主机发送任意请求

即时通讯
+b    添加好友
-b  删除好友
i      发送即时消息
s    订阅(好友)当前状态
u    取消订阅(好友)当前状态
t      在线状态切换
T     设置在线状态

媒体命令
cl  列出端口
cc  连接端口
cd  断开端口
V      调节音量
Cp  优先编码器

帐户
+a  添加
-a  删除
!a  修改
rr  重新注册
ru  反注册
>      下一个(循环)
<      前一个(循环)

状态和设置
d    显示状态
dd    显示状态详情
dc    显示配置
f    保存配置

其它命令:
q                退出
L                重新加载
sleep MS        暂停键盘输入(毫秒)
echo [0|1|TXT]    控制echo命令(0:禁用,1:启用,TXT :回显)
n                探测NAT网络
复制代码

PJSUA的使用

1、简单点对点
  启动: $ ./pjsua
  呼叫:$ ./pjsua sip:192.168.0.10
  默认端口:5060
2、向服务器注册

单帐户注册:
  $ ./pjsua --id sip:alice@example.com --registrar sip:example.com \
  --realm * --username alice --password secret
多帐户注册:
  $ ./pjsua --id sip:bob@provider1.com --registrar sip:provider1.com \
  --realm provider.1.com --username bob --password secret \
  --next-account \
  --id sip:bob@provider2.com --registrar sip:provider2.com \
  --realm provider2.com --username bob --password secret

3、自动应答并播放wav文件:
  $ pjsua --play-file PROMPT.WAV --auto-answer 200 --auto-play --auto-loop \
  --max-calls 100
4、从文件加载:

文件(alice.cfg)内容:

复制代码
# This is a comment in the config file.
--id sip:alice@example.com
--registrar sip:example.com
--realm *
--username alice
--password secret
复制代码

使用:
$ ./pjsua --config-file alice.cfg

Unbuntu搭建pjsua实现自动拨号与自动播放语音 Unbuntu搭建pjsua实现自动拨号与自动播放语音 最近在工作的时候碰到了这么一个需求,要求实现自动拨号播放语音的功能。刚开始我想的是使用opensips搭建,搭建出来了之后发现只有一条命令行来发送消息的,并没有类似进行语音通话的命令行。我便去下了一个microsip,利用python脚本来实现自动拨号的功能,接着又出现一大问题便是如何发送语音包。一开始的想法是声卡的内录,但是碍于公司电脑没有内置声卡便打消了我这个想法。再后来想到是利用Pyaudio将音频文件解码通过消息的方式发送,用户接收到消息之后进 阅读详情

相关推荐

pjsua直接控制voip网关拨打电话

官方的例子是向服务器注册之后发起请求,改了一下就可以直接向voip网关发起请求了。只要不设置这个字段就不会注册 //        cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);   具体可以跟进去看官方源码官方解释如下: /**      * This is the URL to be put in the request URI for the registr...

编程论坛 1675

PJSUA开发文档(中文)

PJSIP是一个小巧而性能优异的协议栈。PJSUA正是基于PJSIP和PJMedia基础上封装开发,实现了电话大部分的功能。本文更是开发人员很好的中文参考手册

PJSIP学习笔记——PJSUA层发起呼叫的主要流程

在上一篇学习笔记从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程中,使用了PJSUA层的 pjsua_call_make_call来发起一个呼叫,那么这个发起呼叫的流程是怎样的呢?先来看看这个函数: /* * Make outgoing call to the specified URI using the specified account. */ PJ_D

码农的理想国 8321

FreeSWITCH 简单图形化界面23-SIP命令行测试工具PJSUA

CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面23-SIP命令行测试工具PJSUA1 、PJSUA安装2 、测试命令 图形界面安装,请参考https://blog.csdn.net/jia198810/article/details/118877824 1 、PJSUA安装 官网https://www.pjsip.org/pjsua.htm yum install epel-release -y yum install pjsua -y 2 、测试命令 pjsua

jia198810的博客 836

【音视频】PJSIP库——pjsua命令使用详解

本文详细介绍了pjsua的编译安装、测试方法及交互终端使用指南。主要内容包括:1)源码编译步骤和依赖库安装;2)两台电脑测试对讲功能的信令流程;3)Linux音频管理工具JACK的使用方法;4)详尽解析pjsua交互终端的五大类命令:通话控制(如拨号、接听、挂断)、好友管理(添加/删除好友、发送消息)、账户管理(注册/注销SIP账户)、媒体控制(音量调节、编解码设置)以及状态查询功能。为开发者提供了完整的pjsua操作参考手册,涵盖基本测试到高级调试的各项功能。

郭老二 436

PJSUA手册

其中在pjsip-apps/src/下的PJSUA是一个开源的命令行SIP用户代理(软电话),用PJSIP协议,PJNATH,和PJMEDIA实现。它虽然只有很简单的命令行界面,但是功能齐全。 PJSUA手册 Pjsua是一个开源的命令行SIP UA(软电话),是PJSIP,PJNATH和PJMEDIA的实现。尽管它只是简单的命令行展现,但是它具有很多特性。 简介           S

smllyy的学习时间轴 4778

pjsip学习笔记13 -- pjsua的启动过程代码分析

PJSUA是一个开源的命令行SIP用户代理(软电话),用PJSIP协议,PJNATH,和PJMEDIA实现PJSUA虽然只有很简单的命令行界面,但是功能齐全。如何在PJSUA基础上改建自己的USER agent? 首先要理清PJSUA的程序框架。源码阅读提示,实现调用栈的跟踪,貌似线程安全的(使用线程TLS机制:https://blog.csdn.net/waruqi/article/detail...

twd_1991的专栏 7445

PJSIP学习笔记15 -- PJSUA应用程序中的会议桥

aaaaa可以使用PJSUA程序控制台命令cl来查看系统中的conference_port未拨打电话时,如下:Port#00[24KHz/20ms/1] Master/sound transmitting to: Port#01[24KHz/20ms/1] ringback transmitting to: Port#02[24KHz/20ms/1] ...

twd_1991的专栏 3684

JISIP学习笔记14- PJSUA命令行解析

前面大致学习了pjsip的媒体系统和信令系统现在进入pisua例子程序的学习,因为这个例子程序可能是我改造的对象这两天又看了看设计模式的书, 感觉pjsip运用的最多的就是抽象接口和工厂模式,了解设计模式对理解代码很有帮助!今天看了一下,命令行代码的解析,对命令行中的配置文件解析函数看了看原来配置文件的内容就是把命令行参数写到配置文件里面去了格式还是和命令行参数的格式是一致的, 使用配置文件的好处...

twd_1991的专栏 1338

PJSIP UA分析(2)--PJSUA注册

1、一开始是回调使用的函数,例如on_incoming_call当来电话的时候,pjsip会自动去调用你写的这个函数,前提是你在初始化pjsua的时候设置了on_incoming_call = &on_incoming_call, 2、error_exit退出应用所需要的操作 3、main函数:     (1)pjsua_create()创建pjsua的第一步,如果是要打电话要确认URL是否

学习是为了探索这个世界的本质 7664

pjsua帮助手册(中文)

原文地址 : http://www.pjsip.org/pjsua.htm 介绍   PJSUA是一个开源的命令行SIP用户代理(软电话),用PJSIP协议,PJNATH,和PJMEDIA实现。 它虽然只有很简单的命令行界面,但是功能齐全。 SIP功能: 多个id(帐户注册); 多个呼叫; 支持IPv6(在1.2版本中添加); PRACK(100rel,RFC...

weixin_33713707的博客 836

PJSIP使用流程,基于 simple_pjsua.c

PJSIP的学习

sjd753的博客 3773

【音视频】pjsua2库:Endpoint、Call类接口详解

10)void setUserData(Token user_data):设置自定义数据11)Token getUserData() const:获取自定义数据12)getRemNatType:获取远程端点的NAT类型。

郭老二 679

pjsip的simple_pjsua.c和simpleua.c分析

以下是找到的那个UA使用额sample,不过在pjsip-apps\src\samples还有很多其他的sample。 pjsip-apps\src\samples\simple_pjsua.c 以下是说明,在我看来这个是一个高层次的API的调用,app没有参与SDP的协商,以及媒体面相关的设定 /**  * simple_pjsua.c  *  * This is a

roomcxj的博客 4225

pjsip 实现 DTMF 数据获取,并解析按键信息

背景: 业务需要在 android 设备上添加支持通过网关拨打客户电话,并根据客户按键反馈执行相应的操作 平台: RK3399 + Android 7.1 + pjproject-2.4 步骤: 对 sip 这块小白一枚,接到任务后做了如下操作: 1 了解 pjsip 、DTMF,并编译出所需要的库 这里参考了:《 https://www.cnblogs.com/lijingchen...

Twpra的笔记 2979

PJSIP的DTMF简单实现,回调函数:on_dtmf_digit

PJSIP源码比较强大,先说一下DTMF是什么? 双音多频 DTMF(Dual Tone Multi Frequency),双音多频,由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信号有16个编码。利用DTMF信令可选择呼叫相应的对讲机    双音多频信号(DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于

孙建军的博客 3637

pjsip小结

最近一个月学了下pjsip的知识,小结下: pisip是一个sip的库,相比于osip和exosip封装层次比较高,实现起来也比较简单,并且集成了多媒体的功能,不仅仅是一个sip库。学习sip可以下载一些成熟的商用软件个人推荐x_lite(客户端),sip_server 2008(服务器),然后用wireshark抓消息学习sip流程。 pjsip是一个sip库,pjsua是以pjsip为基础...

MR_DUAN1105的博客 3747

pjsip 的采集与播放的流和会议桥的关系

在分析问题前,我们先要对会议桥(conference bridge)有个基本认识。从上图可以看出,会议桥起到一个承上启下的作用,是媒体设备与媒体流之间的交换重点。很显然,从设备到会议桥有个 sound device port 的对于 pjmeida_port 的实现,这里需要我们关注下。有了上面的基本认识后,我们再从媒体设备接收与发送流开始不断分析,一直到会议桥。

qq_37759291的博客 1406

PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程

要了解pjsip的使用,simple_pjsua.c是一个很好的例子,虽然代码只有短短的172行,却展示了pjsua-lib层的完整使用流程、注册流程和基本呼叫流程。 下面是学习过程中整理的simple_pjsua.c中的main函数主要流程: 先来看看pjsip-apps/src/samples/simple_pjsua.c的main函数 [cpp] view plainc

学习是为了探索这个世界的本质 1万+
上一篇: Visual Studio 扩展开发
下一篇: Centos 下安装 subversion
dnvodcwan
博客等级 码龄24年 18粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值