对前段时间解决的收号问题做个复盘。
我开发的媒体服务器部署在某省,为电话用户提供媒体服务。前段时间我们现场交付同事联系我,有某总机电话,无法进行收号。
于是先请现场的同事进行了媒体抓包,我通过媒体包分析媒体包,发现DTMF部分的数据都传输过去了。
但有两个RTP的HEADER地方不太一样。一个是DTMF发送的按键的第一个RTP流中的Marker,一个是DTMF发送按键时,它的Timestamp是不变的。
于是进行排除法进行修改.
先是将Timestamp的发送算法就行了修改,发送DTMF时,同一个DTMF,Timestamp不变。 在公司测试okay后,在现场进行了升级。经过拨测总机还是收不到号。然后我就注意到了Marker。
然后继续修改MS,当DTMF发送第一个RTP包时,将Mark设置为True,后面设置为False。再次升级验证后,收号正常了。
后来我又查了下RFC 2833的规范说明。
Marker为True,表示DTMF的起始位。
Marker bit: The RTP marker bit indicates the beginning of a new event.