Android系统的远程视频修正

除苹果手机外,现在大多数手机都是采用Android系统,由于Android的开放性,不同的手机设备存在一些差异,所采集的视频数据显示出来在方向上存在一定的误差,这通常与硬件设备的驱动相关,BRAChat音视频解决方案,新增加了API接口在远程显示时,可以支持手工来修正远程视频的方向。

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

1.   

2.  // 远程视频方向修正标志定义

3.  varBRAC_ROTATION_FLAGS_MIRRORED       =       0x1000;        // 图像需要镜像翻转

4.  varBRAC_ROTATION_FLAGS_ROTATION90     =       0x2000;        // 顺时针旋转90

5.  varBRAC_ROTATION_FLAGS_ROTATION180    =       0x4000;        // 顺时针旋转180

6.  var BRAC_ROTATION_FLAGS_ROTATION270   =        0x8000;       // 顺时针旋转270

7.   

8.  // 用户信息控制类型定义(APIBRAC_UserInfoControl 传入参数)

9.  varBRAC_USERINFO_CTRLCODE_ROTATION    =        8;            // 让指定的用户视频在显示时旋转,wParam为旋转角度参数

复制代码

在视频显示过程中,如果需要将视频顺时针旋转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, "");

复制代码

注意:新增加的API接口目前暂时只支持BRAChat for Windows SDK,BRAChat for Web SDK,从BRAChatr3997开始的版本即可支持。

 

 

2、从BRAChatr4012版本开始,BRAChat for Android SDK也支持“视频方向手工修正”API接口,可用于修正本地视频采集的方向。

修正本地视频采集方向时,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, "");

复制代码


对本地的视频采集方向进行手工修正,通常用于某些特定的Android设备(手机、Pad),当采集的视频方向和标准Android框架有差异时进行校正,通常在本地进行校正之后,便不需要在远程进行校正。

可以在任何时机对本地视频采集方向进行动态的修正,即可以动态的调用上面的API接口。

3android端使用这个接口主要是调整视频采集方向,对android本地预览没有影响,影响的是android端传到远程视频
使用方法如下
1
)、初始化sdk之后,调用AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION,0);

2
)、在视频通话中发现android采集方向不对,调用AnyChatCoreSDK.UserInfoControl(-1,AnyChatDefine.BRAC_USERINFO_CTRLCODE_ROTATION,AnyChatDefine.BRAC_ROTATION_FLAGS_ROTATION90 0, "");

第三个参数的取值是偏转角度,参考web版本的值定义。

 

4、温馨提醒:建议你在视频通话中加一个按钮,然后单击按钮调用采集修正,这样更容易看到效果

第一步开启手动修改视频显示方向,需要关闭视频本地视频自动旋转
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 0);

第二步修正采集方向
AnyChatCoreSDK.UserInfoControl(-1,AnyChatDefine.BRAC_USERINFO_CTRLCODE_ROTATION,AnyChatDefine.BRAC_ROTATION_FLAGS_ROTATION90, 0, "");
第三个参数为0是不做任何修正,可以取的值有

1.  03.varBRAC_ROTATION_FLAGS_MIRRORED       =       0x1000;        // 图像需要镜像翻转

2.   

3.  04.varBRAC_ROTATION_FLAGS_ROTATION90     =       0x2000;        // 顺时针旋转90

4.   

5.  05.varBRAC_ROTATION_FLAGS_ROTATION180    =       0x4000;        // 顺时针旋转180

6.   

7.  06.varBRAC_ROTATION_FLAGS_ROTATION270    =       0x8000;        // 顺时针旋转270

8.   

9.   

复制代码

 


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。