我们正在尝试在Android平台上播放视频流,但没有成功。使用VideoView,我们可以播放youtube的移动视频(例如,这个网址工作得很好: rtsp://v3.cache7.c.youtube.com/CjYLENy73wIaLQnMYzt2FtQmqxMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYI6vr52RlLW1Sww=/0/0/0/video.3gp )
然而,我们需要播放一个流(来自给定的RTSP url),我们无法控制它。RTSP服务器通过RTSP传送交错的RTP/TCP/AVP数据包。RTSP本身通过端口80上的HTTP隧道来支持。视频格式为MPEG4-Part2 (H.263)。此外,rtsp url只能使用一次;每次都使用key- string构建。在桌面系统上,quicktime可以播放流,而VLC不能。
有没有可能以某种方式在Android设备上播放这样的流?
我在谷歌上看到内置的(openCore?)RTP堆栈仅支持UDP上的RTP,不支持TCP。这(仍然)是真的吗?我能以某种方式绕过这个问题吗?
谢谢!图里·安德拉斯
发布于 2011-01-08 11:57:01
如果只是UDP,您可以将数据包转发到本地UDP端口(或每个端口都转发到单独的端口,这可能会简化馈送到内置RTP堆栈的工作)。
VLC不能播放它的可能是由于音频编解码器,它不支持默认的。如果没有更多的细节,很难知道。
发布于 2011-12-27 19:08:04
我正在使用vlc进行实验,如果您作为客户端打开rtsp://serveradress: port /path,那么在vlc中端口通常是554。我从来没有用过android,但如果你有vlc,你必须打开网络流并输入上面的地址格式。尝试找出发出流的端口不必是554。还要确保您的防火墙不会阻止发送流的端口。
这里有一些vlc文档
vlc documentation和vlc wiki
祝好运
发布于 2013-02-28 02:19:46
我有一个部分解决方案给你。
我目前正在做一个Ra&D项目,涉及从服务器到Android客户端的RTP流媒体。
通过做这项工作,我为我自己的库smpte2022lib做了贡献,您可以在这里找到它:http://sourceforge.net/projects/smpte-2022lib/。
借助这样的库( Java实现是目前最好的),您可能能够解析来自专业流设备、VLC RTP会话等的RTP组播流。
我已经使用SMPTE-2022 2D-FEC捕获的专业RTP流或使用VLC生成的简单流成功地测试了它。
不幸的是,我不能在这里放一个代码片段,因为使用它的项目实际上是受版权保护的,但我向你保证,你可以通过解析RtpPacket构造函数帮助下的UDP流来使用它。
如果数据包是有效的RTP数据包(字节),则将对其进行解码。
此时,我将对RtpPacket的构造函数的调用包装到一个线程,该线程实际将解码后的有效负载存储为媒体文件。然后,我将使用此文件作为参数来调用VideoView。
交叉手指;-)
致以亲切的问候,
大卫·费舍尔
https://stackoverflow.com/questions/4425155
复制相似问题