直播时屏幕绿条

用自己的sdk,在视频采集或者播放的过程中可能屏幕上会出现绿条,这个时候通常是预览或者编码的分辨率跟手机支持的分辨率不匹配,导致系统用绿色填充,这样只需要做一下筛选相机分辨率,设置最接近的分辨率给预览或者编码就好啦

public Camera.Size onPreviewSizeSelected(List<Camera.Size> list) {
/**
* You should choose a suitable size to avoid image scale
* eg: If streaming size is 1280 x 720, you should choose a camera preview size >= 1280 x 720
*/

	Camera.Size size = null;
	if (list != null) {
		VideoEncodingSize encodingSize = getVideoEncodingSize(mCameraConfig);
	    //如果存在相同比例直接返回
		 for(Camera.Size s : list){
	        if((s.width == encodingSize.width) && (s.height == encodingSize.height)){
            return s;
        }
    }
    //不存在时进行遍历寻找最接近尺寸
	 float reqRatio = ((float)encodingSize.width)/encodingSize.height;
	 float listRatio,minRatio;
	 float maxRatio=10000.00f;//值不唯一,[2,+∞]
	 for (Camera.Size s : list) {//预览预览数据列表>设置的数据
     if (s.width >= encodingSize.width && s.height >= encodingSize.height) {
	     listRatio = ((float)s.width)/s.height;
         minRatio = Math.abs(listRatio-reqRatio);
         if(minRatio<maxRatio) {
	         size = s;
             maxRatio = minRatio;
            }
        }
    }
}
      return size;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值