官方给出的ptime的定义是:ptime gives the length of time in milliseconds represented by themedia in a packet。简单来讲就是一个数据包中媒体的时长,以毫秒为单位。例如:ptime:20就是定义为20毫秒。
每种媒体的时间是不一样,例如:G711媒体时长默认20ms,G.726媒体时长默认是10ms,G.729媒体时长默认是30ms等。
ptime数值的大小影响计算机的性能。ptime:20,表示计算机20ms打一个媒体包发送给对端,ptime:100,表示计算机100ms打一个媒体包发送给对端。从以上可以看出ptime数值越小对计算机性能要求越高,但并不是ptime数值越大越好,如果ptime比较大,对端收到的媒体就会有延迟和不连贯现象。
在不同的项目中根据不同的媒体和要求设置不同的ptime数值,两边协商媒体相同时,尽量保证媒体打包时长一直,否则导致一些不可预知的问题。例如:呼叫突然挂断,抖动和不连续等。
主叫在发送的INVITE请求中的SDP携带ptime属性,表示主叫方媒体的打包时长是ptime携带的数值。服务器收到该请求消息后回复200 OK中的SDP携带ptime属性,表示服务器端支持该媒体的打包时长是ptime携带的数值。主叫方根据200 OK中SDP携带ptime属性进行协商最终发送媒体打包时长,即ptime数值。
详细流程如下:
1) 主叫2001呼叫被叫2009,发送呼叫请求消息给IPBX,并且INVITE中的SDP携带ptime:100属性,说明主叫方媒体AMR打包时长100ms。
INVITE sip:2009@192.168.50.34 SIP/2.0
Via: SIP/2.0/UDP192.168.50.171:40435;rport;branch=z9hG4bK91447
Max-Forwards: 70
To: <sip:2009@192.168.50.34>
From:<sip:2001@192.168.50.34>;tag=z9hG4bK69390462
Call-ID: 890631906834
CSeq: 1 INVITE
Contact:<sip:2001@192.168.50.171:40435;transport=udp>
Content-Length: 223
Content-Type: application/sdp
v=0
o=Mr.Wang 0 0 IN IP4 192.168.50.171
s=hua
c=IN IP4 192.168.50.171
t=0 0
m=audio 21000 RTP/AVP 114 101
a=rtpmap:114 AMR/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:100
2) 2009被叫接听,服务器回复200OK,并且携带服务器协商的媒体SDP,SDP中携带服务器端支持的媒体打包时长,ptime:100.
SIP/2.0 200 OK
Via: SIP/2.0/UDP192.168.50.171:40435;rport;branch=z9hG4bK91447
From:<sip:2001@192.168.50.34>;tag=z9hG4bK69390462
To:<sip:2009@192.168.50.34>;tag=2af379903
Call-ID: 890631906834
CSeq: 1 INVITE
Contact:<sip:2009@192.168.50.34:7080>
Content-Type: application/sdp
Content-Length: 217
v=0
o=Mr.Wang 1103994876 1103994876 IN IP4192.168.50.34
s=hua
c=IN IP4 192.168.50.34
t=0 0
m=audio 27676 RTP/AVP 114 101
a=rtpmap:114 AMR/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:100
3) 主叫方收到200OK响应消息,并且回复ACK。
ACK sip:2009@192.168.50.34:7080 SIP/2.0
Via: SIP/2.0/UDP192.168.50.171:40435;rport;branch=z9hG4bK90086
Max-Forwards: 70
To:<sip:2009@192.168.50.34>;tag=2af379903
From:<sip:2001@192.168.50.34>;tag=z9hG4bK69390462
Call-ID: 890631906834
CSeq: 1 ACK
Contact:<sip:2001@192.168.50.171:40435;transport=udp>
Content-Length: 0
到此,通话建立成功,并且通过RTP协议传输媒体。