Android视频方向为什么出现问题以及Android视频应用开发中的处理手段

由于Android的开放性,不同的设备存在一些差异,某些设备所采集的视频数据显示出来在方向上存在一定的误差,这通常与硬件设备的驱动相关,

在使用开发包开发过程中经常会出下有些android设备视频不正常的情况,比如在使用AnyChat即时通讯SDK开发过程中遇到这个问题我们可以这样解决:

新增加的API接口便是在远程显示时,可以支持手工来修正远程视频的方向。

增加的API接口参数定义(以AnyChat for Web SDK为例):


  1. // 远程视频方向修正标志定义
  2. var BRAC_ROTATION_FLAGS_MIRRORED       =        0x1000;        // 图像需要镜像翻转
  3. var BRAC_ROTATION_FLAGS_ROTATION90     =        0x2000;        // 顺时针旋转90度
  4. var BRAC_ROTATION_FLAGS_ROTATION180    =        0x4000;        // 顺时针旋转180度
  5. var BRAC_ROTATION_FLAGS_ROTATION270    =        0x8000;        // 顺时针旋转270度

  6. // 用户信息控制类型定义(API:BRAC_UserInfoControl 传入参数)
  7. var BRAC_USERINFO_CTRLCODE_ROTATION    =         8;            // 让指定的用户视频在显示时旋转,wParam为旋转角度参数
复制代码


修正本地视频采集方向时,userid为-1即可,参考如下API调用:

  1. // 禁止本地视频自动旋转
  2. AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 0);
  3. AnyChatCoreSDK.UserInfoControl(-1, AnyChatDefine.BRAC_USERINFO_CTRLCODE_ROTATION, AnyChatDefine.BRAC_ROTATION_FLAGS_ROTATION90, 0, "");
复制代码
如果需要取消对本地视频采集方向的修正,则参数传0即可,参考如下API调用:
  1. AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 1);
  2. AnyChatCoreSDK.UserInfoControl(-1, AnyChatDefine.BRAC_USERINFO_CTRLCODE_ROTATION, 0, 0, "");
复制代码


在视频显示过程中,如果需要将视频顺时针旋转90度,则可以调用如下的API:
  1. BRAC_UserInfoControl(mTargetUserId, BRAC_USERINFO_CTRLCODE_ROTATION, BRAC_ROTATION_FLAGS_ROTATION90, 0, "");
复制代码
在视频显示过程中,如果需要将视频顺时针旋转90度,旋转之后再镜像翻转,则可以调用如下的API:
  1. BRAC_UserInfoControl(mTargetUserId, BRAC_USERINFO_CTRLCODE_ROTATION, BRAC_ROTATION_FLAGS_ROTATION90 + BRAC_ROTATION_FLAGS_MIRRORED, 0, "");
复制代码
在视频显示过程中,如果需要取消旋转,则传入参数0即可,参考如下API调用:
  1. BRAC_UserInfoControl(mTargetUserId, BRAC_USERINFO_CTRLCODE_ROTATION, 0, 0, "");
复制代码

你可能感兴趣的:(音视频SDK,即时通讯,手机开发,视频会议,视频聊天)