Android中的RTSP客户端

时间:2009-07-29 16:09:51

标签: c++ android client rtsp

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

  1. DESCRIBE它发回200 OK
  2. 使用传输设置:RTP / AVP:单播:client_port = 4568:4569获得200 OK消息
  3. 发送了播放,并收到了确认消息
  4. 之后如何获取音频和视频帧?

    我在博客上搜索过,但是所有人都说要在client_port上收听,但我没有收到任何数据包。

    请让我知道我做得对。

4 个答案:

答案 0 :(得分:5)

您可能知道也可能不知道,但Android已使用VideoView内置对RTSP的支持。

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

这可能会缩短您的开发时间......或者如果您尝试使用自己的RTSP堆栈,它可能完全没用。

答案 1 :(得分:3)

RTSP仅用于启动流式传输。它为您提供了实际流的SDP描述。您必须管理每个通道的RTCP连接和RTP连接(音频/视频)。要使用的端口是“client_port”端口。

从头开始编写RTSP / RTCP / RTP堆栈非常复杂。您可以查看在c ++中实现此类堆栈的live555库。

答案 2 :(得分:1)

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

使用合适的嗅探器,您将能够看到rtsp对话框。也许你在答案中遗漏了一些东西

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

要检查的事项:

  • 用UDP听。
  • 防火墙规则。
  • 播放请求的范围:请勿指定任何以确保服务器正在播放的内容。

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

答案 3 :(得分:1)

首先尝试使用局域网中安装的本地Darwin Streaming服务器。这样防火墙就不会有用了。可以使用Streaming。

如果您想从外部服务器尝试,请:

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

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

3)如果以上两个都没有修复它,请检查服务器端日志。服务器可能正在关闭UDP端口。