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

Android hardware accelerated video decoder for H264 stream

我正在开发一个 Android 硬件加速视频解码器,用于解码实时 H264 Annex B 流。经过一番研究,似乎我需要亲自动手才能做到这一点。我遇到了几个关键字,例如 OMXCodec、Android 的 OS stagefright 和 ffmpeg 的 stagefrightMediaCodec API、GStreamer。我也开始知道 - 硬件不可知的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到困惑,因为我没有找到任何直接的资源来推进其中任何一个。我的要求是 -

  1. Android 硬件加速视频解码器
  2. 至少支持高通骁龙、三星Exynos和Tegra
  3. 实现必须在原生 C/C++ 层(不是 Java 层)
  4. 来自Android 4.1.x 的支持1.x Jellybean 就足够了
  5. 无需实施渲染等后期阶段,因为这些阶段已经在运行。只需要解码输入缓冲区并生成解码输出缓冲区即可继续现有管道。

我试图从 Android 的 stagefright 的 AwesomePlayer.cpp、SimplePlayer.cpp 和 ffmpeg stagefright 的命令行可执行代码中获得一些提示。但对我来说,选择和继续这些东西没有多大意义。

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

提前致谢!

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

我找到的最好的资源是这套指南:

http://bigflake.com/mediacodec/

既然你有一个硬性要求在 NDK 中实现它,那么我想你需要写一个薄的 Java 库来与 MediaCodec API 进行交互,然后调用它通过 C++ 层的 JNI。

如果你走 FFMPEG 路线,请注意它的许可证,它对分布式软件有相当的限制。

祝你好运!