数据注入
输入与输出不同,所有的输入都需要使用InjectData接口进行数据注入。该数据开发者通过InjectData注入到服务端,并通过VmiCmd枚举中的MIC_SEND_MIC_DATA命令字指定。示例如下:
VmiDataType module = DATA_MIC; VmiCmd cmd = MIC_SEND_MIC_DATA; uint8_t micData[240]; AudioData audioData; audioData.size = sizeof(micData); uint8_t *data = new uint8_t[sizeof(AudioData) + sizeof(micData)]; memcpy(data, &audioData, sizeof(AudioData)); memcpy(data + sizeof(AudioData), micData, sizeof(micData)) InjectData(module, cmd, data, sizeof(AudioData) + sizeof(micData));
约束说明
麦克风帧需要按照稳定的节奏注入,否则会导致声音听起来不连续。具体约束与default.prop配置文件中vmi.mic.cachefactor的取值有关,该配置项表示麦克风帧队列的缓存大小,有以下4个取值:
- 0:要求每10ms注入1帧,不造成额外延迟。
- 1:要求每160ms注入16帧,造成160ms延迟。
- 2:要求每320ms注入32帧,造成320ms延迟。
- 3:要求每480ms注入48帧,造成480ms延迟。

- 如果使用PCM模式传输麦克风数据,建议客户端到服务端的上行网络带宽不低于2Mbps。
- 注入的麦克风帧之间不能混入空白帧,否则可能会导致声音听起来不连续。
父主题: 麦克风输入开发