我想了解如何spydroid(https://code.google.com/p/spydroid-ipcamera/)的作品,所以我可以为我的手机写一个类似的应用程序。基于spydroid,这是我对RTSP,RTCP和RTP的理解。RTSP,RTCP和RTP端口号
RTSP在指定的端口上运行并设置所有内容。
RTCP可以在任何端口上运行。有一个客户端端口和一个服务器端口。这是RTP的控制流程
RTP可以在任何端口上运行。有一个客户端端口和一个服务器端口。这包含音频和视频流。这是令人困惑的,因为它似乎并不实际发送此端口上的音频和视频。它在子站点发送端口5006上的视频和5004上的音频。
Spydroid通过RTSP发送此消息以确认端口... 传输:RTP/AVP/UDP;单播;目的地= 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 =视频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选项)但这是一个不好的解决方案。有人能指导我在正确的方向。
此外,我很高兴知道我正在这样做,因为我通过互联网通过外部IP地址发送所有内容。在什么地方可以在局域网上使用子弹体。