如何在FFmpeg的H.264编码(h264_nvenc)中禁用B帧?
h264_nvenc禁用B帧的正确参数与配置说明
一、别用错参数:h264_nvenc不认-bframes
-bframes是CPU编码器x264的参数,NVIDIA硬件编码器h264_nvenc对应的禁用B帧参数是-bf 0或者-b_frame_count 0,二者效果完全一致,选其一即可。
二、参数的正确放置位置
必须把-bf 0放在编码器指定项之后,也就是-c:v h264_nvenc的后面,和preset、tune这类nvenc专属参数放在一起。
修正后的完整命令示例:
-probesize 10MB -s 1920x1080 -framerate 30 -i video.h264 -c:v h264_nvenc -preset p7 -tune 4 -rc:v vbr -cq:v 1 -profile:v high -pix_fmt yuv420p -bf 0 -s 1920x1080 -r:v 30 output.h264
(建议把输出文件名改成output.h264,避免直接覆盖原视频文件)
三、tune 4(无损模式)下要不要加-bf 0?
要加。tune 4只是开启nvenc的无损编码模式,并不会自动禁用B帧。你的原视频本身没有B帧,如果希望输出视频和原视频的帧结构完全一致,必须手动添加-bf 0,否则nvenc会根据预设自动插入B帧。
内容的提问来源于stack exchange,提问作者A GV
相关产品推荐
相关产品推荐

