AnyChat技术支持论坛

标题: 2014-10-26 开放视频显示、录制过程中的裁剪模式控制接口 [打印本页]

作者: admin    时间: 2014-10-26 14:18
标题: 2014-10-26 开放视频显示、录制过程中的裁剪模式控制接口
    在PC(Web)与移动终端(手机、Pad)进行视频通讯的过程中,由于移动终端的手持方向将会影响到视频采集的方向,如横向放置时采集的视频大小是320x240(4:3)方向正立,而竖向放置时采集的视频大小是240x320(3:4)方向为横向,为了保持在PC(Web)端所看到的画面始终是正立的就需要对视频画面进行旋转,然后调整到合适的大小,而视频画面经过旋转之后,分辩率会发生变化,在调整的过程中会对视频进行裁剪,自AnyChat r4319版本开始,我们开放了裁剪模式控制接口,可以由上层应用根据实际的应用场景来选择:
  1. // 视频裁剪模式定义
  2. #define ANYCHAT_VIDEOCLIPMODE_AUTO                   0        ///< 默认模式,以最大比例进行裁剪,然后再整体拉伸,画面保持比例,但被裁剪画面较大
  3. #define ANYCHAT_VIDEOCLIPMODE_OVERLAP                1        ///< 重叠模式,只取最大有效部分,对边缘进行裁剪
  4. #define ANYCHAT_VIDEOCLIPMODE_SHRINK                 2        ///< 缩小模式,缩小到合适的比例,不进行裁剪
  5. #define ANYCHAT_VIDEOCLIPMODE_STRETCH                3        ///< 平铺模式,不进行裁剪,但可能导致画面不成比例
  6. #define ANYCHAT_VIDEOCLIPMODE_DYNAMIC                4        ///< 动态模式,由上层应用根据分辩率来调整显示表面,保持画面不变形
复制代码
每种模式的工作原理介绍如下:
一、默认模式,以最大比例进行裁剪,然后再整体拉伸,画面保持比例,但被裁剪画面较大,常量定义为:ANYCHAT_VIDEOCLIPMODE_AUTO

二、重叠模式,只取最大有效部分,对边缘进行裁剪,常量定义为:ANYCHAT_VIDEOCLIPMODE_OVERLAP

三、缩小模式,缩小到合适的比例,不进行裁剪,常量定义为:ANYCHAT_VIDEOCLIPMODE_SHRINK

四、平铺模式,不进行裁剪,但可能导致画面不成比例,常量定义为:ANYCHAT_VIDEOCLIPMODE_STRETCH

五、动态模式,由上层应用根据分辩率来调整显示表面,保持画面不变形,常量定义为:ANYCHAT_VIDEOCLIPMODE_DYNAMIC,在动态模式下,视频画面旋转时将会触发异步事件(WM_GV_VIDEOSIZECHG),上层应用需要主动调整显示表面(控件)的大小,否则视频将会被拉伸处理导致画面变形。(注意:动态模式暂时不适应录制参数设置)

客户端SDK增加视频显示、录制过程中的视频裁剪模式控制接口:
  1. #define BRAC_SO_VIDEOSHOW_CLIPMODE                        86        ///< 远程视频显示旋转裁剪模式(参数为int型, 0 自动[默认])
  2. #define BRAC_SO_RECORD_CLIPMODE                          144        ///< 录制视频裁剪模式(参数为:int型)
复制代码
服务器SDK增加录制过程中的视频裁剪模式控制接口:
  1. #define BRAS_SO_RECORD_CLIPMODE                                8        ///< 录制视频裁剪模式(参数为:int型)
复制代码
调用示例代码(JavaScript):
一、视频显示时采用动态模式
  1. var iVideoClipMode = ANYCHAT_VIDEOCLIPMODE_DYNAMIC;
  2. BRAC_SetSDKOption(BRAC_SO_VIDEOSHOW_CLIPMODE, iVideoClipMode);
复制代码
二、视频录制时采用重叠模式
  1. var iVideoClipMode = ANYCHAT_VIDEOCLIPMODE_OVERLAP;
  2. BRAC_SetSDKOption(BRAC_SO_RECORD_CLIPMODE, iVideoClipMode);
  3. var dwFlags = ANYCHAT_RECORD_FLAGS_VIDEO + ANYCHAT_RECORD_FLAGS_AUDIO + ANYCHAT_RECORD_FLAGS_MIXAUDIO + ANYCHAT_RECORD_FLAGS_MIXVIDEO + ANYCHAT_RECORD_FLAGS_ABREAST;
  4. BRAC_StreamRecordCtrlEx(-1, 1,  dwFlags, 0, "Hello, AnyChat!");
复制代码

作者: admin    时间: 2014-11-6 14:22
可下载最新的AnyChat for Web SDK重新安装插件),运行AnyChatWebDemo示例代码(位于SDK包的src目录下),在“高级设置”-->“其它设置”栏目中增加了一个设置项“视频显示裁剪模式”。

当另一方用手机连接,且手机竖拿时,通过调节“视频显示裁剪模式”可以看到不同裁剪模式的实际效果。

clipmode.jpg (131.67 KB, 下载次数: 4563)

clipmode.jpg





欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3