菊风已发布实时音视频2.0升级版(2.0版本说明),当前您正在访问1.0旧版本,点击此处可进入2.0升级版

# 视频管理

# 视频数据采集管理

# 设置要开启的摄像头类型

视频采集设置前,可以通过 JCMediaDevice (opens new window) 类中的 getCameras (opens new window) 方法获取摄像头列表,调用 getCamera (opens new window) 方法获取当前摄像头,调用 defaultCamera (opens new window) 方法获取默认摄像头,具体如下:

/**
 * 获取摄像头列表
 *
 * @return 摄像头列表
 */
getCameras(): JCMediaDeviceCamera[];

/**
 * 当前默认的摄像头
 *
 * @return 当前摄像头
 */
getCamera(): JCMediaDeviceCamera;

/**
 * 默认摄像头
 */
defaultCamera(): JCMediaDeviceCamera;

其中,摄像头对象 defaultCamera (opens new window) 有以下属性:

/**
 * 摄像头id
 */
cameraId: string;

/**
 * 摄像头名字
 */
cameraName: string;

/**
 * 摄像头类型
 */
cameraType: number;

摄像头类型 cameraType (opens new window) 有以下几种:

/**
 * 未获取到摄像头
 */
CAMERA_NONE = 0;

/**
 * 前置摄像头
 */
CAMERA_FRONT = 1;

/**
 * 后置摄像头
 */
CAMERA_BACK = 2;

/**
 * 未知摄像头
 */
CAMERA_UNKNOWN = 3;

获取摄像头列表后,可以调用 getCameraType (opens new window) 方法获得列表中的摄像头类型:

/**
 * 获得摄像头类型
 *
 * @param cameraIndex 摄像头队列索引
 * @return 摄像头类型
 */
getCameraType(cameraIndex: number): number;

如果想切换摄像头,调用 switchCamera (opens new window) 方法切换指定的摄像头:

/**
 * 切换摄像头
 * @param camera 摄像头
 * @return 成功返回 true,失败返回 false
 */
switchCamera(camera: JCMediaDeviceCamera): boolean;

示例代码:

// 创建摄像头对象
const camera = new JCMediaDeviceCamera();
camera.cameraType = JCMediaDevice.CAMERA_FRONT;

// 获取摄像头列表
const cameras = mediaDevice.getCameras();
// 设置默认摄像头
mediaDevice.defaultCamera = cameras[0];

# 设置摄像头采集分辨率

您可以通过调用 setCameraProperty (opens new window) 方法实现不同的视频分辨率,如采集的高度、宽度和帧速率。

摄像头采集属性设置接口如下:

/**
 * 设置摄像头采集属性
 * @param width     采集宽度,默认640
 * @param height    采集高度,默认360
 * @param frameRate 采集帧速率,默认30
 */
setCameraProperty(width: number, height: number, frameRate: number): void;

示例代码:

// 设置摄像头采集属性
mediaDevice.setCameraProperty(640, 360, 30);

# 视频渲染管理

# 创建本地和远端视频画面

  • 本地视频渲染

本地视频渲染通过调用 startCameraVideo (opens new window) 接口获得本地视频对象用于 UI 界面显示,该接口会打开摄像头

/**
 * 获得视频预览对象,通过此对象能获得视频用于UI显示
 *
 * @param renderType    渲染模式
 * @return              JCMediaDeviceVideoCanvas 对象
 */
startCameraVideo(renderType: number): JCMediaDeviceVideoCanvas;

其中,渲染模式有以下三种:

名称 描述
RENDER_FULL_SCREEN = 0 铺满窗口
RENDER_FULL_CONTENT = 1 全图像显示,会有黑边,但在窗口跟图像比例相同的情况下不会有黑边
RENDER_FULL_AUTO = 2 自适应
  • 远端视频渲染

您可以调用 startVideo (opens new window) 方法获取对端视频对象并进行渲染:

