WebRTC原生PLC VS SILK之PLC

一、WebRTC的PLC调度策略

GetAudioInternal

只有WebRTC使用opus编解码的时候,才会调用opus的decode,进而调用silk的plc

否则走的都是WebRTC原生的DoExpand函数,使用的是Expand::Process算法。

二、SILK编码的PLC实现原理

参考如下链接介绍:https://blog.csdn.net/CrystalShaw/article/details/159652142?spm=1001.2014.3001.5502https://blog.csdn.net/CrystalShaw/article/details/159652142?spm=1001.2014.3001.5502

结合核心函数silk_PLC实现:

当网络传输发生数据包丢失,解码器无法获得当前帧的编码参数(如 LPC 系数、基音周期、增益等)。为不让音频中断或产生刺耳的噪音,该函数利用前一帧的信息来猜测并合成当前丢失帧的信号,同时随着丢包时间的延长逐渐衰减信号能量,使听感自然过渡到静音。

  1. 核心设计思想
    参数延续 :使用上一帧的 LPC 系数、基音周期(Pitch Lag)和增益。
    能量衰减 :随连续丢包数量(lossCnt)增加,逐渐降低信号增益,避免突然静音或持续大声重复。
    去周期性 :在重复基音信号时加入随机噪声,防止声音变成单调的"机器人音"或蜂鸣声。
    基音漂移 :缓慢增加基音周期,模拟人声自然变化,避免频率锁定。
    滤波器稳定化:对上一帧LPC系数进行带宽扩展BWE,防止合成滤波器不稳定导致信号发散。

三、WebRTC原生PLC实现原理

参见如下链接:

https://blog.csdn.net/CrystalShaw/article/details/150986067?spm=1001.2014.3001.5501https://blog.csdn.net/CrystalShaw/article/details/150986067?spm=1001.2014.3001.5501

四、对比小结

无论是opus的plc还是WebRTC原生的plc,其实都是通过LTP、LPC进行预测、衰减、平滑过渡。

opus的LTP、LPC等参数是编码器带过来的,不用进行重新计算,而WebRTC的plc,在感知到丢包后,会调用历史数据,重新计算LTP和LPC等参数信息,实际测试效果上没太大质的不同。

相关推荐
OpenLoong 开源社区6 天前
打破 NAT 限制,零侵入跨网络通信:基于 WebRTC 的透明 TCP 隧道跨网络通信方案
网络协议·tcp/ip·开源·webrtc·openloong开源社区
探鸽小钛9 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc
草根大哥9 天前
AI 编程实践之自建视频CDN
音视频·webrtc·低延迟直播·视频cdn·低延迟cdn
EasyCVR10 天前
应急指挥怕延迟?聊聊视频汇聚/视频融合/视频分析EasyCVR平台WebRTC低延迟方案
音视频·webrtc·easycvr
TrueDei11 天前
WebRTC ICE 候选变成 mDNS 地址导致连接失败:原因分析与解决方案
webrtc
中屹指纹浏览器svip13 天前
WebRTC泄露是什么,怎么关闭?
webrtc
海边捡石子14 天前
从零设计一个通用智能电话平台:FreeSWITCH + ESL + AI 实战架构
人工智能·架构·webrtc
音视频牛哥15 天前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
直播技术开发交流17 天前
Android 端 WHIP 协议推流技术实践:相机/录屏/多路转发WHIP实现测试
webrtc·android whip·rtsp转whip·毫秒级实时媒体流·whip低延时推送·whip推送实现·rtsp转webrtc
程序员阿明18 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc