用于H264流的Android硬件加速视频解码器

时间:2015-09-03 08:59:09

标签: android h.264 mediacodec hardware-acceleration stagefright

我正在开发一种Android硬件加速视频解码器,用于解码实时H264附件B流。经过一番研究,似乎我需要弄脏手来做这件事。我找到了几个关键字,例如OMXCodec,Android的操作系统stagefright和ffmpeg的stagefrightMediaCodec API,GStreamer。我也开始知道 - 硬件无关的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到困惑,因为我没有找到任何直接的资源来推进他们中的任何一个。我的要求是 -

  1. Android硬件加速视频解码器
  2. 至少支持Qualcomm的Snapdragon,三星的Exynos和Tegra
  3. 实现必须在本机C / C ++层(而不是Java层)
  4. Android 4.1.x支持Jellybean就足够了
  5. 无需像以后那样实现 - 渲染,因为这些已经在运行。只需解码输入缓冲区并生成解码输出缓冲区即可继续使用现有管道。
  6. 我试图从Android的stagefright的AwesomePlayer.cpp,SimplePlayer.cpp和ffmpeg stagefright的命令行可执行代码中获得一些提示。但是对我来说,没有什么比选择和继续这些东西更有意义了。

    我该如何接近?是否有任何有用的资源来获得清晰的直觉?

    提前致谢!

1 个答案:

答案 0 :(得分:2)

我最近使用MediaCodec API实现了这样一个系统。遗憾的是,此API未在NDK中公开,因此只能从Java层访问。

我发现的最佳资源是这套指南:

http://bigflake.com/mediacodec/

由于您需要在NDK中实现这一点,因此我猜您需要编写一个瘦Java库来与MediaCodec API进行交互,然后通过C ++层中的JNI调用它。

如果您在FFMPEG路线上注意其许可证,则对分布式软件的限制非常严格。

祝你好运!