重构2002年语音聊天服务器:RTP流格式解析与播放问题
问题描述
我正在重构一款2002年开发的语音聊天服务器,系统自带聊天室功能——客户端将语音发送至服务器,再由服务器转发给同房间内的其他客户端。
目前大部分开发工作已完成,但在语音处理环节遇到瓶颈:能成功连接语音服务器,接收客户端发送的RTP流,也能解析**发送流(Outgoing Stream)**并通过GSM codec正常播放其payload;但不清楚需将流转换为何种格式才能转发给其他客户端。我手头有2002年捕获的Wireshark PCAP文件,用Wireshark播放其中的payload时只能听到白噪音。
简言之,我能解析并播放发送流,但无法处理接收流(Incoming Stream)。以下是不同时段、不同发言者的发送流与接收流示例,我需要先解析接收流并播放其payload,才能明确服务器对接收流的处理逻辑。
发送流(Outgoing Stream)
- SSRC(
000f4242)实际为发言者ID,payload以字节序反转后的同一ID结尾 - payload类型为3(GSM),已成功用GSM codec播放出音频
数据包长度:00000094
RTP头:8003369bee2e9949000f4242
Payload:
d35f8919a3d2a0c8a3ad4a8cbc80c8a5cdd8e6d6e0b7a469b4617cc0a873914b23d29d7a595b84e0a9636fa6ded8a0af5c6a531a92a0929c6adaf5d08099b5966514d4608a5953c0c0b9528f289aeca01fe9792028bc8099253558e468c0c71a214936d3dd829952aea0ed7490b70c7ca0d5294664b25b2124a175d5237ae1589c7dd6f442420f00
接收流(Incoming Stream)
注:此为不同时段、不同来源的流,payload类型为0,无法正常播放;另外注意到重复出现的34002,暂不清楚其含义。
数据包长度:000000ea
RTP头:8000913b02d62700038918b9
Payload:
34002e89d4293cd787c90b026096aa5ec3b5aa7f1ae304e6a7d8e1fb25f0d073f55bfba01e1826fab830128f60c1703080ed000ad79634002e898febfc3ebf0e02702950ec72f3c7e06efc527d537e9717e6483ccea7074c13913ded632ab8d04777d059ec2009cf00504ce634002c8f1da4f9f5d3795f97d9bf236343a69c8c2e81799c6edcedf334282697d1e36a1d3e3a214a5000688781155dd0715c8064f7063400299d006dbb6b1f5614f2cfa61d8e4d06b83ec7e79a0728b14c95fc9d112345658eeff3bff8ea97d0b18e204dac50b5ac8069f2160000b9188903
内容的提问来源于stack exchange,提问作者NetStorm
相关产品推荐
相关产品推荐

