云端录制

更新时间: 2023/12/12 02:49:49

为满足用户在会议过程录制和备案等需求,NERoom 提供云端录制功能,支持会议过程的录制。

通过云端录制功能,您可以将会议视频的内容录制并储存下来,以便后续提供给更多人观看回放或存档。

前提条件

  • 已开通 NERoom 房间组件、IM 专业版、聊天室和音视频通话 2.0。

  • 建议开启消息抄送服务,接收云端录制事件的相关回调。

实现步骤

  1. 调用如下接口添加云端录制状态的监听。

    fun addRoomListener(listener: NERoomListener)
    fun onRoomCloudRecordStateChanged(state: NERoomCloudRecordState, operateBy: NERoomMember?)
    
    名称 类型 描述
    state NERoomCloudRecordState 云端录制状态,RecordingStart 表示云端录制中;RecordingStop 表示未在云端录制。
    operateBy NERoomMember 修改云端录制状态的操作者

    示例代码如下:

        currentRoomContext.addRoomListener(
            new NERoomListenerAdapter() {
                    override fun onRoomCloudRecordStateChanged(
                state: NERoomCloudRecordState,
                operateBy: NERoomMember?
            ) {
                var isCloudRecording = state == NERoomCloudRecordState.RECORDING_START
                Log.d(TAG,"" + isCloudRecording + operateBy.toString());
            }
        )
    
  2. 在初始化之后,加入房间前,通过 NERoomRtcController.setParameters 设置开启云端录制功能。

    客户端的录制参数用于指定本端参与的录制模式。可设置的录制参数如下:

    参数 说明
    KEY_SERVER_RECORD_AUDIO 是否开启云端音频录制。默认为 false,即关闭音频录制

    示例代码如下:

    // KEY_SERVER_RECORD_AUDIO const NERtcParameterKey<bool>
    // 是否开启云端音频录制。默认为 false,即关闭音频录制
    currentRoomContext?.rtcController.setParameters("KEY_SERVER_RECORD_AUDIO", true)
    
  3. 调用 joinRoom 接口加入房间。

    示例代码如下:

    NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
    String roomUuid="123";
    String userName="userName";
    String role="host";//从模板获取角色名称,比如PK直播的场景中的角色名为:host,invited_host,audience
    String password = "password"; //设置为null,表示没有密码
    Map<String,String> initialProperties = new HashMap<String,String>();
    initialProperties.put("custom-property-key0", "custom-property-value0");
    initialProperties.put("custom-property-key1", "custom-property-value1");
    roomService.joinRoom(new NEJoinRoomParams(roomUuid, userName, role, password, initialProperties), new NEJoinRoomOptions(), new NECallback2<NERoomContext>() {
        @Override
        public void onSuccess(@Nullable NERoomContext neRoomContext) {
            super.onSuccess(neRoomContext);
            Log.d(TAG,"success");
        }
    
        @Override
        public void onError(int code, @Nullable String message) {
            super.onError(code, message);
            Log.d(TAG,"error");
        }
    });
    
  4. 参与者调用startCloudRecord 方法开始录制。

    触发 onRoomCloudRecordStateChanged 回调。事件中包含 state(云端录制状态)和 operateBy(状态变更操作者信息)。

    示例代码如下:

    /// 参考joinRoom示例代码,调用joinRoom后获取NERoomContext neRoomContext对象
    /// 调用startCloudRecord,成功触发onSuccess回调,失败则触发onError回调
    neRoomContext.startCloudRecord(new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit data) {
                    super.onSuccess(data);
                }
    
                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                }
                });
    
  5. 参与者调用 stopCloudRecord 方法停止录制。

    所有录制的参与者均关闭音频和视频开关或退出房间时自动关闭录制。

    示例代码如下:

        /// 调用stopCloudRecord,同上
        neRoomContext.stopCloudRecord(new NECallback2<Unit>() {
                    @Override
                    public void onSuccess(@Nullable Unit data) {
                      super.onSuccess(data);
                    }
    
                    @Override
                    public void onError(int code, @Nullable String message) {
                      super.onError(code, message);
                    }
                  });
    
  6. 参与者可以可以调用 getRoomCloudRecordList 方法获取指定房间中的录制文件列表。

    获取的单个视频文件信息,包括:视频 ID、视频名称、各个视频格式的播放地址、各个视频格式的下载地址、各个视频格式的视频大小、视频截图地址、视频所属分类 ID 和名称、视频播放时长和视频转码完成时间。

    示例代码如下:

    NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
    /// 这里roomArchiveId为房间归档id,可以从joinRoomResult.room.roomArchiveId获取,或从业务服务器接口获取
    roomService.getRoomCloudRecordList(roomArchiveId, new NECallback2<List<NERoomRecord>>() {
                @Override
                public void onSuccess(@Nullable List<NERoomRecord> data) {
                super.onSuccess(data);
                }
    
                @Override
                public void onError(int code, @Nullable String message) {
                super.onError(code, message);
                }
            });
    
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现步骤