用基于ffmpeg的标准替换标准的Android H264软件编码器

rub*_*nvb 7 c++ android ffmpeg android-ndk openmax

在Android ICS及更高版本中,正在使用新的OpenMax IL API版本,使旧的二进制blob无用/未使用.这导致旧的设备,否则运行ICS只是很好和花花公子,以打破视频播放(例如,YouTube HQ和IMBD),因为与ffmpeg在同一设备上可以做的相比,Androids后备软件解码器很糟糕(我测试了MXPlayer + arm6vfp ffmpeg和720p电影回放很棒).

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

所以据我所知,我有两个选择:

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

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

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