来晚了的 NativeCodec

久了没更新NDK,今天下载了r10d,惊讶的发现多了个native-codec这个sample。
应该就是API 16那个JAVA版MediaCodec的native版
限制就是 最低 api 21 就是Android 5.0
这限制基本上近期都没戏了,先去刷个5.0的系统再来测试。

=============2015年2月10日,测试结果来了======================



测试视频:

http://movietrailers.apple.com/movies/universal/jurassicworld/jurassicworld-biggame_h1080p.mov
视频参数:

直接播放mov格式有问题的,用ffmpeg转成mp4格式
ffmpeg -i ?jurassicworld-biggame_h1080p.mov -c copy?jurassicworld-biggame_h1080p.mp4

精简了ndk里面的sample,方便阅读:native-codec

通过busybox top观测:CPU始终在1%~10%左右。测试机型 mi 2s

API 14开始支持的OpenMAX AL接口,只支持MPEG-TS封装的流,这个限制比较多,如果用来播放网络流如RTMP,需要再将解析后的H.264,AAC数据包再以mpeg-ts的格式封装进行硬解码,当然也是可行的只是稍微麻烦。2015年1月 92.9%的设备支持率。实现demo。

API 16提供了MediaCodec,可以编解码buffer型了,但是只有JAVA版,也有项目通过jni一一对应java层api,稍麻烦。 或者网络层就用java实现,抛弃jni。但是2015年1月 84%以上的支持率也是可以考虑了。

API 21 ,nativecodec来了,但是来得太晚,2015年1月,Android5.0根本排不上号,想必还得等上几年。

以上设备支持率数据来自友盟指数http://www.umindex.com/devices/android_os

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 来晚了的 NativeCodec

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据