Google你能把Android的多媒体搞得再烂一些吗

搞了几年Android多媒体了,最感受就是Android的多媒体真的非常烂!
@Google,你做的再烂一点吗?

最近在搞Android视频编码,真是快被折腾疯了,最早用FFmpeg x264编码,虽然做了很多优化,但是效率还是一个问题;最后采用硬编码去搞,在解决了一系列的问题后算是跑通了,但是最后发现画面质量low的让我怀疑是不是我眼瞎!!!
同样的比特率,在Android编出来的和IOS没法比,差好几个量级,完全不是一个时代的东西,和FFmpeg设置SuperFast编出来的效果有的一拼了。我当时就想,坏了!!估计又掉谷歌的坑里了,最后发现果然如此,谷歌还真没让人失望(#‵′)凸!!
Android硬编码采用的是H264,通过查看录制的视频,发现采用的全是H264 Baseline,Baseline这是哪个年代的玩意了,这特么不是坑爹吗!在往上还有MainProfile,HighProfile,更别提HighProfile还有多个版本了。

在相同配置情况下,Highprofile(HP)可以比Mainprofile(MP)节省10%的码流量,比MPEG-2 MP节省60%的码流量,具有更好的编码性能。

上面是大家比较认可的一组数据,其中压根就没有提到Baseline,我目前的测试情况是:
IOS视频参数为720P,FPS = 30,GopSize = 30,BitRate = 1.65Mb/s
Android平台采用除BitRate之外的相同参数,硬编码要达到同等级的画面质量比特率差不多需要3Mb/s(目前只是初步分析,还未采用专业的视频画质评测工具进行分析)这意味什么…………这意味着:如果要达到相同画质的话,Android录制的视频文件几乎是IOS的两倍!!!
面对这种结果我接受不了,老板更接受不了,只能调研下Android到底能不能设置MediaCodec Profile。
首先看的是Android原生摄像机,太扯淡了……
先看720P的视频:
这里写图片描述

比特率约为11.6Mb/s

再看看4k的:
这里写图片描述
比特率约40Mb/s
这里解释下比特率,我们看到的文件大小都是按照字节计算的,比如1GB,1MB,1KB,字节和比特的换算是1:8,即把比特率除以8等于每秒视频需要的存储空间。
几个例子吧:以前我们看到的720P的电影大小约为2G,时长约为2个小时,每秒大小0.57MB,比特率约为4.5Mb/s。如果按照Google那玩意编码,同样的电影其大小差不多得5个G!!!而且还不能保证达到原有的效果!!!

调研了半天发现Google MediaCodecInfo API有设置Level和Profile的接口:

MediaCodecInfo.CodecProfileLevel

这里写图片描述

我有些怀疑……………………
继续查,发现这个功能在API 16上就是一假的,压根不能用只能用Baseline,在Android M上才实现:

KEY_LEVEL was added in Android 6.0 (API 23)

但是还有问题:

There are additional issues with profile selection. E.g. PROFILE is set to baseline profile for AVC as of Android 6.0 even if specified. This is planned to be fixed in the future.

不论是过去还是现在,多媒体是手机上非常重要的一个功能,只是Google做的太烂了,看看现今比较流行的多媒体应用(Snapchat,Instagram,映客,陌陌,快手等等),IOS的效果要远远好于Android,这并不是说Android开发人员能力的问题,Android平台相当一部分多媒体功能的实现还是依赖于FFmpeg,但是FFmpeg的效率始终是个问题。相比于IOS的AVFoundation来说,在Android平台往往需要花费数倍的投入,而且最终效果可能还不急IOS,对于Android开发人员来说实在是个悲哀,因为老板只看最终结果,而结果却是Android投入更多,开发时间更长,效果却最次。

Google自从5.0之后就开始狂发版本,但是有个卵用,7.0引入和分屏功能看似很炫,但是又有何用,真正用户需要的比如权限控制,性能优化,续航,稳定性等等这些又在哪里?其PPT简直就是在扯淡,和当年亩产万斤简直有着异曲同工之妙!!

截至3月6日,在过去7天的时间内对访问Google Play的所有设备进行统计汇总:[1]
这里写图片描述

参考文献
[1] Android三月版本分布图出炉:Nougat环比增加133%

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值