我们正在尝试在Android平台上播放视频流,但没有 成功。 使用VideoView,我们可以播放youtube移动视频(例如 这个网址工作得很好: RTSP://v3.cache7.c.youtube.com/CjYLENy73wIaLQnMYzt2FtQmqxMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYI6vr52RlLW1Sww=/0/0/0/video.3gp )
但是,我们需要播放一个流(来自给定的RTSP网址) 我们没有控制权。 RTSP服务器通过RTSP交付RTP / TCP / AVP数据包。 通过端口80上的HTTP隧道支持RTSP本身。 视频格式是MPEG4-Part2(H.263)。 而且,rtsp url只能使用一次;用钥匙建造 - 每次都是字符串。在桌面系统上,quicktime可以播放 流,VLC不能。
是否可以在Android设备上播放此类流 不知何故?
我只是在网上搜索内置(openCore?)RTP堆栈 支持UDP上的RTP,而不是TCP。这(仍然)是真的吗? 我可以以某种方式绕过这个问题吗?
谢谢! 图里安德拉斯
答案 0 :(得分:0)
如果它只是UDP,您可以将数据包转发到本地UDP端口(或者每个端口转发到一个单独的端口,这可能会简化为内置RTP堆栈提供的内容)。
VLC无法播放可能是由于默认情况下不支持的音频编解码器。很难知道没有更多细节。
答案 1 :(得分:0)
我正在试验vlc, 如果你作为客户端正在打开rtsp:// serveradress:port / path vlc中的端口通常为554。 我从来没有使用过android,但如果你有vlc,你必须打开网络流并输入上面的地址格式。 试图找出发出的端口流不必是554。 还要确保您的防火墙不会阻止发出流的端口。
这里有一些vlc文档
祝你好运答案 2 :(得分:0)
我有一个部分解决方案。
我目前正在开展一个Ra& D项目,涉及从服务器到Android客户端的媒体RTP流媒体。
通过完成这项工作,我可以在这里找到我自己的名为smpte2022lib的库:http://sourceforge.net/projects/smpte-2022lib/。
帮助这样的库(Java实现目前是最好的)你可能能够解析来自专业流设备,VLC RTP会话的RTP组播流......
我已经使用SMPTE-2022 2D-FEC或使用VLC生成的简单流,使用来自捕获的专业RTP流的流成功测试了它。
不幸的是我不能把代码片段放在这里,因为使用它的项目实际上是受版权保护的,但我确保你只需通过解析与RtpPacket构造函数有关的UDP流来使用它。
如果数据包是有效的RTP数据包(字节),它们将被解码。
此时,我将对RtpPacket的构造函数的调用包装到一个线程中,该线程实际上将解码的有效负载存储为媒体文件。然后我将这个文件作为参数调用VideoView。
交叉手指; - )
亲切的问候,
David Fischer
答案 3 :(得分:0)
我正在开发这个@ https://net7mma.codeplex.com/
它特别难看,因为RTSP Interleaved(RTP / AVP / TCP)需要不固定的内容长度,这对于apple提出的隧道方法不利。
您可以忽略Content-Length但我会看到更好的努力使用Multi-Part/Chunked
响应选项并将每个$
块作为块发布回来,因为一些代理将观察内容中的长度-length并关闭连接,在Interleaved RTP期间,这很糟糕!