录制

本章节着重介绍实时音视频有关录制的内容。网易云实时音视频Linux sdk提供服务端录制方式。 服务端录制需要您联系我们的销售,开通此功能,并且需要在管理中心中成功配置消息抄送服务。实时音视频服务端录制目前仅支持点对点音视频通话。假设A和B进行实时音视频通话,服务端录制下来的文件包括:A的纯音频文件(.aac)、A的音视频文件(.mp4)、B的纯音频文件(.aac)、B的音视频文件(.mp4)。如果是纯音频通话,则没有相应的音视频文件,如果您开通了服务端混合录制,则还会生成一个A和B的混合音视频文件(.mp4)。这些录制文件的地址在音视频通话结束之后会通过抄送服务抄送到您的服务器。

服务端录制

服务器录制信息回调

API介绍

当通话连接成功后,在连接成功信息中会带有指定的音视频文件名。如果服务器有录制,会录制该文件。

API原型

typedef void (*nim_vchat_cb_func)(enum NIMVideoChatSessionType type, int64 channel_id, int code, const char *json_extension, const void *user_data)

NIMVideoChatSessionType::kNIMVideoChatSessionTypeConnect

File:nim_vchat_def.h

参数说明
参数 类型 说明
type enum 回调类型kNIMVideoChatSessionTypeConnect
channel_id int64 频道id
code int 错误码NIMVChatConnectErrorCode,200代表连接成功
json_extension char* Json char* 扩展,如果成功返回 kNIMVChatVideoRecordFile和kNIMVChatRecordFile
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理
示例
void send_vchat_request(bool audio,char* account)
{
    enum NIMVideoChatMode mode = kNIMVideoChatModeAudio;
    char* apns_text = "语音通话邀请";
    char* custom_info = "test";
    json_value* value_root = json_object_new(0);
    json_value* value_uids = json_array_new(0);

    uint32_t length = 0;
    char* buf = NULL;

    json_object_push(value_root, "need_badge", json_integer_new(0));
    json_object_push(value_root, "need_nick", json_integer_new(0));
    //开启服务端音频录制
    json_object_push(value_root, "record", json_integer_new(0));
    json_object_push(value_root, "session_id", json_string_new(account));
    json_object_push(value_root, "sound", json_integer_new(0));
    json_array_push(value_uids, json_string_new(account));
    json_object_push(value_root, "uids", value_uids);
    json_object_push(value_root, "video_quality", json_integer_new(5));
    //开启服务端视频录制
    json_object_push(value_root, "video_record", json_integer_new(0));
    json_object_push(value_root, kNIMVChatMaxVideoRate, json_integer_new(200000));

    length = json_measure(value_root);
    buf = (char*)calloc(1, length);
    json_serialize(buf, value_root);

    /*目前只有音频通话*/
    if (!audio)
    {
        mode = kNIMVideoChatModeVideo;
        apns_text = "视频通话邀请";
    }

    test_nim_vchat_start(mode, apns_text, custom_info, buf, NULL);
    json_value_free(value_root);
    free(buf);
}
特殊说明