网络摄像头可以通过网络远程查看实时视频图像,也可以和浏览器与手机APP等对讲,对讲方案有P2P/SFU/MCU等。metaRTC+ZLMediaKit是一个比较适合的SFU对讲方案。
语音编码
考虑摄像头算力低以及拾音器采样率等因素,G711比OPUS更适合。
metaRTC支持G711A(PCMA)/G711U(PCMU)
metaRTC采用缓存等技术实现G711A/G711U占用CPU算力极低
ZLMediaKit支持G711 webRTC推拉流
视频编码
考虑到市面上摄像头硬编码大多支持H264/H265,视频编码H264/H265是比较适合的选项。
综上所述推荐G711+H264/H265音视频编码。
语音处理
摄像头对讲语音处理是其中非常重要的模块,实现流畅、清晰、稳定的对讲需要多种声音处理模块。
回声消除AEC(Acoustic Echo Chancellor)
AEC会监测扬声器和麦克风拾音器输入之间的回声,并使用算法来抵消回声信号,避免出现回声和延迟以提高语音对讲质量。
YangRtcAec *aec;
//aecLib 1:webrtc aec 0:speexdsp aec 2:内置AEC或其他AEC实现
yang_create_rtcaec(session->aec,aecLib);
aec->echoPlayback(aec->session,pcm);
aec->echoCapture(aec->session, input, pcm);
自适应增益控制AGC(Automatic Gain Control)
AGC可以自动检测音频信号强度和自动调整输入和输出音频信号的音量,防止音频音量忽大忽小,保证音频采集和播放的稳定性。
YangAgc* agc;
agc->agcProcess(agc->session,pcm);
背景噪音抑制ANS(Automatic Noise Suppression)
ANS可探测出背景固定频率的杂音并消除背景噪音,例如:风扇、空调声等杂音会自动滤除,使声音更清晰。
YangRtcAns* ans;
ans->preprocess_run(ans->session,pcm);
语音动态侦测VAD(Voice Activity Detection)
VAD算法的作用是检测是否是人的语音,可作为其他音频处理的参考。
YangVad* vad;
vad->voiceActivity(vad->session,pcm,frameSize,sampleRate);
舒适噪音生成CNG(Comfort Noise Generation)
CNG是一个在对讲过程中出现短暂静音时用来为对讲产生背景噪声的模块,常用在VAD检测没有人声时处理。
YangCng* cng;
cng->voiceGenerate(cng->session,pcm,frameSize,sampleRate);
视频处理
对讲时受网络影响视频会有花屏绿屏、卡顿等情形发生,花屏绿屏影响尤甚,花屏会被非专业用户误认为是产品质量问题而非网络问题。
视频处理模块非常重要的一项功能是减少或者消除花屏绿屏情形。
音视频流
考虑到ZLMediaKit等SFU只接收单向传输流,对讲需建立推拉两个流。文章来源:https://www.toymoban.com/news/detail-501567.html
推流:采集摄像头视频和拾音器(麦克风)音频推流到ZLMediaKit。
拉流:从ZLMediaKit拉流播放远端视频和声音。
文章来源地址https://www.toymoban.com/news/detail-501567.html
到了这里,关于webrtc摄像头对讲方案metaRTC ZLMediaKit的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!