QttAudio与WebRTC在Android音频回音消除的使用
楼宇对讲设备中,绝大部分采用的是android系统来运行软件,在其上语音对讲功能的实现并不理想,android系统里的webrtc、opus、speex,能做到的音频降噪,啸叫消除的效果是十分有限的,想做到稳定优质的呼叫对讲,还需要专门的算法来实现回音消除,否则楼宇对讲里的杂音会非常影响用户体验。
qttaudio是专业音频通信技术解决方案,通过简单易用的API,让楼宇对讲的开发者把语音通话功能迅速集成到自己的软件系统中,免除了啸叫、杂音这些麻烦事。
smartphone-3572807_960_720.jpg
一、QttAudio的使用用法
1.Java(Android)
- C (iOS、Windows、Linux)
二、webrtc的用法
WebRTC共分成三个API,让web具备三个功能
1.MediaStream (又称getUserMedia):获取音频和视频
2.RTCPeerConnection:进行音频和视频通信
3.RTCDataChannel:进行任意数据的通信
- navigator.getUserMedia方法目前主要用于,在浏览器中获取音频(通过麦克风)和视频(通过摄像头),将来可以用于获取任意数据流,比如光盘和传感器。
(1)获取摄像头
需要先在网页上放置一个video元素。图像就展示在这个元素中。
<video id="webcam"></video>
然后,用代码获取这个元素
<function onSuccess(stream){
var video = document.getElementById('webcam');
}
将这个元素的src属性绑定数据流,摄像头拍摄的图像就可以显示了。
function onSuccess(stream){
var video = document.getElementById('webcam');
if (window.URL){
video.src = window.URL.createobjectURL(stream);
} else {
video.src =stream;
}
video.autoplay =true;
}
if(navigator.getUserMedia){
navigator.getUserMedia({video:true},onSuccess);
} else{
document.getElementById('webcam').src ='somevideo.mp4';
}
(2)获取麦克风声音
通过浏览器捕获声音,需要借助Web Audio API。
window.AudioContext=window.AudioContext ||
window.webkitAudioContext;
var context = new AudioContext()
function onSuccess(stream){
var audioInput = =context.createMediaStreamSource(streram);
audioInput.connect(context.destination);
}
navigator.getUserMedia({audio:true},onSuccess);
2.RTCPeerConnection
RTCPeerConnection的作用是在浏览器之间建立数据的“点对点”(peer to peer)通信,也就是将浏览器获取的麦克风或摄像头数据,传播给另一个浏览器。这里面包含了很多复杂的工作,比如信号处理、多媒体编码/解码、点对点通信、数据安全、带宽管理等等。
不同客户端之间的音频/视频传递,是不用通过服务器的。但是,两个客户端之间建立联系,需要通过服务器。
WebRTC协议没有规定与服务器的通信方式,因此可以采用各种方式,比如WebSocket。通过服务器,两个客户端按照Session Description Protocol(SDP协议)交换双方的元数据。
3.RTCDataChannel
RTCDataChannel的作用是在点对点之间,传播任意数据。它的API与WebSockets的API相同。
webrtc作为google开源的音视频播放框架,使用起来显得非常复杂,学习成本高,
Qttaudio,作为android平台专业的音视频回音消除方案,无须复杂的音频开发,就几个简单清晰的API,包含opus、speex,做到自动增益、语音降噪,减少啸叫、能帮助楼宇对讲消除通话杂音,实现高清的语音音质,对于做楼宇对讲的公司来说,控制了开发成本,节省了研发时间,更有利于产品的迅速上线、获利!