4

我试图了解 spydroid ( https://code.google.com/p/spydroid-ipcamera/ ) 的工作原理,以便我可以为我的手机编写一个类似的应用程序。基于 spydroid 这里是我对 RTSP、RTCP 和 RTP 的理解。

RTSP 在指定端口上运行并设置所有内容。

RTCP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这是 RTP 的控制流程

RTP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这包含音频和视频的流。这令人困惑,因为它似乎实际上并没有在此端口上发送音频和视频。在 spydroid 中,它在端口 5006 上发送视频,在 5004 上发送音频。

Spydroid 正在通过 RTSP 发送此消息以确认端口... 传输:RTP/AVP/UDP;unicast;destination=123.456.789.00;client_port=65234-65235;server_port=44580-44581;ssrc=ba98a863;mode=play

我认为这是在说客户端(在我的情况下为 VLC)正在使用 UDP 监听 65234 用于 RTP 和 65235 用于 RTCP 消息。spydroid 也在 44580 上监听 RTP 和 44581 上 RTCP。这是正确的吗?

现在在 RTSP 的 DESCRIBE 序列中,spydroid 告诉客户端 m=video 5006 RTP/AVP 96 我认为这是说它将通过 UDP 通过端口 5006 发送视频。

我在上面的句子中所说的一切听起来正确吗?

我真正想知道的是如何将此信息转发到正确的端口。客户端端口由 VLC 自动分配。我尝试运行此命令... vlc "rtsp://192.168.1.104:8086" --rtp-client-port=58866 但 VLC 似乎忽略它并选择它自己的端口。所以我转发了 8086、5004 和 5006 端口,但我不知道要为 RTP 和 RTCP 连接转发哪个端口,因为它每次都在变化。我可以完成这项工作的唯一方法是将所有端口转发到我的计算机。(我有一个 linksys 路由器,它有一个 DMZ 选项)但这是一个糟糕的解决方案。有人可以指导我正确的方向。

另外,很高兴知道我正在这样做,因为我通过 Internet 上的外部 IP 地址发送所有内容。spydroid 旨在用于局域网。

4

2 回答 2

0

根据 SDP 标准...

实际上它表示源端口。

端口(范围)仅指示将发送媒体的位置。

例如,如果您的源在 5006 上发送,但它通过 10002 路由,这就是 rtsp 通过传输标头提供帮助的地方。

源端口实际上可能是 5006,但是位于 LAN 内部某处的中间路由器或防火墙接收到数据包并通过另一个端口和地址发送它。

大多数软件不会自动了解您的网络设置,因此如果不修改 sdp 以供外部网络使用,它实际上无法在您的网络地址空间之外的任何地方使用。

如果您需要端口来匹配它,您只需手动配置您的套接字和软件。(例如多播或其他原因,该端口(范围)需要与 rtsp 传输标头中的内容不同,但如果是……那么现在您了解如何以及为什么。

Live 555 和其他一些发送探测数据包,如果该数据包通过 icmp 返回,则源端口重置为 0,以便可以发现它,请注意,如果未正确完成,这可能与来自主机的现有流量冲突。

QuickTime 和 vlc 实际上搞砸了(大多数人都这样做),并且当使用 0 并且 ffmpeg 和 lav 不支持媒体端口中的正确范围时,允许从同一主机的任何端口直接注入解码器。

仔细想想,如果端口号是 1 或 65536 或 * 或 -7 会怎样?

不应该也处理吗?

如果范围是 * 或 - 或其他怎么办?

请记住,仅仅因为一个值不存在并不意味着您不能根据需要对现有信息做正确的事情,即使收到的数据不符合预期或指示一个不应使用的值。

于 2015-02-18T14:50:51.393 回答
0

我不知道 RTSP 是如何工作的以及如何配置 VLC,但我对 RTP 有所了解。我猜客户端端口意味着 spydroid 将发送数据包的位置,而服务器端口将用作源端口。所以在 UDP 级别,RTP 数据包看起来像:

| SRC_PORT=44580 | DST_PORT=65234 | ... RTP_PACKET |

Next : m=video 5006 RTP/AVP 96 根据 SDP 标准,5006 是 spydroid 监听传入 RTP 数据包的端口(不知道为什么),RTP 有效负载类型为 96。

因此,检查是否让 VLC 监听端口 65234 并将 {44580, 65234} 数据包转发到您的 PC 工作。您提供的信息有点混乱,似乎自相矛盾。因此,不能基于此得出任何具体的结论。

于 2014-11-28T07:10:58.377 回答