文档反馈
文档反馈

设备

本章节主要介绍音视频设备相关的功能。

遍历设备列表

API介绍

遍历指定类型设备,获取系统中所有该类型设备的名称。这里只遍历麦克风,摄像头和播放器。

API原型

参数说明

参数 类型 说明
type enum 设备类型,见NIMDeviceType
json_extension(C) string 无效的扩展字段。
cb(C/C++) function 结果回调
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
枚举定义 说明
kNIMDeviceTypeAudioIn 0 麦克风设备
kNIMDeviceTypeAudioOut 1 听筒设备用于播放本地采集音频数据,麦克风试音,耳返功能需要同时打开麦克风设备
kNIMDeviceTypeAudioOutChat 2 听筒设备用于通话音频数据,由DkNIMeviceTypeAudioOut遍历得到设备
kNIMDeviceTypeVideo 3 摄像头
kNIMDeviceTypeSoundcardCapturer 4 声卡声音采集,由kNIMDeviceTypeAudioOut遍历得到设备,得到的数据混音到发送的通话声音中(此模式使用条件苛刻不建议使用)
kNIMDeviceTypeAudioHook 5 伴音,使用本地播放器的启动路径(exe启动文件的全路径),启动第三方播放器并获取音频数据(只允许存在一个进程钩子),只混音到发送的通话声音中

返回值说明

C/C++:无返回值,遍历结果通过结果回调异步返回。

C#:同步返回遍历到的设备列表。

示例

启动设备

API介绍

启动设备。同一NIMDeviceType下设备将不重复启动,不同的设备会先关闭前一个设备开启新设备。启动的类型包括麦克风设备,播放器设备(包含耳返即麦克风本地播放,及远端监听播放),摄像头设备,本地声卡监听,第三方伴音程序。

API原型

参数说明

