【问题标题】:android MediaPlayer alternative for rtsp streamingrtsp流媒体的android MediaPlayer替代品
【发布时间】:2014-02-19 15:03:52
【问题描述】:

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

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

我在 3rd party sdk 中搜索了很多,我找到了 Vitamio,但它不支持同一活动中的多视图(有一个错误)。另一个商业 sdk 是 Nexstreaming,但不适用于 rtsp 协议。 我没有发现其他任何东西。你认识其他人吗?

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

有什么帮助吗?

【问题讨论】:

  • 您是否尝试过使用 GStreamer?它是否比默认播放视频的方式更好?

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


【解决方案1】:

VideoView 和 MediaPlayer 基于硬件解码器,针对不同的设备、制造商、平台。它们经过优化以提供最佳的播放体验(例如 1080p),但当多个实例必须同时处于活动状态时,它们就会变得很糟糕。我从未见过可以打开超过 4 个“OMX 句柄”的 Android 设备。但甚至不能保证两个会起作用。并且这些框架并不是为了在硬件资源耗尽时回退到软件解码器而构建的。

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

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

【讨论】:

  • 那么,对于视频流新手来说,有什么简单的方法呢?
  • 您是否尝试过在video player tutorial 中增加视频接收器?正如我所说,如果您使用 GPU 进行 yuv 到 rgb 的转换和缩放,您可能会发现性能显着提高。 This discussion 表明这个想法对 GStreamer 范式并不完全陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多