【发布时间】:2012-07-04 12:41:55
【问题描述】:
我需要一个研究项目的硬件加速 H.264 解码,以测试自定义协议。
由于我在网络上进行了搜索,因此我找到了几种在 Android 上执行硬件加速视频解码的方法。
- 使用 ffmpeg libstagefright (overview of libstagefright) 或直接在操作系统中使用 libstagefright,如here。
- 在特定硬件平台上使用 OpenMax。喜欢here about samsung device 和here about Qualcomm Snapdragon series
- 有人提到PVplayer,
有些人"say"libstagefright 是唯一的出路,而高通人显然已经取得了成功。
目前我不确定哪种方式可行。我现在有点困惑。如果一切正常,我当然更喜欢独立于硬件的方法。
我已经用 Galaxy Tab 7.7(3.2 和 Enxyos)测试了一些视频播放器的硬件加速,VLC、Mobo、Rock、vplayer、rock 和 mobo 工作正常,VLC 不工作,vplayer 似乎有一个渲染错误,这会降低其性能。
无论如何,我对 Rockplayer 进行了“操作”并删除了它在 data\data\com.redirecting\rockplayer 中的所有 .so 库,并且软件解码崩溃,而硬件解码仍然可以正常工作!我想知道他们是怎么做到的。 在我看来,硬件加速可以独立于硬件平台。
有人能解决这个问题吗?或者提供任何包含更多信息或更详细信息的参考?
【问题讨论】:
-
我有点糊涂了!您想直接访问(不使用 Android 媒体 API)到硬件加速解码器来解码您的比特流吗?因为所有现代手机 SOC 都使用硬件加速来解码 H.264。
-
@OakBytes,我想实现硬件加速解码,但是已经完成了。现在我只知道如何用ffmpeg软件解码来解码流。硬件加速是指 1080P@30fps 的性能水平,而软件解码则要弱得多。我避免将软件解码称为使用 CPU,因为硬件加速模块也是 CPU 的一部分。所有已经使用硬件加速的现代手机是什么意思?
-
使用 Gallery Media Player 播放 H.264 剪辑时,最近所有的 Android 手机都使用 H/W 加速 H.264 解码器。我猜你打算使用 H.264 解码器来解码原始 H.264 比特流并获得解码输出,而不是播放包含 H.264 视频和一些音频的文件。
-
@OakBytes 你是对的。这正是我想要的。只是原始比特流,没有 mkv 或 mp4 容器。对不起,我没有说得更清楚。我想基于 NAL 或原始比特流上的帧级别调用 H/W 解码,而不是为文件设置媒体播放器。
-
@Holyglenn - 你的项目成功了吗?也许你发现了一些关于主题的新信息?
标签: android video h.264 hardware-acceleration stagefright