You've already forked FrameTour-RenderWorker
fix(video): 解决 HLS 流中 B 帧导致的 PTS/DTS 回退问题
- 在硬件加速编码参数中添加 -bf 0 选项禁用 B 帧 - 在 CUDA 硬件加速模式下添加 B 帧禁用配置 - 在软件编码模式下添加 B 帧禁用参数设置 - 添加注释说明禁用 B 帧的原因是为了避免 TS 分片边界问题
This commit is contained in:
@@ -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 上限:保留质量控制的同时限制峰值码率
|
||||
|
||||
Reference in New Issue
Block a user