提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
webrtc-M69网传控制模式
文章目录
前言
webrtc-69版本对于网传控制模式并未开放出来,需要自己去实现,但是最新的版本的对于这个已经放开。
在此记录自己的源码修改相关,可能与最新版本有很大的差别,但是对于学习来说是可以借鉴和探讨的。
这里有我处理这块的心路历程,具体请看有道笔记。
分辨率的改变,是由于网络变化引起的;
webrtc中,通过,往返延时,接收延时,丢包率和相关算法获取网络当前状态;详细内容可以参考相关文章;
分辨率直接变化的原因是QP值的变化,QP值的变化是码率引起的,码率的变化时网络带宽变化控制的,带宽变化的数值是由webrtc中的带宽估计算法计算的。
发送方的分辨率,帧率调整需要设置相关的模式,源码:
src\api\rtp_parameters.h
// Based on the spec in
// https://w3c.github.io/webrtc-pc/#idl-def-rtcdegradationpreference.
// These options are enforced on a best-effort basis. For instance, all of
// these options may suffer some frame drops in order to avoid queuing.
// TODO(sprang): Look into possibility of more strictly enforcing the
// maintain-framerate option.
// TODO(deadbeef): Default to "balanced", as the spec indicates?
enum class DegradationPreference {
// Don't take any actions based on over-utilization signals. Not part of the
// web API.
DISABLED,
// On over-use, request lower resolution, possibly causing down-scaling.
MAINTAIN_FRAMERATE,
// On over-use, request lower frame rate, possibly causing frame drops.
MAINTAIN_RESOLUTION,
// Try to strike a "pleasing" balance between frame rate or resolution.
BALANCED,
};