FFmpeg推预录视频至YouTube:关键帧与码率参数修复
修正后的FFmpeg推流命令及说明
针对你遇到的关键帧间隔和码率问题,直接修改命令如下(假设原视频帧率为25fps):
ffmpeg -re -stream_loop -1 -i live1.mp4 -c:v libx264 -preset veryfast -b:v 4500k -maxrate 4500k -bufsize 9000k -pix_fmt yuv420p -g 100 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv -flvflags no_duration_filesize rtmp://a.rtmp.youtube.com/live2/(streamkey)
关键修改点:
移除
-c copy并指定编码器
原命令用-c copy直接复制视频流,导致后续的-g(关键帧)和码率参数完全不生效——复制模式下无法修改任何编码属性。换成-c:v libx264启用H.264重新编码,才能应用关键帧和码率设置。调整关键帧间隔
YouTube要求关键帧间隔≤4秒,关键帧参数-g的值等于帧率×4:- 25fps视频:
-g 100(25×4=100,对应4秒间隔) - 30fps视频:
-g 120(30×4=120)
你收到的5秒关键帧提示,是因为原视频自身的关键帧间隔为5秒,而-c copy模式下-g 50的设置根本没生效,必须重新编码才能强制覆盖原参数。
- 25fps视频:
修正码率参数
- 把混乱的
-b:v 7000k -maxrate 3000k改成-b:v 4500k -maxrate 4500k,严格匹配YouTube推荐的4500Kbps目标码率 bufsize设为9000k(目标码率的2倍),让FFmpeg有足够缓冲空间稳定输出码率,避免平台判定码率波动超标
- 把混乱的
补充说明:
如果不确定原视频帧率,先运行以下命令查看:
ffmpeg -i live1.mp4 2>&1 | grep "fps"
再根据实际帧率调整-g的值即可。
内容的提问来源于stack exchange,提问作者Rsan
相关产品推荐
相关产品推荐

