原文地址 : 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
好,就這些了,希望對你有幫助。