【问题标题】:How to get Android to play a high quality RTSP stream smoothly?如何让Android流畅播放高质量的RTSP流?
【发布时间】:2011-09-20 17:28:16
【问题描述】:

是否有人可以通过 RTSP 将高质量视频(超过 1000kbps)流式传输到 Android?

我们目前有在 3G 上运行良好的低质量视频流(大约 200kbps)。现在,我们正在尝试为用户提供更快的连接时提供高质量的流。高质量的视频在 VLC 中播放流畅,但 Android 播放似乎丢帧和块状,即使在 4 兆位连接上也是如此。

YouTube 应用似乎使用纯 HTTP 下载其高质量视频。这运行良好且播放流畅,但不适用于流式传输实时视频。有人有幸通过 RTSP 将高质量视频流式传输到 Android 吗?

视频使用 H.264、1500kbps、24fps 和 720x480 分辨率进行编码。在应用程序中,我们使用 VideoView 来播放视频。我们正在使用 Darwin Streaming Server,但如有必要,我们愿意接受其他选择。

2011 年 6 月 23 日更新

今天再看看达尔文。到目前为止,我只是在 Darwin 模块中记录请求和会话信息。

原始 Droid 尝试使用这些设置:3GPP-Adaptation:...size=131072;target-time=4000。虽然这意味着它需要 4 秒的缓冲,但 131Kb 仅能以 1200kbps 的速度播放大约一秒。我知道 1200kbps 很大,但对于高质量的视频(720x480 上的最小压缩)来说这是必要的。

我试图强制客户端缓冲更多,但我还没有弄清楚如何做到这一点。我只是在查看 Darwin Streaming Server 源代码并试图弄清楚他们是如何做事的。有达尔文专家吗?

2011 年 6 月 24 日更新

事实证明,使用普通的旧 HTTP 按需观看视频效果很好,而且质量没有损失。当我们开始直播时,我们将不得不更多地研究 RTSP。

【问题讨论】:

  • 嘿- 你能告诉我你是如何获得 HTTP URL 的吗?我目前正在使用 YouTube Gdata API(用于搜索),但流质量非常低;这对我来说会更好,谢谢。编辑:你在做自己的流媒体,没关系:)

标签: android video streaming rtsp darwin


【解决方案1】:

即使网络能够以该速率传输,您仍然需要对其进行解码。你用什么解码?您可能需要使用 NEON 加速视频解码器,这样您才能拥有适当的帧速率和大小合适的缓冲区...图形处理器仅与它所在的总线一样好...您的编码设置是什么和分辨率?

编辑:您正在以高比特率对那些进行编码,其中一半就可以了。您还需要确定问题出在哪里。 mediaPlayer 是否正在获取数据并且无法以合适的帧速率进行流式传输,在这种情况下,您必须用自己的播放器替换 MediaPlayer 代码。是网络问题,那么唯一的解决方案就是降低比特率,600Kbps 就可以了(或 500Kbps 视频,128Kbps 音频),它是 200k 流的 3 倍,在这么小的屏幕上,差异并不明显。

【讨论】:

  • 我在原帖中添加了编码和分辨率。我们将解码留给 Android 的 MediaPlayer,它应该使用 Stagefright,但也可以在其他设备上使用 OpenCore。
  • 不幸的是,我实时工作的唯一解决方案是 tokbox.com/opentok/api/features 可能不适合您的需求。所以我真的很想看看其他人怎么说。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多