diff --git a/handlers/base.py b/handlers/base.py index 93e9a84..6716d3f 100644 --- a/handlers/base.py +++ b/handlers/base.py @@ -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 上限:保留质量控制的同时限制峰值码率