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 QoS方法十三.2(Jitter延时的计算)-CSDN博客文章浏览阅读2次。一些报文在网络传输中,会存在丢包重传和延时的情况。渲染时需要进行适当缓存,等待丢失被重传的报文或者正在路上传输的报文。jitter延时计算就是确认需要缓存的时间。https://blog.csdn.net/CrystalShaw/article/details/140616793?spm=1001.2014.3001.5502

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

### WebRTC中的QoS配置与最佳实践 在WebRTC应用中,确保高质量的服务(QoS)对于提供流畅的实时通信至关重要。为了达到这一目标,网络条件评估和适应机制扮演着重要角色[^1]。 #### 自动调整带宽估计 WebRTC内置了一个复杂的算法来自动估算可用带宽并相应地调整视频编码参数。这种自适应比特率(ABR)技术能够动态响应变化的网络状况,在保持低延迟的同时最大化视觉质量。 #### 使用SVC分层编码 可扩展视频编码(SVC)允许发送端创建多个不同分辨率版本的数据流,接收方可以根据当前网络状态选择最合适的层次解码播放。这种方法提高了鲁棒性和灵活性,尤其适合于具有高度波动性的无线连接环境。 #### 实施FEC前向纠错策略 通过启用前向错误校正(FEC),可以在一定程度上补偿数据包丢失带来的影响而不必重传整个帧。这有助于减少卡顿现象的发生频率,特别是在丢包较为严重的场景下表现良好。 ```javascript // JavaScript示例:开启FEC功能 const pc = new RTCPeerConnection(); pc.addTransceiver('audio', {direction:'sendrecv'}); let sender = pc.getSenders()[0]; sender.setParameters({ encodings: [{ fec: true, }] }); ``` #### 配置优先级队列 在网络设备层面设置基于DSCP标记或其他标准的流量分类规则,可以为多媒体会话分配更高的转发优先级,从而保障其传输效率不受其他类型业务干扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值