用于rtsp流的android MediaPlayer替代方案

时间:2014-01-28 10:47:42

标签: android ffmpeg android-mediaplayer android-videoview gstreamer

我需要在我的应用中使用多个查看器,gridlayout中的每个视图都必须显示来自通过rtsp流式传输的相机的视频。

我尝试使用Android VideoView和MediaPlayer,但结果不满足我,我有很多启动视频的延迟,以及使用Lg L9手机的兼容性问题(请参阅my question here

我搜索了很多第三方sdk,我找到了Vitamio,但它不支持同一活动中的多视图(有一个bug)。另一个商业sdk是Nexstreaming但不适用于rtsp协议。 我什么都没找到。你认识其他人吗?

使用NDK可能是另一种方法,所以我看到Gstreamer(tutorial),但它似乎太复杂了。另一种方式可能是FFMPEG,但我还没有找到明确的指南。

任何帮助?

1 个答案:

答案 0 :(得分:1)

VideoView和MediaPlayer基于硬件解码器,专用于不同的设备,制造商和平台。它们经过优化可以提供最佳的播放体验(例如1080p),但是当多个实例必须同时处于活动状态时会相当瘫痪。我从未见过可以打开超过4个“OMX句柄”的Android设备。但是,甚至无法保证两者都能奏效。当HW资源耗尽时,这些框架不会构建为回退到软件解码器。

幸运的是,现代设备具有足够的通用计算能力以用解码的视频流填充整个屏幕(例如,用于960×540显示器的四个270p流)。 Gstreamer使用ffmpeg来解码流,但是这个库可能更适合您的目的,因为它包含了必要的功能,您可以忽略次要的实现细节。

我相信你会更好地使用OpenGL表示层,因为这样你就可以使用带有YUV 4.2.0平面图像(由解码器产生)的着色器将颜色转换卸载到GPU,并显示RGB 24 bpp纹理。