简体   繁体   中英

why do andorid camera and gopros not use b-frames?

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM