为什么发出去的2833 RTP流不能收号

简介: 为什么发出去的2833 RTP流不能收号

对前段时间解决的收号问题做个复盘。


我开发的媒体服务器部署在某省,为电话用户提供媒体服务。前段时间我们现场交付同事联系我,有某总机电话,无法进行收号。


于是先请现场的同事进行了媒体抓包,我通过媒体包分析媒体包,发现DTMF部分的数据都传输过去了。


061e03ee0013435eaa72249d58dd4f65.png


但有两个RTP的HEADER地方不太一样。一个是DTMF发送的按键的第一个RTP流中的Marker,一个是DTMF发送按键时,它的Timestamp是不变的。


eb93e339e47c47bc88fb3b5d042e70f8.png

a4a271821da9496eb49fae24fc9d9903.png

eed6e242180042ceb03ee4a5bb08edef.png


于是进行排除法进行修改.


先是将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.


f2607e153fd44aec912191b4b946125b.png

相关文章
|
5月前
|
网络协议 API 网络安全
探讨TCP传输视频流并利用FFmpeg进行播放的过程
探讨TCP传输视频流并利用FFmpeg进行播放的过程
462 0
|
10月前
|
Web App开发
ZLMediaKit webrtc RTP包接受与重传
ZLMediaKit webrtc RTP包接受与重传
|
12月前
|
网络协议 索引
HTTP/2 协议(帧、消息、流简单的抓包分析)
HTTP/2 协议(帧、消息、流简单的抓包分析)
483 0
|
IDE 自动驾驶 安全
CAN FD网络中每秒最多可以发送多少帧报文?
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes Payload)已难以满足日益增加的需求。
udp发送广播消息
import socket if __name__ == '__main__': # 创建udpsocket udp_socket = socket.socket(socket.AF_INET, socket.
1475 0
|
网络协议 C++
C++流的streambuf详解及TCP流的实现
streambuf是C++流(iostream)与流实体(文件、标准输入输出等)交互的桥梁,文件流和字符串流是C++标准库已经提供了的,现在我的目标是实现一个使用TCP协议通信的socket流...
4209 0