PJSUA 使用指南

使用pjsua

注册 SIP 账号

1
2
3
4
5
6
7
8
9
pjsua --id="sip:2002@192.168.2.230" \
--null-audio \
--no-tcp \
--local-port=5066 \
--registrar="sip:192.168.2.230" \
--username="2002" \
--password="123456" \
--realm="*" \
--outbound sip:192.168.2.230:5091
  • 如果不指定local-port,则使用默认的 5060
  • outbound 指定 SIP 服务器地址

运行pjsua命令后,会看到如下信息:
Pasted image 20250809171558

拨打电话

要拨打电话,请按“m”,然后按回车键。然后以 sip:number@host 格式输入 SIP URI,然后再次按回车键拨打电话。

image.png

接通后,会看到如下信息:
image.png

1
2
You have 1 active call
Current call id=2 to sip:1002@192.168.2.230 [CONFIRMED]

挂断电话

要挂断电话,请按“h”,然后按回车键。

直接拨打

也可以使用以下命令直接拨打电话,无需先注册

1
2
3
4
5
pjsua --id="sip:2002@192.168.2.230" \
--null-audio \
--no-tcp \
--local-port=5066 \
sip:1001@192.168.2.230:5091

配置文件

将参数放配置文件里面,通过–config-file=pjsua.cfg启动

pjsua –config-file=pjsua.cfg

1
2
3
4
5
6
7
8
9
10
11
# pjsua.cfg
--null-audio
--no-tcp
--id=sip:1002@192.168.2.230:5092 #Set the From Header
--auto-answer=200
--local-port=5092
--outbound sip:192.168.2.230:5091;lr

# Add a buddy for the external b2bua
--add-buddy=sip:1001@192.168.2.230
--add-buddy=sip:not_registered@172.16.254.2

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 发起呼叫。