我正在Android中编写RTSP客户端。我能够收到所有请求的回复 即,
之后如何获取音频和视频帧?
我在博客上搜索过,但是所有人都说要在client_port上收听,但我没有收到任何数据包。
请让我知道我做得对。
答案 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数据包
答案 3 :(得分:1)
首先尝试使用局域网中安装的本地Darwin Streaming服务器。这样防火墙就不会有用了。可以使用Streaming。
如果您想从外部服务器尝试,请:
1)检查SERVER响应中提到的client_ports,一些服务器建议请求的端口不同。您必须使用服务器建议的端口。
2)如果端口正确,那么您可以从每个UDP端口向服务器发送64byte空数据包(称为“开门器”)。
3)如果以上两个都没有修复它,请检查服务器端日志。服务器可能正在关闭UDP端口。