0

I am using ffmpeg to extract the gop-structure of videos, which I recorded with my Smartphone (Samsung Galaxy A51) and my GoPro (Hero 7 Black). The gop-structures I get all look like this: IPPPPPPPPPPPPPP. The videos of the different devices only differ in the number of P-Frame per gop-structure. The ffmpeg code I used fpr this is the following:

ffprobe -show_frames inputvideo.mp4 -print_format json Now my question is why the encoders of both devices don't use B-Frames? Is is it because the encoding of B-Frames is more complicated for the Hardwar or something like this?

1 Answers1

1

Yes, a B-Frame uses at least two reference frames (one in the past, one in the future), while P-Frames may use only one. Encoding with more reference frames is more expensive, because you have to compare a block to all reference frames to check where you need the least bits for encoding.

Additionally, introducing B frames increases latency, since the reference frame in the future has to be encoded, transmitted and decoded before the B frames depending on it can be encoded/transmitted/decoded. A higher latency is bad for video conferencing.

Both reasons are valid for mobile devices, where you are more constrained in power and latency than in transmission bandwidth.

micha137
  • 1,195
  • 8
  • 22