PJSUA 使用指南
使用pjsua
注册 SIP 账号
1 | pjsua --id="sip:2002@192.168.2.230" \ |
- 如果不指定local-port,则使用默认的 5060
- outbound 指定 SIP 服务器地址
运行pjsua命令后,会看到如下信息:
拨打电话
要拨打电话,请按“m”,然后按回车键。然后以 sip:number@host 格式输入 SIP URI,然后再次按回车键拨打电话。

接通后,会看到如下信息:
1 | You have 1 active call |
挂断电话
要挂断电话,请按“h”,然后按回车键。
直接拨打
也可以使用以下命令直接拨打电话,无需先注册
1 | pjsua --id="sip:2002@192.168.2.230" \ |
配置文件
将参数放配置文件里面,通过–config-file=pjsua.cfg启动
pjsua –config-file=pjsua.cfg
1 | # pjsua.cfg |
pjsua 参数说明:
| 参数 | 参数说明(中文翻译) |
|---|---|
| General options: | |
--config-file=file |
从文件读取配置或参数 |
--help |
显示此帮助信息 |
--version |
显示版本信息 |
| Logging options | |
--log-file=fname |
将日志输出到指定文件(默认为 stderr) |
--log-level=N |
设置日志最大级别 N(0=无,6=跟踪),默认为 5 |
--app-log-level=N |
设置控制台(stdout)显示的日志最大级别(默认为 4) |
--log-append |
日志追加到文件末尾,而非覆盖原有内容 |
--color |
使用彩色日志输出(Windows 默认启用) |
--no-color |
禁用彩色日志输出 |
--light-bg |
为浅色背景使用深色字体(默认为深色背景) |
--no-stderr |
禁用 stderr 输出 |
| SIP Account options | |
--registrar=url |
设置注册服务器的 URL |
--id=url |
设置本地 ID 的 URL(用于 From 头部) |
--realm=string |
设置认证域(realm) |
--username=string |
设置认证用户名 |
--password=string |
设置认证密码 |
--contact=url |
可选地覆盖 Contact 信息 |
--contact-params=S |
在 Contact 头部中附加指定参数 S |
--contact-uri-params=S |
在 Contact URI 中附加指定参数 S |
--proxy=url |
可选的代理服务器 URL(可多次指定) |
--reg-timeout=SEC |
注册超时时间(默认 300 秒) |
--rereg-delay=SEC |
自动重注册间隔(默认 300 秒) |
--reg-use-proxy=N |
控制 REGISTER 请求中代理的使用:0=无代理,1=仅出站代理,2=仅账户代理,3=全部(默认) |
--publish |
为此账户发送存在状态(presence)PUBLISH 请求 |
--mwi |
订阅消息摘要/等待指示(Message Waiting Indication) |
--use-ims |
在此账户上启用 3GPP/IMS 相关设置 |
--use-srtp=N |
是否使用 SRTP?0:禁用,1:可选,2:强制,3:通过复制媒体提议实现可选(默认:0) |
--srtp-secure=N |
SRTP 是否要求安全 SIP?0:否,1:TLS,2:SIPS(默认:1) |
--use-100rel |
要求可靠的临时响应(100rel) |
--use-timer=N |
是否使用 SIP 会话定时器?(默认:1)0:不活动,1:可选,2:强制,3:始终启用 |
--timer-se=N |
会话定时器超时时间(单位:秒,默认:1800) |
--timer-min-se=N |
会话定时器最小超时时间(单位:秒,默认:90) |
--outb-rid=string |
设置 SIP 出站注册 ID(默认:1) |
--auto-update-nat=N |
启用/禁用对称 NAT 后的 SIP 穿透:0=禁用,1=启用但有例外,2=完全启用(默认) |
--disable-stun |
禁用此账户的 STUN |
--next-cred |
添加另一组认证凭据 |
| SIP Account Control | |
--next-account |
添加更多账户 |
| Transport Options | |
--set-qos |
为 SIP 和媒体启用 QoS 标记 |
--local-port=port |
设置 TCP/UDP 端口。此选项隐式在指定端口上启用 TCP 和 UDP 传输,除非显式禁用 TCP 或 UDP |
--ip-addr=IP |
使用指定 IP 地址作为 SIP 和 RTP 地址(提示:IP 可为 NAT/路由器的公网 IP) |
--bound-addr=IP |
将传输绑定到指定 IP 接口 |
--no-tcp |
禁用 TCP 传输 |
--no-udp |
禁用 UDP 传输 |
--nameserver=NS |
添加指定的 DNS 服务器以启用 SRV 解析(可多次指定) |
--outbound=url |
设置全局出站代理服务器 URL(可多次指定) |
--stun-srv=FORMAT |
设置 STUN 服务器主机或域名(可多次指定),格式为 hostdom[:PORT] |
--upnp=if_name |
使用指定接口名称启用 UPnP。若未指定接口,则使用第一个找到的接口 |
| TLS Options | |
--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 协商超时时间(默认:无) |
--tls-cipher |
指定首选 TLS 加密套件(可选,可多次指定) |
| Audio Options | |
--add-codec=name |
手动添加编解码器(默认启用所有) |
--dis-codec=name |
禁用编解码器(可多次指定) |
--clock-rate=N |
覆盖会议桥时钟频率 |
--snd-clock-rate=N |
覆盖声音设备时钟频率 |
--stereo |
以立体声模式打开音频设备和会议桥 |
--null-audio |
使用空音频设备(静音) |
--play-file=file |
将 WAV 文件注册到会议桥(可多次指定) |
--play-tone=FORMAT |
将音调注册到会议桥。格式为 ‘F1,F2,ON,OFF’,F1/F2 为频率,ON/OFF 为开关持续时间(毫秒)。可多次指定 |
--auto-play |
自动播放文件(仅对来电有效) |
--auto-play-hangup |
文件播放完成后自动挂断 |
--auto-loop |
自动将入站 RTP 循环到出站 RTP |
--auto-conf |
自动将通话加入会议 |
--rec-file=file |
打开文件录音器(扩展名可为 .wav 或 .mp3) |
--auto-rec |
自动录制通话 |
--quality=N |
指定媒体质量(0-10,默认 8) |
--ptime=MSEC |
覆盖编解码器 ptime 为 MSEC(默认由编解码器决定) |
--no-vad |
禁用 VAD(语音活动检测)/静音检测(默认由编解码器决定) |
--ec-tail=MSEC |
设置回声消除器尾长(默认 200 毫秒) |
--ec-opt=OPT |
选择回声消除算法:0=默认,1=speex,2=抑制器,3=WebRtc,4=WebRtc AEC3 |
--ilbc-mode=MODE |
设置 iLBC 编解码器模式(20 或 30,默认 30) |
--capture-dev=id |
音频采集设备 ID(默认 -1) |
--playback-dev=id |
音频播放设备 ID(默认 -1) |
--capture-lat=N |
音频采集延迟(毫秒,默认 100) |
--playback-lat=N |
音频播放延迟(毫秒,默认 140) |
--snd-auto-close=N |
当音频设备空闲 N 秒后自动关闭(默认 1)。N=-1 表示禁用,N=0 表示立即关闭 |
--no-tones |
禁用可听音调 |
--jb-max-size |
指定抖动缓冲区最大大小(毫秒,默认 -1) |
--extra-audio |
添加一条额外的音频流 |
| Media Transport Options | |
--use-ice |
启用 ICE(默认:否) |
--ice-regular |
使用 ICE 正常提名(默认为激进提名) |
--ice-trickle=N |
是否启用 Trickle ICE?0=禁用,1=半启用,2=全启用(默认 0) |
--ice-max-hosts=N |
设置 ICE 主机候选者最大数量 |
--ice-no-rtcp |
禁用 ICE 中的 RTCP 组件(默认:否) |
--rtp-port=N |
尝试用于 RTP 的起始端口(默认 4000) |
--rx-drop-pct=PCT |
接收 RTP 包丢弃百分比(用于模拟丢包,默认 0) |
--tx-drop-pct=PCT |
发送 RTP 包丢弃百分比(用于模拟丢包,默认 0) |
--use-turn |
启用 TURN 中继配合 ICE(默认:否) |
--turn-srv |
TURN 服务器域名或主机名(格式 “NAME:PORT”) |
--turn-tcp |
使用 TCP 连接 TURN 服务器(默认:否) |
--turn-user |
TURN 用户名 |
--turn-passwd |
TURN 密码 |
--rtcp-mux |
启用 RTP 与 RTCP 多路复用(默认:否) |
--srtp-keying |
出站 SDP 提议的 SRTP 密钥交换方式:0=SDES(默认),1=DTLS |
| TURN TLS Options | |
--turn-tls |
使用 TLS 连接 TURN 服务器(默认:否) |
--turn-tls-ca-file |
指定 TURN TLS CA 证书文件(默认:无) |
--turn-tls-cert-file |
指定 TURN TLS 证书文件(默认:无) |
--turn-tls-privkey-file |
指定 TURN TLS 私钥文件(默认:无) |
--turn-tls-privkey-pwd |
指定 TURN TLS 私钥文件的密码(默认:无) |
--turn-tls-neg-timeout |
指定 TURN TLS 协商超时时间(默认:无) |
--turn-tls-cipher |
指定首选 TURN TLS 加密套件(可选,可多次指定) |
| Buddy List | |
--add-buddy url |
将指定 URL 添加到好友列表(可多次使用) |
| User Agent options | |
--auto-answer=code |
自动以指定状态码(如 200)应答来电 |
--max-calls=N |
最大并发通话数(默认 4,最大 255) |
--thread-cnt=N |
工作线程数量(默认 1) |
--duration=SEC |
设置最大通话时长(默认无限制) |
--norefersub |
转接通话时抑制事件订阅 |
--use-compact-form |
使用紧凑格式以减小 SIP 消息大小 |
--no-force-lr |
允许使用严格路由(即不强制添加 lr 参数) |
--accept-redirect=N |
指定如何处理呼叫重定向(3xx)响应:0=拒绝,1=自动跟随,2=跟随并替换 To 头部(默认),3=询问用户 |
| CLI options | |
--use-cli |
使用命令行界面(CLI)作为用户接口 |
--cli-telnet-port=N |
CLI Telnet 服务端口 |
--no-cli-console |
禁用 CLI 控制台 |
说明:当指定了 SIP URL 时,pjsua 将立即向该 URL 发起呼叫。