0

我正在使用 ffmpeg 提取视频的 gop 结构,这些视频是用我的智能手机(Samsung Galaxy A51)和 GoPro(Hero 7 Black)录制的。我得到的 gop 结构看起来都是这样的:IPPPPPPPPPPPPPP。不同设备的视频仅在每个 gop 结构的 P-Frame 数量上有所不同。我使用 fpr 的 ffmpeg 代码如下:

ffprobe -show_frames inputvideo.mp4 -print_format json 现在我的问题是为什么两个设备的编码器都不使用 B 帧?是因为 B 帧的编码对于硬件来说更复杂还是类似的东西?

4

1 回答 1

1

是的,B 帧至少使用两个参考帧(过去一个,未来一个),而 P 帧可能只使用一个。使用更多参考帧进行编码更昂贵,因为您必须将一个块与所有参考帧进行比较,以检查您需要最少比特进行编码的位置。

此外,引入 B 帧会增加延迟,因为未来的参考帧必须在取决于它的 B 帧被编码/传输/解码之前被编码、传输和解码。较高的延迟不利于视频会议。

这两个原因都适用于移动设备,与传输带宽相比,您在功率和延迟方面受到的限制更大。

于 2021-08-26T09:11:14.630 回答