【问题标题】:playing RTP/TCP/AVP video stream on Android在 Android 上播放 RTP/TCP/AVP 视频流
【发布时间】:2010-12-13 01:22:51
【问题描述】:

我们正在尝试在 Android 平台上播放视频流,没有 成功。 使用 VideoView,我们可以播放 youtube 移动视频(例如 这个网址工作得很好: rtsp://v3.cache7.c.youtube.com/CjYLENy73wIaLQnMYzt2FtQmqxMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYI6vr52RlLW1Sww=/0/0/0/video.3gp )

但是,我们需要播放一个流(来自给定的 RTSP url),通过它 我们无法控制。 RTSP 服务器通过 RTSP 交错传送 RTP/TCP/AVP 数据包。 通过端口 80 上的 HTTP 隧道支持 RTSP 本身。 视频格式为 MPEG4-Part2 (H.263)。 而且,rtsp url只能使用一次;用钥匙建造- 每次串。在桌面系统上,quicktime 可以播放 流,VLC 不能。

是否可以在 Android 设备上播放这样的流 不知何故?

我只在谷歌上搜索了内置(openCore?)RTP 堆栈 支持 RTP over UDP,而不是 TCP。这(仍然)是真的吗? 我可以绕过这个问题吗?

谢谢! 图里安德拉斯

【问题讨论】:

  • youtube 视频 rtsp 链接是否适用于任何 android 版本?我无法播放单个视频。我使用gdata.youtube.com/feeds/api/videos 获取 youtube 视频的 rtsp 链接。

标签: android tcp video-streaming rtp


【解决方案1】:

如果只是 UDP,您可以将数据包转发到本地 UDP 端口(或每个端口转发到单独的端口,这可能会简化向内置 RTP 堆栈提供数据的事情)。

VLC 无法播放它可能是由于它默认不支持的音频编解码器。没有更多细节很难知道。

【讨论】:

    【解决方案2】:

    我有一个部分解决方案。

    我目前正在从事一个 Ra&D 项目,该项目涉及从服务器到 Android 客户端的 RTP 媒体流。

    通过这项工作,我为我自己的名为 smpte2022lib 的库做出了贡献,您可以在这里找到:http://sourceforge.net/projects/smpte-2022lib/

    借助此类库(Java 实现是目前最好的),您可能能够解析来自专业流媒体设备、VLC RTP 会话的 RTP 多播流......

    我已经使用来自使用 SMPTE-2022 2D-FEC 捕获的专业 RTP 流的流或使用 VLC 生成的简单流成功地测试了它。

    很遗憾,我不能在此处放置 code-sn-p,因为使用它的项目实际上受版权保护,但我确保您可以通过 RtpPacket 构造函数帮助解析 UDP 流来简单地使用它。

    如果数据包是有效的 RTP 数据包(字节),它们将被解码。

    此时,我将对 RtpPacket 的构造函数的调用包装到一个线程,该线程实际上将解码的有效负载存储为媒体文件。然后我会以这个文件为参数调用VideoView。

    交叉手指;-)

    亲切的问候,

    大卫·费舍尔

    另见RTP on Android MediaPlayer

    【讨论】:

      【解决方案3】:

      我正在尝试使用 vlc, 如果您作为客户打开 rtsp://serveradress:port/path vlc 中的端口通常是 554。 我从没用过安卓,但如果你有 vlc,你必须打开网络流并在上面输入地址格式。 尝试找出发出的端口流不一定是 554。 还要确保您的防火墙不会阻止发送流的端口。

      这里有一些 vlc 文档

      vlc documentationvlc wiki

      祝你好运

      【讨论】:

        【解决方案4】:

        我现在正在开发这个@@https://net7mma.codeplex.com/

        因为 RTSP Interleaved (RTP/AVP/TCP) 需要不固定的内容长度,这对苹果提出的隧道方法不利。

        根据苹果@https://web.archive.org/web/20130501053040/https://developer.apple.com/quicktime/icefloe/dispatch028.html

        您可以忽略 Content-Length,但我会看到更好的努力来使用 Multi-Part/Chunked 响应选项并将每个 $ 块作为一个块发布回来,因为一些代理会观察 content-length 中的长度并关闭连接和交错 RTP 期间这很糟糕!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-01
          • 2012-08-11
          • 1970-01-01
          • 2015-11-21
          相关资源
          最近更新 更多