7

在 Android ICS 及更高版本中,正在使用新的 OpenMax IL API 版本,使旧的二进制 blob 无用/未使用。这会导致运行 ICS 的旧设备正常运行并且花花公子的视频播放中断(例如 YouTube HQ 和 IMBD),因为与 ffmpeg 在同一设备上可以执行的操作相比,Android 的后备软件解码器很糟糕(我测试了 MXPlayer+arm6vfp ffmpeg 和一部 720p 电影播放效果很好)。

我正在尝试深入研究 Android 源代码,以查看我可以添加/替换代码的具体位置和内容,以允许使用 ffmpeg 库的强大功能。问题是我不确切知道正在使用什么代码,例如用于解码视频的 YouTube 应用程序,或者它是如何决定的。

因此,据我所知,我有两个选择:

  1. 找出当前正在使用的软件解码器,并尝试将其外部接口包裹在 ffmpeg 周围,有效替代当前使用的慢速软件解码器。最终结果将是一个 .所以我可以推送到设备。

  2. 弄清楚如何诱使 Android 考虑基于 ffmpeg 的 OMX 库(我已经为 Android 成功构建了一个:limoa)并将其添加到考虑的库列表中的某个位置(或者更好:替换不可用的硬件编解码器)。

作为扩展,我还想通过它使摄像机视频编码工作,因此非常需要一个真正的集成解决方案。问题是:如何,在哪里,以及什么?搜索 Android 源代码树会在许多不同的地方提供大量的“H264”和相关内容。我需要尽可能最低和最简单的,所以我可以简单地包装假设的decode(buffer)函数调用以使用 ffmpeg (libavcodec)。

4

1 回答 1

4

在我看来,这个演示文稿(“使用 OpenMAX IL 将硬件视频编解码器集成到 Android Stagefright”)正是您想要做的。祝你的项目好运!

于 2012-08-09T19:03:28.987 回答