【发布时间】:2021-12-23 12:37:13
【问题描述】:
我想通过 UDP 使用 RTSP 流式传输视频。但我不能这样做,因为我的计算机在 NAT 后面。流正常启动,但大约 10 秒后它会关闭流。
我找到了它发生的原因。 RTSP 使用 RTCP 来控制和检查流媒体是否仍然可用。它向客户端发送一些“报告”,并且客户端必须向服务器发送报告,表明它仍然处于活动状态。但是来自服务器的消息无法到达客户端,因为 RTCP 通常通过 UDP 工作,并且由于 NAT 无法到达,因为通过 RTSP 发送到服务器的本地 UDP 端口与使用 NAT 映射的端口不匹配。
当然,我可以使用 TCP 代替 UDP,它解决了问题,但是通过 TCP 进行流式传输可能会慢得多。如果可能的话,我想使用 UDP。
我发现 Discord 也发送和接收 RTP 数据包,但通过 UDP,即使我的计算机位于 NAT 之后。怎么可能?我使用 ffmpeg 实用程序进行流式传输,我怎样才能做到这一点并使用 UDP?
希望得到您的帮助!
【问题讨论】: