fix(video): 解决 HLS 流中 B 帧导致的 PTS/DTS 回退问题

- 在硬件加速编码参数中添加 -bf 0 选项禁用 B 帧
- 在 CUDA 硬件加速模式下添加 B 帧禁用配置
- 在软件编码模式下添加 B 帧禁用参数设置
- 添加注释说明禁用 B 帧的原因是为了避免 TS 分片边界问题
This commit is contained in:
2026-03-04 11:25:08 +08:00
parent ca90336905
commit d54e6e948f

View File

@@ -63,6 +63,8 @@ def get_video_encode_args(hw_accel: str = HW_ACCEL_NONE, maxrate: Optional[int]
'-level', params['level'],
'-global_quality', params['global_quality'],
'-look_ahead', params['look_ahead'],
# 禁用 B 帧,避免独立 TS 分片在 HLS 边界出现 PTS/DTS 回退
'-bf', '0',
]
elif hw_accel == HW_ACCEL_CUDA:
params = VIDEO_ENCODE_PARAMS_CUDA
@@ -74,6 +76,8 @@ def get_video_encode_args(hw_accel: str = HW_ACCEL_NONE, maxrate: Optional[int]
'-rc', params['rc'],
'-cq', params['cq'],
'-b:v', '0', # 配合 vbr 模式使用 cq
# 禁用 B 帧,避免独立 TS 分片在 HLS 边界出现 PTS/DTS 回退
'-bf', '0',
]
else:
# 软件编码(默认)
@@ -85,6 +89,8 @@ def get_video_encode_args(hw_accel: str = HW_ACCEL_NONE, maxrate: Optional[int]
'-level', params['level'],
'-crf', params['crf'],
'-pix_fmt', params['pix_fmt'],
# 禁用 B 帧,避免独立 TS 分片在 HLS 边界出现 PTS/DTS 回退
'-bf', '0',
]
# CRF/CQ + maxrate 上限:保留质量控制的同时限制峰值码率