欢迎访问我其它的博文 https://blog.csdn.net/freeabc
一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984
WebRTC 那些常用的缩略词以及部分知识杂谈
一、 缩略语
SDP Session Description Protocol 会话描述协议
ICE Interactive Connectivity Establishment 交互式连接建立
JSEP JavaScript Session Establishment Protocol
BWE Bandwidth Estimation
SLI Slice Loss Indictor .
The SLI FB messageis identified by PT=PSFB and FMT=2. Slice Loss Indication,为帧内部分块损
坏后发送
PLI Picture Loss Indictor 关键帧丢包重传,参考rfc4585
The PLI FB messageis identified by PT=PSFB and FMT=1. Picture Loss Indication,为整个图像帧丢
失后发送
FIR Full intra frame request 关键帧重传请求(IDR帧,无需参考帧可解码)
这里面Intra的含义可能很多人不知道。Intra的含义是图像内编码,不需要其他图像信息即可解码
Inter指图像间编码,解码需要参考帧。故Intra Frame其实就是指I帧,Inter Frame指P帧或B帧。
REMB Receiver Estimated Maximum Bitrate
WMS WebRTC Media Stream
msid Media Stream ID
ccm Codec Control Using RTCP Feedback Message 是支持使用rtcp反馈机制来实现编码控制
transport-cc 编码支持使用rtcp来控制拥塞
NACK Negative ACKnowledgement 丢包重传
REX Retransmission 重传
RTT Round-Trip Time 网络往返时间
rtcp-fb RTCP Feedback
PSFB Payload-Specific FB 消息被定义为载荷类型为PSFB的RTCP消息
ALR Application limited region 发送码率占最大预算码率值比例低于某个值的话Alr 会被触发了,恢复到某
个值以上,Alr会停止。
二、FEC
FEC是发送端在发送报文的时候,将之前的旧包也打包到新包里面,若接收端有丢包,就用新包里面冗余的旧包恢复数据。
webrtc实现该冗余功能,有三种方式:
1、RED就是RFC2198冗余。将前面的报文直接打入到新包里面,在接收端解析主包和冗余包。
2、ULPFEC,目前webrtc仅将SVC编码的Level
0视频帧打包成FEC。其余层有丢包,就逐步将帧率,保证视频相对流畅。用到的协议是:RFC5109。
3、FLEXFEC根据接收端反馈回来的丢包信息,总结一些规律,把预判丢失概率比较大的包,冗余打包出去
三、 NACK
NACK也是一种通知技术,只是触发通知的条件刚好的ACK相反,在未收到消息时,通知发送方“我未收到消息”,即通知未达。
在rfc4585协议中定义可重传未到达数据的类型有二种:
1)RTPFB:rtp报文丢失重传。
2)PSFB:指定净荷重传,指定净荷重传里面又分如下三种:
1、PLI (Picture Loss Indication) 视频帧丢失重传。
2、SLI (Slice Loss Indication) slice丢失重转。
3、RPSI (Reference Picture Selection Indication)参考帧丢失重传。
四、SETUP
a=setup 主要是表示dtls的协商过程中角色的问题,谁是客户端,谁是服务器
- a=setup:actpass 既可以是客户端,也可以是服务器
- a=setup:active 客户端
- a=setup:passive 服务器
a=sendrecv 主要表示流的传输方向
- a=sendrecv 发送和接收
- a=sendonly 只能发送
- a=recvonly 只能接收
- a=inactive 未激活
五、重传机制解释
I 、关键帧请求
主要包括SLI/PLI/FIR,集中报文手段,目的是在关键帧丢失无法解码时,请求发送方重新生成并发送一个关键帧。本质是一种重传,但是跟传输层的重传的区别是,它重传是最新生成的帧。
PLI 是Picture LossIndication,SLI 是Slice Loss Indication。发送方接收到接收方反馈的PLI或SLI需要重新让编码器生成关键帧并发送给接收端。
FIR 是Full Intra Request,这里面Intra的含义可能很多人不知道。Intra的含义是图像内编码,不需要其他图像信息即可解码;Inter指图像间编码,解码需要参考帧。故Intra Frame其实就是指I帧,Inter Frame指P帧或B帧。
那么为什么在PLI和SLI之外还需要一个FIR呢?原因是使用场景不同,FIR更多是在一个中心化的Video Conference中,新的参与者加入,就需要发送一个FIR,其他的参与者给他发送一个关键帧这样才能解码,而PLI和SLI的含义更多是在发生丢包或解码错误时使用。
II 、重传请求
主要包括RTX/NACK/RPSI
这个重传跟关键帧请求的区别是它可以要求任意帧进行重传
III、码率控制
主要包括REMB/TMMBR/TMMBN
TMMBR是Temporal Max MediaBitrate Request,表示临时最大码率请求。表明接收端当前带宽受限,告诉发送端控制码率。
REMB是ReceiverEstimatedMax Bitrate,接收端估计的最大码率。