采集
本章节主要介绍音频数据采集相关的功能。默认是SDK接管采集,开发者也可以选择自己控制采集也就是自定义音频数据输入。 目前网易云信Cocos SDK仅支持音频数据采集
遍历设备列表
API介绍
遍历指定类型设备,获取系统中所有该类型设备的名称。目前只支持摄像头设备的获取。
API原型
static void EnumDeviceDevpath(nim::NIMDeviceType type, EnumDeviceCallback cb);
File: nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
type | NIMDeviceType | 设备类型,见NIMDeviceType |
cb | EnumDeviceCallback | 结果回调 |
- NIMDeviceType
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDeviceTypeAudioIn | 0 | 麦克风设备 |
DeviceTypeAudioOut | 1 | 听筒设备用于播放本地采集音频数据,麦克风试音,即耳返 |
DeviceTypeAudioOutChat | 2 | 听筒设备用于通话音频数据,由DeviceTypeAudioOut遍历得到设备 |
返回值说明
NIMDeviceInfoList 设备属性列表
示例
auto cb = [=](bool ret, enum NIMDeviceType type, const char *json_extension)
{
};
nim::VChat::EnumDeviceDevpath(type, cb);
####特殊说明 此接口仅支持Cocos Windows PC平台
启动设备
API介绍
启动设备。同一NIMDeviceType下设备将不重复启动,不同的设备会先关闭前一个设备开启新设备。
API原型
static void StartDevice(nim::NIMDeviceType type, const std::string& device_path, unsigned fps, int width, int height, StartDeviceCallback cb)
File: nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
type | NIMDeviceType | 设备类型,见NIMDeviceType |
device_path | string | 设备路径对应kNIMDevicePath |
fps | unsigned int | 无效 |
width | int | 无效 |
height | int | 无效 |
cb | StartDeviceCallback | 结果回调 |
返回值说明
无返回值。
示例
auto cb = [=](enum NIMDeviceType type, bool ret, const char *json_extension)
{
};
VChat::StartDevice(kNIMDeviceTypeAudioIn, "", 0, 0, 0, cb);
VChat::StartDevice(kNIMDeviceTypeAudioOutChat,"", 0, 0, 0, cb);
####特殊说明 Android,ios平台下该接口type为DeviceTypeAudioOut时有效
结束设备
API介绍
结束设备
API原型
static void EndDevice(nim::NIMDeviceType type);
File: nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
type | NIMDeviceType | 设备类型,见nim_device_def.h |
返回值说明
无返回值。
示例
void TestEndVchatDevice()
{
VChat::EndDevice(kNIMDeviceTypeAudioIn);
VChat::EndDevice(kNIMDeviceTypeAudioOut);
VChat::EndDevice(kNIMDeviceTypeAudioOutChat);
}
####特殊说明 Android,ios平台下该接口type为DeviceTypeAudioOut时有效
自定义音频数据输入
API介绍
自定义音频数据接口, 采样位深只支持16,如果是浮点型数据先转成整型。kNIMDeviceSampleRate支持8000,16000,32000,44100。
API原型
static bool CustomAudioData(uint64_t time, const char* data, uint32_t size, std::string json_extension);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
time | uint64_t | 无效参数 |
data | char * | 音频数据,pcm格式。 |
size | uint32_t | data的数据长度。 |
json_extension | string | 扩展Json string kNIMDeviceSampleRate采样频和kNIMDeviceSampleBit采样位深 |
返回值说明
调用成功返回true,调用失败返回false。
示例
public void DemoTestCustomData()
{
auto capture_audio_data_cb = [](std::uint64_t time, const char *data, std::uint32_t size, const char *json_extension, const void *user_data)
{
};
auto receive_audio_data_cb = [](std::uint64_t time, const char *data, std::uint32_t size, const char *json_extension, const void *user_data)
{
nim::VChat::CustomAudioData(time, data, size, json_extension);
};
nim::VChat::SetAudioDataCb(false, receive_audio_data_cb);
nim::VChat::SetAudioDataCb(true, capture_audio_data_cb);
}
特殊说明
调用该接口前应调用nim::VChat::SetCustomData接口将自定义音频数据开启,该接口在Windows PC平台下有效
扬声器
开启扬声器
API介绍
设置扬声器,该接口在Android,ios平台下有效
API原型
static void SetSpeaker(bool speaker_on);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
speaker_on | bool | true:扬声器开启 |
示例
void DemoTestSpeaker(bool speakon)
{
nim::VChat::SetSpeaker(speakon)
}
特殊说明
该接口在Android,ios平台下有效
扬声器状态
API介绍
获取扬声器状态,该接口在Android,ios平台下有效
API原型
static bool IsSpeakeEnabled();
File:nim_cpp_vchat.h
返回值说明
扬声器已开启返回true,否则返回false。
示例
void DemoTestSpeakerEnabled()
{
bool speak_on = nim::VChat::IsSpeakeEnabled();
}
特殊说明
该接口在Android,ios平台下有效
麦克风
开启麦克风静音
API介绍
设置麦克风静音状态,该接口在Android,ios平台下有效
API原型
static void SetMicrophoneMute(bool mute);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
mute | bool | true:麦克风静音开启 |
示例
void DemoTestMicrophoneMute(bool microphone_mute)
{
nim::VChat::SetMicrophoneMute(microphone_mute);
}
特殊说明
该接口在Android,ios平台下有效
麦克风静音状态
API介绍
获取扬声器状态,该接口在Android,ios平台下有效
API原型
static bool IsMicrophoneMute();
File:nim_cpp_vchat.h
返回值说明
麦克风静音已开启返回true,否则返回false。
示例
void DemoTestMicrophoneMute()
{
bool microphone_mute = nim::VChat::IsMicrophoneMute();
}
特殊说明
该接口在Android,ios平台下有效
混音
开启混音
API介绍
开始混音,该接口在Android,ios平台下有效
API原型
static bool StartAudioMixing(const std::string filePath, bool loopback, bool replace, int cycle, float volume)
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
filePath | std::string | 可播放文件地址 |
loopback | bool | 是否循环播放 true:开启 |
replace | bool | 是否替换采集声音数据,true:开启 |
cycle | int | 循环次数 |
volume | float | 混音音量值 [0f-1f] |
示例
void DemoStartAudioMixing(std::string filePath, bool loopback, bool replace, int cycle, float volume)
{
nim::VChat::StartAudioMixing(filePath, loopback, replace, cycle, volume);
}
特殊说明
该接口在Android,ios平台下有效
混音暂停
API介绍
混音暂停,该接口在Android,ios平台下有效
API原型
static bool PauseAudioMixing()
File:nim_cpp_vchat.h
返回值说明
true:接口调用成功
示例
void DemoPauseAudioMixing()
{
bool ret=nim::VChat::PauseAudioMixing();
}
特殊说明
该接口在Android,ios平台下有效
混音恢复播放
API介绍
恢复混音播放,该接口在Android,ios平台下有效
API原型
static bool PauseAudioMixing();
File:nim_cpp_vchat.h
返回值说明
true:接口调用成功
示例
void DemoResumeAudioMixing()
{
bool ret = nim::VChat::ResumeAudioMixing();
}
特殊说明
该接口在Android,ios平台下有效
混音结束播放
API介绍
结束混音播放,该接口在Android,ios平台下有效
API原型
static bool StopAudioMixing();
File:nim_cpp_vchat.h
返回值说明
true:接口调用成功
示例
void DemoStopAudioMixing()
{
bool ret = nim::VChat::StopAudioMixing();
}
特殊说明
该接口在Android,ios平台下有效
设置混音音量
API介绍
设置混音音量,该接口在Android,ios平台下有效
API原型
static bool SetAudioMixingVolume(float volume);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
volume | float | 混音音量值 [0f-1f] |
示例
void DemoSetAudioMixingVolume(float volume)
{
nim::VChat::SetAudioMixingVolume(volume);
}
特殊说明
该接口在Android,ios平台下有效
设置耳返音量
API介绍
设置耳返音量,该接口在Android,ios平台下有效
API原型
static bool SetPlayCapturedAudioVolume(float volume);
File:nim_cpp_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
volume | float | 混音音量值 [0f-1f] |
示例
void DemoSetPlayCapturedAudioVolume(float volume)
{
nim::VChat::SetPlayCapturedAudioVolume(volume);
}
特殊说明
该接口在Android,ios平台下有效