webrtc QOS方法十三(视频渲染平滑)

一、背景介绍

视频渲染时间的确定需要考虑三方面的因素:网络抖动、网络延时、音视频同步

网络抖动:视频帧在网络上传输,会受到网络抖动的影响,不能收到立刻播放,需要进行适当的平滑

网络延时:一些报文在网络传输中,会存在丢包重传的情况。渲染时需要进行适当缓存,等待丢失被重传的报文

音视频同步:音视频报文传送到接收端,也不能完全保证同时接收。需要做一些时间校准,保证音视频偏差不影响体验

所以在计算视频渲染时间的时候,会结合这三方面的参数,计算一个合理值。

二、实现原理

1、RTP报文->组视频帧 函数调用关系

RtpDemuxer::OnRtpPacket

->RtpVideoStreamReceiver2::OnRtpPacket

->RtpVideoStreamReceiver2::ReceivePacket

->RtpVideoStreamReceiver2::OnReceivedPayloadData

->RtpVideoStreamReceiver2::OnInsertedPacket

->RtpVideoStreamReceiver2::OnAssembledFrame

->RtpVideoStreamReceiver2::OnCompleteFrames

->VideoReceiveStream2::OnCompleteFrame

->VideoStreamBufferController::InsertFrame
->VideoStreamBufferController::MaybeScheduleFrameForRelease

->VideoStreamBufferController::FrameReadyForDecode

->VideoStreamBufferController::OnFrameReady

->VCMTiming::RenderTime
->VCMTiming::RenderTimeInternal ---计算视频渲染时间核心函数

2、计算视频帧 渲染时间 核心函数:

三、实现细节

1、根据ts计算渲染时间

WebRTC QOS方法十三.1(TimestampExtrapolator接收时间预估)-CSDN博客文章浏览阅读21次。虽然我们可通过时间戳的差值和采样率计算出发送端视频帧的发送节奏,但是由于网络延迟、抖动、丢包,仅知道视频发送端的发送节奏是明显不够的。我们还需要评估出视频接收端的视频帧的接收节奏,然后进行适当平滑,保证渲染的效果。WebRTC引入了卡尔曼滤波,通过视频时间戳和到达时间进行调整,提高后续视频帧到达时间估算的准确性和稳定性。TimestampExtrapolator就是实现视频帧的到达时间的估算。在实际的网络环境中,由于网络波动、设备性能差异等因素,接收到的视频帧时间戳往往包含噪声。https://blog.csdn.net/CrystalShaw/article/details/140543583?spm=1001.2014.3001.5502

2、根据网络做二次平滑

webrtc代码走读十六(Jitter延时的计算)_webrtc jitterdelay framedelay-CSDN博客文章浏览阅读4.5k次,点赞4次,收藏20次。一、延时计算原理1)jitter延时计算公式JitterDelay由两部分延迟造成:传输大帧引起的延迟和网络噪声引起的延迟。计算公式如下:JitterDelay = theta[0] * (MaxFS -- AvgFS) + [noiseStdDevs * sqrt(varNoise) -- noiseStdDevOffset]该公式详细推导过程,请参见大牛的文章《WebRTC视频接收..._webrtc jitterdelay framedelayhttps://blog.csdn.net/CrystalShaw/article/details/100763301

3、音视频同步延时时间

webrtc QOS方法十一(音视频同步AVSyn实现)_webrtc avsync-CSDN博客文章浏览阅读1.8k次。一、背景介绍音视频同步效果直接影响用户体验,音视频同步机制也是webrtc的核心模块之一。音视频同步的基本思想是,在接收端渲染前,对齐当前要渲染的音视频采集时间,要处理好三大块事情:音视频采集绝对时间、音视频传输时间、音视频同步时间。二、实现原理1)采集时间2)传输时间戳3)音视频同步三、参考https://www.jianshu.com/p/3a4d24a71091https://my.oschina.net/u/4713941/blog/4974741.._webrtc avsynchttps://blog.csdn.net/CrystalShaw/article/details/114820274

相关推荐
kkk_皮蛋4 小时前
在移动端使用 WebRTC (Android/iOS)
android·ios·webrtc
Yuer20256 小时前
WebRTC 实时语音交互如何支持“可中断”?为什么状态机(FSM)是绕不开的方案
算法·rust·webrtc·fsm
web前端进阶者3 天前
webRTC指定设备加自定义用户头像
音视频·webrtc
kkk_皮蛋3 天前
WebRTC 视频编码基础 (VP8/VP9/H.264/AV1)
音视频·webrtc·vp8
Smile_2542204184 天前
vlc的使用
网络·webrtc·实时音视频
kkk_皮蛋5 天前
带宽估计 BWE (WebRTC 的智能网络优化核心)
网络·webrtc
txp玩Linux6 天前
rk3568上webrtc处理稳态噪声实践
算法·webrtc
好游科技9 天前
IM即时通讯系统:安全可控、功能全面的社交解决方案全解析
安全·音视频·webrtc·im即时通讯·私有化部署im即时通讯·社交app
JellyDDD9 天前
【悬赏】Android WebRTC 数字人项目回声问题排查(AEC / AudioMode)
音视频·webrtc
好游科技10 天前
语聊APP新生态!一站式语聊房语音直播APP源码开发搭建
音视频·webrtc·im即时通讯·社交软件·社交语音视频软件