录制
本章节着重介绍实时音频有关录制的内容。网易云信实时音频Cocos sdk提供服务端录制方式。 服务端录制需要您联系我们的销售,开通此功能,并且需要在管理中心中成功配置消息抄送服务。实时音频服务端录制目前仅支持点对点音视频通话。假设A和B进行实时音视频通话,服务端录制下来的文件包括:A的纯音频文件(.aac)、A的音视频文件(.mp4)、B的纯音频文件(.aac)、B的音视频文件(.mp4)。如果是纯音频通话,则没有相应的音视频文件,如果您开通了服务端混合录制,则还会生成一个A和B的混合音视频文件(.mp4)。这些录制文件的地址在音视频通话结束之后会通过抄送服务抄送到您的服务器。
服务端录制
服务器录制信息回调
API介绍
当通话连接成功后,在连接成功信息中会带有指定的音视频文件名。如果服务器有录制,会录制该文件。
API原型
typedef std::function<void(enum NIMVideoChatSessionType type, int64_t channel_id, int code, const std::string json_extension)> SessionStatusCallback;
NIMVideoChatSessionType::kNIMVideoChatSessionTypeConnect File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
channel_id | long | 频道id |
code | int | 结果状态,200代表连接成功 |
json_extension | string | 如果成功返回 kNIMVChatVideoRecordFile和kNIMVChatRecordFile |
示例
void NIMVChatRequest(string account)
{
nim::NIMVideoChatMode mode = kNIMVideoChatModeAudio;
std::string apns_text = "cocos demo";
Json::Value value;
Json::Value uids_value(Json::arrayValue);
uids_value[0] = account;
value["uids"] = uids_value;
value["session_id"] = account;
value["keepcalling"] = 1;
value["record"] = 1;//开启服务器录制
value["high_rate"] = 1;
value["audio_call_proximity"] = 1;
std::string custom_info = "";
std::string json_info = value.toStyledString();
nim::VChat::Start(mode, apns_text, custom_info, json_info);
}
特殊说明
客户端录制
音频文件开始录制
API介绍
开始录制音频文件,一次只允许一个音频录制文件
API原型
static void StartAudioRecord(const std::string& path, AudioRecordCallback cb)
File:NIMVChatAPI.cs
参数说明
参数 | 类型 | 说明 |
---|---|---|
path | string | 暂时无效 |
cb | AudioRecordCallback | 结果回调 |
示例
std::string path = "";
auto cb = [=](bool ret, int code, const std::string& file, std::int64_t time)
{
};
nim::VChat::StartAudioRecord(path, cb);
特殊说明
音频文件结束录制
API介绍
停止录制音频文件
API原型
static void StopAudioRecord(AudioRecordCallback cb);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | AudioRecordCallback | 结果回调 |
示例
auto cb = [=](bool ret, int code, const std::string& file, std::int64_t time)
{
};
nim::VChat::StopAudioRecord(cb);
特殊说明
MP4文件开始录制
API介绍
开始录制MP4,,同一个成员一次只允许一个MP4录制文件,在通话开始的时候才有实际数据
API原型
static void StartRecord(const std::string& path, const std::string& uid, Mp4OptCallback cb);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
path | string | 无效参数 |
uid | string | uid 录制的成员,如果是自己填空 |
cb | Mp4OptCallback | 结果回调 |
示例
void DemoTestStartRecord(std::string uid)
{
std::string path = "";//暂时无效
auto cb = [=](bool ret, int code, const std::string& file, std::int64_t time)
{
};
nim::VChat::StartRecord(path, uid, cb);
}
特殊说明
MP4文件结束录制
API介绍
停止录制MP4
API原型
static void StopRecord(const std::string& uid, Mp4OptCallback cb);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
uid | string | uid 录制的成员,如果是自己填空 |
cb | Mp4OptCallback | 结果回调 |
示例
void DemoTestStopRecord(std::string uid)
{
auto cb = [=](bool ret, int code, const std::string& file, std::int64_t time)
{
};
nim::VChat::StopRecord(uid, cb);
}