A: they are super useful! check this out.
you are sending rtp packets with video like so:
[1, 2, 3] , [4, 5], [6] ...
[1,2,3]
is an I-frame
now browser receives the following packets:
[2, 3], [4, 5], [6]
obviously it can’t decode first frame, but what’s worse it can’t decode [4,5]
and [6]
because they are dependent P-frames so browser sends RTCP NACK [1]
which means: hey send me packet with sequence number 1 again
you receive the rtcp nack
take 1
from your rtp jitter buffer (a fancy way to say "a short list of packets you already sent") you resend 1
to browser
now browser can decode all three frames
PLI
- browser sends PLI
(picture loss indicator) when it can't decode video for any reason, normally it means you should encode an extra I-frame and send it as soon as possibleREMB
- browser sends REMB
rtcp packet to suggest a new bitrate to sender