# 视频管理

本文将介绍坐席用于视频中的相关功能。

# 设置本地宽高比

在会议内设置本地会议长宽比,会影响视频画面分长宽比,用于适配不同屏幕的显示需求,需在通话建立后调用。

/**
 * 设置宽高比
 * @param ratio 宽高比
 */
- (bool)setRatio:(float)ratio;

# 设置请求分辨率

在会议中修改对端画面的分辨率,这个参数结合访客 SVC 来使用可以实现通话中切换设置的分辨率

/**
 *  @brief 请求频道中其他用户的视频流
 *  @param participant 频道中其他成员对象
 *  @param pictureSize  视频请求尺寸类型
 *  @return 返回 true 表示正常执行调用流程,false 表示调用异常
 *  @see JCMediaChannelPictureSize
 *  @warning 当 pictureSize 为 JCMediaChannelPictureSizeNone 表示关闭请求
 */
- (bool)requestVideo:(JCMediaChannelParticipant *)participant pictureSize:(JCMediaChannelPictureSize)pictureSize;

其中,视频尺寸 JCMediaChannelPictureSize 有以下几种:

名称 描述
None 不渲染
Min 最小尺寸
Small 小尺寸
Large 大尺寸
Max 最大尺寸

# 视频设备管理

# 指定摄像头

/**
 * 指定要开启的摄像头
 *
 * @param camera 摄像头标识
 */
- (void)specifyCamera:(NSString* __nonnull)camera;

# 开启关闭视频设备

打开摄像头画面。

/**
*  @brief 获得预览视频对象,通过此对象能获得视图用于UI显示
*  @param type 渲染模式,@ref JCMediaDeviceRender
*  @return JCMediaDeviceVideoCanvas 对象
*/
- (JCMediaDeviceVideoCanvas *)startCameraVideo:(JCMediaDeviceRender)type;
/**
*  @brief 获得预览视频对象,通过此对象能获得视图用于UI显示
*  @param type 渲染模式,@ref JCMediaDeviceRender
*  @param view        视图view
*  @return JCMediaDeviceVideoCanvas 对象
*/
- (JCMediaDeviceVideoCanvas *)startCameraVideo:(JCMediaDeviceRender)type view:(UIView *)view;

# 视频渲染管理

# 渲染视频画面

/**
*  @brief 获得预览视频对象,通过此对象能获得视图用于UI显示
*  @param videoSource 渲染标识串,比如 JCMediaChannelParticipant JCCallItem 中的 renderId,当videoSource 为 videoFileId 时,内部会调用 startVideoFile
*  @param type        渲染模式,@ref JCMediaDeviceRender
*  @return JCMediaDeviceVideoCanvas 对象
*/
- (JCMediaDeviceVideoCanvas *)startVideo:(NSString *)videoSource renderType:(JCMediaDeviceRender)type;
/**
*  @brief 获得预览视频对象,通过此对象能获得视图用于UI显示
*  @param videoSource 渲染标识串,比如 JCMediaChannelParticipant JCCallItem 中的 renderId,当videoSource 为 videoFileId 时,内部会调用 startVideoFile
*  @param type        渲染模式,@ref JCMediaDeviceRender
*  @param view        视图view
*  @return JCMediaDeviceVideoCanvas 对象
*/
- (JCMediaDeviceVideoCanvas *)startVideo:(NSString *)videoSource renderType:(JCMediaDeviceRender)type view:(UIView *)view;

# 停止视频渲染

/**
*  @brief 停止视频
*  @param canvas JCMediaDeviceVideoCanvas 对象,由 startVideo 获得
*/
- (void)stopVideo:(JCMediaDeviceVideoCanvas *)canvas;

# 视频通话截图

/**
*  @brief 截图
*  @param renderId 要截图的视频id
*  @param path 要存放的文件路径
*  @return 截图是否成功
*/
- (bool)snapshotWithRenderId:(NSString *)renderId path:(NSString *)path;

结果通过JCMediaDeviceCallback (opens new window) 中的 onSnapshotComplete (opens new window) 接口上报。

/**
*  @brief 截图完成事件
*  @param file 截图路径
*  @param width 宽
*  @param height 高
*/
- (void)onSnapshotComplete:(NSString *)file width:(int)width height:(int)height;