# 视频管理

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

# 设置请求分辨率

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

/**
* 设置视频请求尺寸
* @param size 尺寸
*/
- (void)setRequestSize:(JCMediaChannelPictureSize)size;
/**
*  @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 最大尺寸

# SVC设置说明

根据实际订阅需求和网络状况动态调整视频发送分辨率是JSM会议的特性之一,SVC可用于设置会议视频的每一层编码分辨率。该参数在会议创建时设置,且全局统一。

  • 说明

1)默认宽高比16:9,所有层都一致;

2)最少设置一层,最多设置四层。

3)SVC设置时,最终生效的高偶数对齐,宽16对齐。

  • 格式

高基数 第一层高倍数 第一层码率 第二层高倍数 第二层码率 第三层高倍数 第三层码率 第四层高倍数 第四层码率

例如 "90 1 100 2 300 4 650 8 2000"

  • 第一层:分辨率 宽 160(90×1/9×16)、高 90(90*1);码率 100kbps
  • 第二层:分辨率 宽 320(90×2/9×16)、高 180(90*2);码率 300kbps
  • 第三层:分辨率 宽 640(90×3/9×16)、高 360(90*3);码率 650kbps
  • 第四层:分辨率 宽 1280(90×8/9×16)、高 720(90*8);码率 2000kbps

# 视频设备管理

# 指定摄像头

/**
 * 指定要开启的摄像头
 *
 * @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 中的 onSnapShotComplete (opens new window) 接口上报

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