android编程:调节视频画面分辨率,Android实现任意分辨率视频编码的思考与实现

HardwareVideoCodec是一个高效的Android音视频编码库,支持软编和硬编。使用它你可以很容易的实现任何分辨率的视频编码,无需关心摄像头预览大小。一切都如此简单。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎Issue。

对Android摄像头开发有所了解的童鞋都知道,每个设备的摄像头都只支持固定的一系列分辨率,并且每个设备都有所不同。比如有些手机支持540x960,有的手机却不支持。

这使得我们每次使用Android摄像头的时候,不得不去获取一个支持分辨率列表,然后从中选取一个匹配的分辨率。但是前面说了,每个设备支持的分辨率都是不一样的,万一我们希望的分辨率正好在某设备上不支持,那怎么办。相信不少人不得不妥协,选择一个普遍支持的分辨率,来支持绝大多数的设备。这虽然能把出错率降到最低,但理论上还是会存在不支持的设备。对于有强迫症的部分人,简直不能忍!

摄像头兼容性这件苦差事,相信折磨着不少同鞋,也包括我。所以最近我一直在思考,有没有一劳永逸的方法,来支持任意分辨率摄像头的预览以及视频编码呢?我们先来分析一下。

对于以上的提问其实可以分解为两个问题

1. 如何根据给定的目标分辨率来选择最合适的摄像头分辨率

2. 如何高效的把摄像头输出画面大小裁剪成目标大小

最佳分辨率的选择

这里有人可能知道,选择一个最接近的分辨率不就行了吗。那么这里我要提问了,这个最接近我们如何定义?相信很多同鞋也去网上查找过一些帖子,我一开始也是这样子,能找到的基本上都是对摄像头分辨率进行排序,然后选择一个最接近目标分辨率的大小。我司的线上项目也是使用的这种方法,很遗憾,在某些机型上出现了选择错误。为什么会这样,问题出在哪里?

各位有没有想过,分辨率是包含宽和高这两个属性的。举个例子,我们需要输出540x960这个分辨率,但是某机型并不支持这个分辨率,只支持720x960和540x1080这两个分辨率,如果我们用排序法对这两个分辨率进行排序,我们应该优先对宽进行排序,还是对高进行排序呢。显然,这里应该优先对宽排序,进而选择540x960这个分辨率。同理,有没有可能会出现对高进

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值