参数 类型 说明
type enum 设备类型,见NIMDeviceType
device_path string 设备路径对应kNIMDevicePath,如果是kNIMDeviceTypeAudioHook,对应播放器本地全路径。
fps unsigned int 摄像头的采样频率,非摄像头类型设备无效(麦克风采样频率由底层控制,播放器采样频率也由底层控制)。
width(C++) int 摄像头采集宽度期望值,取0则底层选默认值,非摄像头类型设备无效。
height(C++) int 摄像头采集高度期望值,取0则底层选默认值,非摄像头类型设备无效。
StartDeviceInfo(C#) object 启动设备json封装类。
cb(C/C++)/handler(C#) function 结果回调
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

结束设备

API介绍

结束设备

API原型

参数说明

参数 类型 说明
type enum 设备类型,见NIMDeviceType
json_extension(C) string 无效的扩展字段。

返回值说明

无返回值。

示例

监听设备状态

API介绍

添加设备监听(摄像头和麦克风,伴音设备) 注意监听设备后底层会定时检查设备情况,在不需要监听后请移除。在设备监听的情况下,如果麦克风、摄像头设备成功启动,则会在后面自动重启设备或切换设备。伴音设备只会返回第一次数据接收的事件为工作状态事件。

API原型

参数说明

参数 类型 说明
type enum 设备类型,kNIMDeviceTypeAudioIn和kNIMDeviceTypeVideo、kNIMDeviceTypeAudioHook有效,见NIMDeviceType
cb(C/C++)/handler(C#) function 结果回调
user_data void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

移除设备监听

API介绍

移除设备监听(摄像头和麦克风,伴音hook)

API原型

参数说明

参数 类型 说明
type enum 设备类型,见NIMDeviceType

返回值说明

无返回值。

示例

启动辅助摄像头

API介绍

启动辅助的摄像头,摄像头数据通过nim_vchat_set_video_data_cb设置采集回调返回,不直接通过视频通话发送给对方,并且不参与设备监听检测。

API原型

参数说明

参数 类型 说明
id string 摄像头标识,用于开关及数据回调时的对应,不能为空。(同一id下设备将不重复启动,如果设备device_path不同会先关闭前一个设备开启新设备)
device_path string 设备路径,对应kNIMDevicePath。
fps unsigned int 摄像头的采样频率。
json_extension string 打开摄像头允许设置 kNIMDeviceWidth 和 kNIMDeviceHeight,并取最接近设置值的画面模式。
cb(C)/handler(C#) function 结果回调,见nim_device_def.h。
user_data void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

结束辅助摄像头

API介绍

结束辅助摄像头

API原型

参数说明

参数 类型 说明
id string 摄像头标识id,如果为空,则关闭所有辅助摄像头。
json_extension(C) string 无效的扩展字段

返回值说明

无返回值。

示例

音视频数据

本章节主要介绍音视频数据采集接收及发送功能。

自定义音视频数据开关

通话中修改自定义音视频数据模式,和通话发起时json中扩展的自定义音频数据开关和自定义视频数据开关一致。如果开启自定义音频数据,麦克风数据将不在通话中发送,需要用户通过自定义音频数据接口传入指定的音频数据,其中伴音、声卡等设备的数据如果不开其监听则仍然会发送。开启自定义视频数据,摄像头数据将不会发送,而使用用户自定义视频数据接口传回的数据。

API原型

参数说明

参数 类型 说明
custom_audio bool 是否使用自定义音频数据
custom_video bool 是否使用自定义视频数据
json_extension string 无效扩展
cb function 结果回调
user_data void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

监听音频数据

API介绍

监听音频数据(可以不监听,通过启动设备kNIMDeviceTypeAudioOut和kNIMDeviceTypeAudioOutChat由底层播放)。

API原型

参数说明

参数 类型 说明
capture(C/C++) bool true表示监听麦克风采集数据,false表示监听通话中对方音频数据。
cb(C/C++)/handler(C#) function 结果回调,见nim_device_def.h。
json_extension(C) string 扩展Json string:kNIMDeviceSampleRate(要求返回的音频数据为指定的采样频,缺省为0使用默认采样频)。
audioJsonEx(C#) object C接口json_extension的封装类。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

监听音频伴音数据

API介绍

监听扩展音频数据。主要返回伴音、声卡采集音等数据。监听后的数据发送情况见NIMAudioDataCbType的定义。

API原型

参数说明

参数 类型 说明
type enum 指定NIMAudioDataCbType,监听伴音数据时,一旦监听,底层将不再混音。
json_extension string json扩展字段,参考NIMAudioDataCbType的说明。
cb(C)/handler(C#) function 结果回调,见nim_device_def.h。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
枚举定义 说明
kNIMAudioDataCbTypeHook 1 实时返回伴音数据,伴音数据保留原始的格式,但伴音不再混音到通话数据中
kNIMAudioDataCbTypeHookAndMic 2 定时返回伴音和麦克风、声卡的混音数据(伴音或声卡必须工作,麦克风可以不工作),允许重采样(json中带kNIMDeviceSampleRate和kNIMVolumeWork),返回单声道数据

返回值说明

无返回值。

示例

监听远端音频数据

API介绍

通话中设置监听远端音频数据扩展接口,成员进入后才能设置,成员退出后设置失效。该接口数据回调为同步回调,不允许在回调中做耗时操作。由于数据回调需要长期保存,为了接口的通用性,c++接口与c接口实现有所区别。

API原型

参数说明

c接口

参数 类型 说明
uid string 对端accid
remote_data_cb function 数据回调
remote_data_cb_user_data void* APP的自定义用户数据,SDK只负责传回给回调函数remote_data_cb,不做任何处理!
json_extension string json扩展字段,参考NIMAudioDataCbType的说明。
cb function 结果回调,该回调返回本次操作接口。
user_data void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

c++接口中通过SetRemoteAudioDataCb封装,设置统一的数据回调cb来实现数据接口,并由AddRemoteAudioDataCb和RemoveRemoteAudioDataCb来实现回调添加逻辑。回调cb的有效性由SetRemoteAudioDataCb决定,但是回调是否执行由RemoveRemoteAudioDataCb移除,或者成员退出及通话结束时,该成员的数据回调不再执行。

而c接口中nim_vchat_set_remote_audio_data_cb通过该接口来设置回调逻辑,回调remote_data_cb的有效期由接口设置及通话中成员进出来决定。当设置回调为空,或者成员退出及通话结束时,回调失效。

返回值说明

无返回值。

示例

监听视频数据

API介绍

监听视频数据,如果是辅助摄像头数据,在回调中会返回辅助摄像头的id。

API原型

参数说明

参数 类型 说明
capture(C/C++) bool true表示监听采集数据(包括辅助摄像头数据),false表示监听通话中对方视频数据。
cb(C/C++)/handler(C#) function 结果回调
json_extension(C/C#) string 扩展Json string:kNIMVideoSubType(缺省为kNIMVideoSubTypeARGB)。
videoJsonEx(C#) object C接口中json_extension的封装类。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
枚举定义 说明
kNIMVideoSubTypeARGB 0 32位位图格式 存储 (B,G,R,A)...
kNIMVideoSubTypeRGB 1 24位位图格式 存储 (B,G,R)...
kNIMVideoSubTypeI420 2 YUV格式,存储 yyyyyyyy...uu...vv...

返回值说明

无返回值。

示例

自定义音频数据输入

API介绍

自定义音频数据接口, 采样位深只支持16或32,如果是浮点型数据先转成整型。kNIMDeviceSampleRate支持8000,16000,32000,44100。

API原型

参数说明

参数 类型 说明
time unsigned long long 时间,毫秒级。
data void* 音频数据,pcm格式。
size unsigned int data的数据长度。
json_extension(C) string 扩展Json string:kNIMDeviceSampleRate采样频和kNIMDeviceSampleBit采样位深,默认如{"sample_rate":16000, "sample_bit":16}。
info(C#) object C接口中json_extension的封装类。

返回值说明

调用成功返回true,调用失败返回false。

示例

自定义伴音数据输入

API介绍

自定义伴音数据接口, 采样位深只支持16,如果是浮点型数据先转成整型。该接口不依赖自定义数据模式,允许用户外部输入多路伴音数据,在通话中混音发送。传入的数据必须是10ms的整数倍。

API原型

参数说明

参数 类型 说明
id Byte id
time unsigned long long 时间,毫秒级。
data void* 音频数据,pcm格式。
size unsigned int data的数据长度。
rate unsigned int 音频采样频。
channels unsigned int 音频采样通道。
json_extension(C) string 无效扩展

返回值说明

调用成功返回true,调用失败返回false。

示例

自定义视频数据输入

API介绍

自定义视频数据

API原型

参数说明

参数 类型 说明
time unsigned long long 时间,毫秒级。
data void* 视频数据,默认为yuv420格式。
size unsigned int data的数据长度。
width unsigned int 画面宽度,必须是偶数。
height unsigned int 画面高度,必须是偶数。
json_extension(C/C++) string 扩展Json string,kNIMVideoSubType视频数据格式(缺省为kNIMVideoSubTypeI420)。
info(C#) object C接口中json_extension的封装类。

返回值说明

调用成功返回true,调用失败返回false。

示例

音视处理

本章节主要介绍网易云信提供的各种音频前处理功能。前处理介于采集和编码之间,音频前处理包括降噪回音消除人声检测等。 同时,网易云信还提供了音视频采集数据的回调功能,所以除了SDK自带的一些音视频的前处理功能,开发者可以利用音视频采集数据的回调功能,实现自定义的音视频数据前处理,包括接入第三方变声、美颜算法。

音频音量设置

API介绍

设置音量,默认255,且音量均由软件换算得出,设置麦克风音量自动调节后麦克风音量参数无效。

获取设置的音量。

设置麦克风音量自动调节。

获取是否自动调节麦克风音量。

API原型

参数说明

参数 类型 所在函数 说明
volumn unsigned char SetAudioVolumn(C++)
AudioCaptureVolumn.get(C#)
nim_vchat_set_audio_volumn(C)
要设置的音量大小。
capture bool SetAudioVolumn / GetAudioVolumn(C++)
nim_vchat_set_audio_volumn / nim_vchat_get_audio_volumn(C)
true表示设置麦克风音量,false表示设置播放音量。C#是以两个不同的类来区分。
auto_volumn bool SetAudioInputAutoVolumn(C++)
nim_vchat_set_audio_input_auto_volumn(C)
true表示麦克风音量自动调节,false表示麦克风音量不自动调节,这时nim_vchat_set_audio_volumn中麦克风音量参数生效。

返回值说明

Set函数无返回值。

Get函数返回设置的音量或者是否自动调节音量。

示例

音频前处理开关

API介绍

设置底层针对麦克风采集数据处理开关接口,默认全开(此接口是全局接口,在sdk初始化后设置一直有效)。

API原型

参数说明

参数 类型 说明
aec bool true表示打开回音消除功能,false表示关闭。
ns bool true表示打开降噪功能,false表示关闭。
vad bool true表示打开人言检测功能,false表示关闭。

返回值说明

无返回值。

示例

音视频编解码

设置视频最大编码码率

API介绍

通话中修改视频码率,有效区间[100kb,2000kb],如果设置video_bitrate为0则取默认码率。

API原型

参数说明

参数 类型 说明
video_bitrate int 视频码率值
json_extension(C) string 无效扩展字段
cb(C) function 结果回调,见nim_vchat_def.h,返回的json_extension无效。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

切换视频质量

API介绍

通话中修改发送画面分辨率,发送的分辨率限制只对上限限制,如果数据源小于发送分辨率,不会进行放大。

API原型

参数说明

参数 类型 说明
video_quality int 分辨率模式 见NIMVChatVideoQuality定义。
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。
user_data void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

切换视频帧率

API介绍

实时设置视频发送帧率上限。

API原型

参数说明

参数 类型 说明
frame_rate enum 帧率类型,见NIMVChatVideoFrameRate定义。
json_extension(C/C#) string 无效备用。
cb(C/C#) function 结果回调,见nim_vchat_def.h。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

切换视频裁剪模式

API介绍

设置发送时视频画面的长宽比例裁剪模式,裁剪的时候不改变横竖屏(重新发起时也生效)。

获取视频画面的裁剪模式。

API原型

参数说明

参数 类型 所在函数 说明
type enum SetVideoFrameScaleType(C++)
SetVideoFrameScale(C#)
nim_vchat_set_video_frame_scale(C)
裁剪模式,见NIMVChatVideoFrameScaleType。

返回值说明

Set函数无返回值。

Get函数返回当前的裁剪模式,见NIMVChatVideoFrameScaleType。

示例

切换视频编码模式

API介绍

在通话过程中动态设置视频编码模式

API原型

参数说明

参数 类型 说明
mode enum 编码模式NIMVChatVideoEncodeMode。
json_extension string 无效扩展
cb function 结果回调
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

音效管理

加载音效

API介绍

预加载音效文件(空路径时为移除),音效个数限制5个,时长限制10秒;暂时只支持wav和mp3格式。建议使用通用的采样频的文件,如16000、32000、44100、48000等,不建议使用22050及11025的采样率。

API原型

参数说明

参数 类型 说明
id int 音效id,重复时覆盖
path string 音效文件的本地路径,如果填空为移除音效
json_extension(C) string 无效扩展字段
cb(C) function 结果回调,见nim_device_def.h,返回的json_extension无效。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

播放音效

API介绍

播放音效,由kNIMDeviceTypeAudioOutChat设备播放。异步回调操作结果,成功则在播放结束后回调;当音效未加载或者前一次同一个id的音效未播放完成,则失败。

API原型

参数说明

参数 类型 说明
id int 音效id
loop_count int 播放次数,0无效,小于零无限循环
json_extension(C) string 无效扩展字段
cb(C) function 结果回调,见nim_device_def.h,返回的json_extension无效。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

结束播放音效

API介绍

结束播放音效。正在播放的音效会触发其播放回调。

API原型

参数说明

参数 类型 说明
id int 音效id
json_extension(C) string 无效扩展字段
cb(C) function 结果回调,见nim_device_def.h,返回的json_extension无效。
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

无返回值。

示例

×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。