android - 如何让Android流畅播放高质量的RTSP流?

标签 android video streaming rtsp darwin

有没有人有幸通过 RTSP 将高质量视频(超过 1000kbps)流式传输到 Android?

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

似乎 YouTube 应用对其高质量视频使用普通 HTTP 下载。这很好用并且播放流畅,但不适用于流媒体直播视频。有人有幸通过 RTSP 将高质量视频流式传输到 Android 吗?

视频使用 H.264、1500kbps、24fps 和 720x480 分辨率编码。在应用程序中,我们使用 VideoView 来播放视频。我们正在使用 Darwin Streaming Server,但如有必要,我们对其他选项持开放态度。

2011 年 6 月 23 日更新

今天进一步了解 Darwin 。到目前为止,我只是在 Darwin 模块中记录请求和 session 信息。

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

我试图强制客户端缓冲更多,但我还没有想出如何做到这一点。我只是在浏览 Darwin Streaming Server 源代码并试图弄清楚它们是如何做事的。那里有 Darwin 专家吗?

2011 年 6 月 24 日更新

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

最佳答案

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

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

关于android - 如何让Android流畅播放高质量的RTSP流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446135/

相关文章:

android - 如何从 IP 地址解析网络主机名

android - 使用Eclipse的Media Player播放YouTube视频

html - 在主页中嵌入视频应该减慢页面速度吗?

c++ - 使用ffmpeg编码: video quality drops

javascript - 如何使用 supertest 和 jest 测试图像上传(流)?

java - AsyncTask 和上下文

android - 我的数据文件在哪里?

android - BottomSheetDialogFragment暴露的高度

C++:可能是 Xcode (Mac) 问题。无法使用 getline() 从外部文件中读取数字

java - 如何将实时数据(数字)传输到 Android 应用程序?