Android中的RTSP客户端

我正在Android中编写一个RTSP客户端。 我能够收到所有请求的回应,

  1. 描述它发回200 OK
  2. 使用传输设置:RTP / AVP:单播:客户端端口= 4568:4569获得了200 OK消息
  3. 发送PLAY,并得到了OK消息

之后,如何获得audio和video帧?

我已经在博客上search,但都说在client_port听,但我没有收到任何数据包。

请让我知道我是否正确地做。

Solutions Collecting From Web of "Android中的RTSP客户端"

您可能会也可能不知道这一点,但Android已经使用VideoView构build了对RTSP的支持。

http://developer.android.com/reference/android/widget/VideoView.html

这可能会缩短你的开发时间,或者如果你试图推出自己的RTSP堆栈,这可能完全没用。

RTSP仅用于启动stream媒体。 它给你一个真正的stream的SDP描述。 您必须pipe理每个通道(audio/video)的RTCP连接和RTP连接。 要使用的端口是“client_port”端口。

从头开始编写RTSP / RTCP / RTP堆栈非常复杂。 你可以看看在c ++中实现这样一个栈的live555库。

把一个嗅探器放在networking上,你应该看到UDP数据包的目标端口4568针对你的IP地址。

有了一个体面的嗅探器,你将能够看到rtsp对话框。 也许你在答案中错过了一些东西

您还应该检查SETUP响应的内容,看看您请求的端口是否被接受。

检查事项:

  • 在UDP中收听。
  • 防火墙规则。
  • 播放请求的范围:不要指定任何确定的服务器将播放的东西。

如果您在路由器或防火墙后面,您可能不会收到任何东西,因为您的路由器/防火墙不知道如何处理传入的UDP数据包

先尝试一下安装在局域网内的本地Darwin Streaming服务器。防火墙不会有问题。stream量将会起作用。

如果你想从外部服务器尝试,然后:

1)检查SERVER响应中提到的client_ports,有些服务器提出了不同的端口请求。您必须使用服务器build议的端口。

2)如果端口是正确的,那么你可以从每个UDP端口发送64byte的空包到服务器(称为“开门器”)。

3)如果以上两者不解决问题,请检查服务器端日志。服务器可能正在closuresUDP端口。