Android H264 流的硬件加速视频解码器
Android hardware accelerated video decoder for H264 stream
我正在开发一个 Android 硬件加速视频解码器,用于解码实时 H264 Annex B 流。经过一番研究,似乎我需要亲自动手才能做到这一点。我遇到了几个关键字,例如 OMXCodec
、Android 的 OS stagefright
和 ffmpeg 的 stagefright
、MediaCodec
API、GStreamer
。我也开始知道 - 硬件不可知的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到困惑,因为我没有找到任何直接的资源来推进其中任何一个。我的要求是 -
- Android 硬件加速视频解码器
- 至少支持高通骁龙、三星Exynos和Tegra
- 实现必须在原生 C/C++ 层(不是 Java 层)
- 来自Android 4.1.x 的支持1.x Jellybean 就足够了
- 无需实施渲染等后期阶段,因为这些阶段已经在运行。只需要解码输入缓冲区并生成解码输出缓冲区即可继续现有管道。
我试图从 Android 的 stagefright 的 AwesomePlayer.cpp、SimplePlayer.cpp 和 ffmpeg stagefright 的命令行可执行代码中获得一些提示。但对我来说,选择和继续这些东西没有多大意义。
我该如何接近?是否有任何有助于获得清晰直觉的资源?
提前致谢!
我最近使用 MediaCodec API 实现了这样一个系统。不幸的是,此 API 未在 NDK 中公开,因此只能从 Java 层访问。
我找到的最好的资源是这套指南:
http://bigflake.com/mediacodec/
既然你有一个硬性要求在 NDK 中实现它,那么我想你需要写一个薄的 Java 库来与 MediaCodec API 进行交互,然后调用它通过 C++ 层的 JNI。
如果你走 FFMPEG 路线,请注意它的许可证,它对分布式软件有相当的限制。
祝你好运!
我正在开发一个 Android 硬件加速视频解码器,用于解码实时 H264 Annex B 流。经过一番研究,似乎我需要亲自动手才能做到这一点。我遇到了几个关键字,例如 OMXCodec
、Android 的 OS stagefright
和 ffmpeg 的 stagefright
、MediaCodec
API、GStreamer
。我也开始知道 - 硬件不可知的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到困惑,因为我没有找到任何直接的资源来推进其中任何一个。我的要求是 -
- Android 硬件加速视频解码器
- 至少支持高通骁龙、三星Exynos和Tegra
- 实现必须在原生 C/C++ 层(不是 Java 层)
- 来自Android 4.1.x 的支持1.x Jellybean 就足够了
- 无需实施渲染等后期阶段,因为这些阶段已经在运行。只需要解码输入缓冲区并生成解码输出缓冲区即可继续现有管道。
我试图从 Android 的 stagefright 的 AwesomePlayer.cpp、SimplePlayer.cpp 和 ffmpeg stagefright 的命令行可执行代码中获得一些提示。但对我来说,选择和继续这些东西没有多大意义。
我该如何接近?是否有任何有助于获得清晰直觉的资源?
提前致谢!
我最近使用 MediaCodec API 实现了这样一个系统。不幸的是,此 API 未在 NDK 中公开,因此只能从 Java 层访问。
我找到的最好的资源是这套指南:
http://bigflake.com/mediacodec/
既然你有一个硬性要求在 NDK 中实现它,那么我想你需要写一个薄的 Java 库来与 MediaCodec API 进行交互,然后调用它通过 C++ 层的 JNI。
如果你走 FFMPEG 路线,请注意它的许可证,它对分布式软件有相当的限制。
祝你好运!