在客户端录制语音

      在客户端录制语音的一般需求是,希望将自己参与的语音会话的内容全部录制下来(包括自己的语音)。但是,当正在与别人(一个或多个)进行语音聊天时,我们从扬声器中是听不到自己讲话的声音的,也就是说,OMCS提供的IMultimediaManager的AudioPlayed事件提供的数据只是其他人语音的混音数据,其中并没有mix自己的语音。那怎么办了?

 

方案一:自己实现混音。

       我们可以预定IMultimediaManager的AudioCaptured事件,AudioCaptured事件提供的数据就是自己麦克风采集到的数据,也即是自己的语音数据。然后再和AudioPlayed事件提供的数据进行混音,这样混音的结果就包含自己的声音了,将这个结果用MFile进行录制就达到了目标。

       在自己实现混音时,要注意,我们需要使用两个队列来缓存两路语音(AudioPlayed的数据和AudioCaptured的数据),并使用一个Timer定时器(比如每10ms一次)来定时从两个队列中分别获取一个音频帧,再使用混音算法计算。

 

方案二:使用AudioInOutMixer类。

       OMCS提供的OMCS.Passive.Audio.AudioInOutMixer类将方案一实现为了OMCS的内置功能,AudioInOutMixer混音器用于将本地话筒设备的输入数据以及本地声音播放的输出数据进行混音。所以,只需要调用AudioInOutMixer的Initialize方法,并预定其AudioMixed事件即可。AudioMixed事件提供的就是我们需要的最终的混音结果。请记住,当不再使用AudioInOutMixer时,请调用其Dispose方法释放混音器。


      最后,如果您自己没有语音录制技术,可以使用我们开发的MFile语音视频录制组件。     

在客户端录制语音

上一篇:Debug POSIX 多线程


下一篇:opencv 手势识别