/**
 * 获得视频对象,通过此对象能获得视频用于UI显示
 *
 * @param videoSource   渲染标识串,比如 JCMediaChannelParticipant JCCallItem 中的 renderId
 * @param renderType    渲染模式
 * @return              JCMediaDeviceVideoCanvas 对象
 */
startVideo(videoSource: string, renderType: number): JCMediaDeviceVideoCanvas;

示例代码:

// 打开本地视频预览
const localCanvas = mediaDevice.startCameraVideo(
  JCMediaDevice.RENDER_FULL_CONTENT
);
// 将视频视图添加到界面
viewGroup.addChild(localCanvas.getVideoView());

// 远端视频渲染,renderId来源于通话对象,一对一为JCCallItem对象,多方为JCMediaChannelParticipant对象
const remoteCanvas = mediaDevice.startVideo(
  renderId,
  JCMediaDevice.RENDER_FULL_CONTENT
);
// 将视频视图添加到界面
viewGroup.addChild(remoteCanvas.getVideoView());

# 销毁本地和远端视频画面

在视频通话结束或者视频通话中,如果想销毁视频画面,可以调用 stopVideo (opens new window) 方法:

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

示例代码:

// 获取本地和远端视频画面
const localCanvas = mediaDevice.startCameraVideo(
  JCMediaDevice.RENDER_FULL_CONTENT
);
const remoteCanvas = mediaDevice.startVideo(
  renderId,
  JCMediaDevice.RENDER_FULL_CONTENT
);

// 销毁本地视频画面
if (localCanvas) {
  contentView.removeChild(localCanvas.getVideoView());
  mediaDevice.stopVideo(localCanvas);
  localCanvas = null;
}

// 销毁远端视频画面
if (remoteCanvas) {
  contentView.removeChild(remoteCanvas.getVideoView());
  mediaDevice.stopVideo(remoteCanvas);
  remoteCanvas = null;
}

# 视频设备管理

视频设备管理主要用到 JCMediaDevice (opens new window) 类中的方法,具体如下:

# 获取摄像头列表

你可以调用 getCameras (opens new window) 方法获取摄像头列表:

/**
 * 获取摄像头列表
 *
 * @return 摄像头列表
 */
getCameras(): JCMediaDeviceCamera[];

示例代码:

// 获取摄像头列表
const cameras = mediaDevice.getCameras();

# 获取当前默认的摄像头

你可以调用 getCamera (opens new window) 方法获取当前默认的摄像头:

/**
 * 当前默认的摄像头
 *
 * @return 当前摄像头
 */
getCamera(): JCMediaDeviceCamera;

示例代码:

// 获取当前摄像头
const camera = mediaDevice.getCamera();

# 开启关闭摄像头

你可以调用 startCamera (opens new window) 方法开启摄像头,调用 stopCamera (opens new window) 方法关闭摄像头:

/**
 * 开启摄像头
 *
 * @return 成功返回 true,失败返回 false
 */
startCamera(): boolean;

/**
 * 关闭摄像头
 *
 * @return 成功返回 true,失败返回 false
 */
stopCamera(): boolean;

# 切换摄像头

你可以调用 switchCamera (opens new window) 方法切换摄像头:

/**
 * 切换摄像头,内部会根据当前摄像头类型来进行切换
 *
 * @return 成功返回 true,失败返回 false
 */
switchCamera(): boolean;

示例代码:

// 打开摄像头
mediaDevice.startCamera();
// 关闭摄像头
mediaDevice.stopCamera();
// 切换摄像头
mediaDevice.switchCamera();

# 检查摄像头状态

你可以调用 isCameraOpen (opens new window) 方法检查摄像头是否已打开:

/**
 * 摄像头是否已打开
 *
 * @return true 表示已打开,false 表示未打开
 */
isCameraOpen(): boolean;
最后更新时间: 2025-5-13 6:06:58 ├F10: PM┤