绝大多数直播推流场景,建议去掉 B 帧(设为 0);仅在带宽极有限、且能接受延迟与兼容性风险时,才少量启用 B 帧。
一、B 帧的核心利弊(直播视角)
优点
压缩率更高,同画质下码率更低、带宽更省
高动态画面(如游戏、运动)的平滑度更好
缺点(直播致命)
延迟增加:需缓存未来帧做双向参考,编码延迟 + 1~3 帧,端到端延迟明显上升
兼容性差:Web 端、老旧设备、RTC / 快直播常不兼容,易黑屏、花屏、跳帧
解码更耗 CPU:移动端 / 低配设备易卡顿
GOP 不稳定:影响 CDN 分发与丢包恢复
二、直播场景决策表(直接照抄)

三、主流工具设置(OBS/FFmpeg)
1. OBS(x264 软编)
输出 → 编码器:x264
高级设置 → x264 选项:bframes=0
或 Tune:zerolatency(自动禁用 B 帧)
2. OBS(NVENC/AMF 硬编)
输出 → 编码器:NVENC
高级设置 → 最大 B 帧:0
或预设:low-latency/ultra-low-latency
3. FFmpeg 推流
ffmpeg -i input -c:v libx264 -bf 0 -tune zerolatency -f flv rtmp://xxx -bf 0:禁用 B 帧
-tune zerolatency:零延迟模式
四、折中方案(带宽不够又要低延迟)
仅开 1 个 B 帧(bframes=1),平衡压缩与延迟
搭配 短 GOP(如 1 秒 1 个 I 帧,-g 30),提升抗丢包能力
用 CBR 恒定码率,避免码率波动加剧卡顿
五、结论与建议
优先禁用 B 帧(bframes=0):这是直播 / 实时通信的行业标准,能最大程度保证低延迟、高兼容、稳定播放。
仅当上行带宽严重不足(<2Mbps),且测试后无兼容性问题,才考虑开 1~2 个 B 帧。