FFprobe输出中的“has_b_frames”是什么意思?

3

我正在使用ffprobe检查视频文件,以查找视频文件是否具有b帧。当我检查不同的视频文件时,可以看到ffprobe输出显示“has_b_frames = 0”,“has_b_frames = 1”和“has_b_frames = 2”。

index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Main
codec_type=video
codec_time_base=1001/60000
codec_tag_string=avc1
codec_tag=0x31637661
width=1080
height=1920
coded_width=1088
coded_height=1920
has_b_frames=1

“has_b_frames=0”表示视频文件中没有B帧存在?
有人能告诉我这些值表示什么?
1个回答

3

has_b_frames通常表示是否存在视频延迟,即帧是否按照解码顺序呈现。实际被引用的属性取决于特定的比特流格式。对于H264,它是预期最大延迟,以帧为单位,即解码和呈现一帧之间的时间。对于其他编解码器,它可能会显示是否存在一些延迟,但不会显示具体延迟时间。


“当一帧被解码并呈现”是什么意思?“当”一帧被解码的时间是什么?而“它的呈现”是与一帧相关联的时间PTS吗? - AlexZheda
1
正如答案所说,对于H264来说,它是解码和呈现之间的帧间隔。假设存储和解码顺序为I P B2 B1 B3,则P是第二个解码的帧。呈现顺序为I B1 B2 B3 P,因此它是第五个呈现的帧。 - Gyan
请原谅我的业余问题 - 所以演示顺序是指视频播放器播放(“呈现”)帧的顺序?而存储/解码顺序是流数据本身位序列的顺序? - AlexZheda
你能帮我解决这个问题吗?我认为这与呈现和基础时间轴有关。time_basecodec_time_base存在差异。https://dev59.com/17noa4cB1Zd3GeqPQW1b - AlexZheda
有人知道如何启用B帧吗? - user1315621

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接