为了测试一个自定义协议,我需要进行硬件加速的H.264解码。
在网上搜索后,我发现了一些 Android 上执行硬件加速视频解码的方法:
- 使用ffmpeg的libstagefright (关于libstagefright的概述) 或者直接在操作系统中使用 libstagefright,例如这里。
- 在特定的硬件平台上使用OpenMax,例如这里是关于三星设备的讨论以及这里是关于高通Snapdragon系列的讨论。
- 一些人提到了PVplayer。
有些人声称只有libstagefright是可行的方法,而高通的工程师显然已经取得了成功。
目前我不确定哪种方法可行,我有些困惑。如果所有方法都可行,我当然更愿意选择一个硬件无关的方法。
我测试过几个使用硬件加速的视频播放器,包括 Galaxy Tab 7.7(3.2 & Enxyos)、VLC、Mobo、Rock、vplayer。其中,Rock 和 Mobo 的表现良好,VLC 不起作用,vplayer 存在一个渲染缺陷影响了其性能。
不管怎样,我对 Rockplayer 进行了一个“操作”,删除了 data\data\com.redirecting\rockplayer 目录下的所有 .so 库文件,软件解码崩溃,但硬件解码仍然正常工作!我不明白他们是如何做到这点的。它似乎让我认为硬件加速可以独立于硬件平台。
有谁能够解决这个问题吗?或者提供任何相关的参考资料以及更好的细节描述?