歡迎訪問我其它的博文 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,接收端估計的最大碼率。