客户端无法收到RTSP流媒体的UDP数据

everything_at_once 2016-07-29 02:03:01
具体情况是:有两个RTSP流1和流2,程序和RTSP流Describe,setup,play都受到服务器返回的200 ok,但就是收不到流1的UDP音视频数据。
测试还发现有下面几个很奇怪的问题。
1,同样的代码,连接流2的流媒体地址,就可以正常的收到UDP数据。
2,在另外一台电脑上运行,流1和流2的流媒体地址都可以收到UDP数据。

通过对不能收到流1UDP数据的客户端电脑进行抓包,发现客户端setup收到服务器返回的source是127.0.0.2,并不是describe阶段返回的IP,通过代码将127.0.0.2替换成describe阶段返回的IP还是收不到UDP数据。

找了很多资料,发现如果是访问外网RTSP,UDP数据无法到达内网,需要穿透和打洞。但是另外一台电脑两个流都是可以收到UDP数据的,是其他硬件上设置不一样导致的么?
跪求大侠指点迷津。

下面附上部分抓包数据:(收不到流1UDP数据包的setup信息)

SETUP rtsp://123.147.112.180:1554/285.rsc/5813_Uni.sdp/trackID=2 RTSP/1.0
CSeq: 4
Transport: MP2T/RTP/UDP;unicast;destination=192.168.1.7;client_port=58632-58633,MP2T/UDP;unicast;destination=192.168.1.7;client_port=58632-58633,MP2T/RTP/TCP;unicast;destination=192.168.1.7;interleaved=0-1,MP2T/TCP;destination=192.168.1.7;interleaved=0-1;
Accept: application/sdp
User-Agent: CTC RTSP 1.0 ZTE Ltd RTSP Client V2.0

RTSP/1.0 200 OK
Server: ZMSS_ChinaTelcom2.2/ZXMSSV3.00.23.13U08P05T01
CSeq: 4
x-KeepAliveInterval: 60000
Session: 1692097354928662503
Date: Wed, 27 Jul 2016 10:25:18 GMT
Expires: Wed, 27 Jul 2016 10:25:18 GMT
Transport: MP2T/RTP/UDP;unicast;destination=192.168.1.7;source=127.0.0.2;client_port=58632-58633;server_port=6480-6481


能正常收到UDP数据的setup信息

SETUP rtsp://123.147.112.184:1554/220.rsc/5751_Uni.sdp/trackID=2 RTSP/1.0
CSeq: 4
Transport: MP2T/RTP/UDP;unicast;destination=192.168.1.7;client_port=54328-54329,MP2T/UDP;unicast;destination=192.168.1.7;client_port=54328-54329,MP2T/RTP/TCP;unicast;destination=192.168.1.7;interleaved=0-1,MP2T/TCP;destination=192.168.1.7;interleaved=0-1;
Accept: application/sdp
User-Agent: CTC RTSP 1.0 ZTE Ltd RTSP Client V2.0

RTSP/1.0 200 OK
Server: ZMSS_ChinaTelcom2.2/ZXMSSV3.00.23.13U08P05T01
CSeq: 4
x-KeepAliveInterval: 60000
Session: 6490700062545984986
Date: Wed, 27 Jul 2016 10:18:15 GMT
Expires: Wed, 27 Jul 2016 10:18:15 GMT
Transport: MP2T/RTP/UDP;unicast;destination=192.168.1.7;source=123.147.112.184;client_port=54328-54329;server_port=11916-11917



...全文
1044 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
everything_at_once 2016-08-11
  • 打赏
  • 举报
回复
问题解决了,在此谢谢大家的帮助。 UDP方式传输数据经过测试确实在某些电脑上无法收到数据,具体的原因后面有时间在查吧。 所以采用TCP方式接收数据。
rightorwrong 2016-08-10
  • 打赏
  • 举报
回复
应该不会发到另个网卡吧,你再找个只有一个网卡的机器试
everything_at_once 2016-08-09
  • 打赏
  • 举报
回复
难道和各个网卡的优先级有关么?
everything_at_once 2016-08-09
  • 打赏
  • 举报
回复
引用 5 楼 sharkka 的回复:
[quote=引用 3 楼 everything_at_once 的回复:] [quote=引用 2 楼 sharkka 的回复:] 你确定收不到UDP数据的那台机器是一个网卡吗
两个网卡。[/quote] 发到另一个网卡上去了[/quote] 程序已经绑定了两个网卡中其中一个的IP地址,但是就是收不到数据,需要做什么特殊设置么?
百灵工作室 2016-08-01
  • 打赏
  • 举报
回复
引用 3 楼 everything_at_once 的回复:
[quote=引用 2 楼 sharkka 的回复:] 你确定收不到UDP数据的那台机器是一个网卡吗
两个网卡。[/quote] 发到另一个网卡上去了
everything_at_once 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 rightorwrong 的回复:
服务端代码是自己写的吗 服务端能否抓包,看看不能收到流时,数据发送到哪儿了
服务器端不是自己写的,只有流媒体地址。
everything_at_once 2016-08-01
  • 打赏
  • 举报
回复
引用 2 楼 sharkka 的回复:
你确定收不到UDP数据的那台机器是一个网卡吗
两个网卡。
百灵工作室 2016-07-29
  • 打赏
  • 举报
回复
你确定收不到UDP数据的那台机器是一个网卡吗
rightorwrong 2016-07-29
  • 打赏
  • 举报
回复
服务端代码是自己写的吗 服务端能否抓包,看看不能收到流时,数据发送到哪儿了
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