7

我正在尝试构建一个接收 RTSP 流并显示音频/视频的 Android 应用程序。我一直在使用 VideoView,但仍然会从实时延迟 3 到 10 秒。我需要这个延迟低于 3 秒。

在 PC 上,我可以使用 VLC 看到相同的 RTSP 流,只有 1-2 秒的延迟。如何在 Android 上复制它?即使我使用 MoboPlayer/RockPlayer 等其他应用程序,延迟仍然是 3 到 10 秒。(如果重要,我将在 PC 和 Android 上无线连接到 RTSP 流)

我已经开始研究使用 FFmpeg for Android 以及 Gstreamer SDK for Android 作为 MediaPlayer 的替代品,但是对于像我这样的新手来说,它们都很难使用,而且我遇到了多个问题。

任何和所有信息将不胜感激!

4

1 回答 1

1

首先,我认为延迟是因为在 Android 硬件上无法控制的初始缓冲区大小MediaPlayer。这可以通过使用自定义 SW 媒体播放器作为 FFMpeg(现在的 AVconv)或 GStreamer 来解决。但这会降低您的性能(取决于视频流压缩、分辨率、fps)和设备电池寿命。

当然,使用 FFMpeg 或类似的 C/C++ 框架进行本地开发很复杂,需要大量的时间和经验。

另一种选择:您可以尝试使用新的Android 4.1 Java API来访问视频和音频解码器。并使用此 API 和一些代码构建您自己的 RTSP 播放器以从 RTSP 服务器加载视频流(可能一些 Java 库已经存在)。

Android 4.1 多媒体

于 2014-09-11T08:36:10.460 回答