我正在开发一款应用程序,它可以在两台android设备之间进行实时流媒体播放。我得到了一些不错的结果,比如连接,视频流。但我对声音的质量不满意,因为声音中有很多回声和噪音。这就是我如何使用音频轨道
localMS = factory.createLocalMediaStream("ARDAMS");
if(pcParams.videoCallEnabled)
{
MediaConstraints videoConstraints = new MediaConstraints();
videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxHeight", height));
videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxWidth", width));
videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxFrameRate", Integer.toString(pcParams.videoFps)));
videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("minFrameRate", Integer.toString(pcParams.videoFps)));
videoSource = factory.createVideoSource(getVideoCapturer(), videoConstraints);
localMS.addTrack(factory.createVideoTrack("ARDAMSv0", videoSource));
}
AudioSource audioSource = factory.createAudioSource(new MediaConstraints());
localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));
mListener.onLocalStream(localMS);
所以我正在寻找消除回声和噪音的方法。任何帮助和指导都将不胜感激。
解决音质问题的可能解决方案:
- 降低视频分辨率,为音频提供更多带宽
- 不要在同一个物理房间中运行两个客户端(一台计算机扬声器的声音进入另一台计算机的麦克风)
- 降低扬声器音量
- 使用耳机
- 使用带有内置降噪功能的会议麦克风/扬声器
- Android实现噪音消除API(http://developer.android.com/reference/android/media/audiofx/NoiseSuppressor.html)