ffmpeg "steam" cbr gop

ffmpeg "steam" cbr gop

这是关于使用 ffmpeg 将实时视频流式传输到 STEAM...

我有这个命令

ffmpeg -re -i file-from-webcam.webm -deinterlace 
-c:v libx264 -pix_fmt yuv420p -preset veryfast 
-tune zerolatency -c:a aac -b:a 128k -ac 2 -strict -2 -crf 18 
-r 30 -g 60  -vb 1369k -minrate 1369k -maxrate 1369 -ar 44100 -x264-params "nal-hrd=cbr" 
-vf "scale=1280:720" -profile:v main 
-f flv "rtmp://ingest-rtmp.broadcast.steamcontent.com/app/steam_...."

但几秒钟后,流停止并且 steam 日志显示

    Make sure your upload key-frame interval is set to 2 seconds 
and use constant bitrate (CBR). 
Limit your encoders group of picture (GOP) to at most two times your framerate.

但我有 -x264-params "nal-hrd=cbr" -r 30 -g 60 帧率 30 GOP 60...

ffmpeg命令有问题吗? 还是 linux 服务器相关?

**** SAME ffmpeg 命令在 youtube、twitter、twitch、dlive、facebook 等中运行得非常好...

所以我缺少什么才能让它在 Steam 上运行?

ffmpeg -re -i file.webm -deinterlace -c:v libx264 -preset veryfast -tune zerolatency -c:a aac -b:a 128k -ac 2 -r 30 -g 60 -vb 1369k -minrate 1369k -maxrate 1369k -bufsize 2730k -ar 44100 -x264-params "nal-hrd=cbr" -vf "scale=1280:720,format=yuv420p" -profile:v main -f flv "rtmp://ingest-rtmp.broadcast.steamcontent.com/app/___key___"
  • -crf-b:v/-vb 是互斥的。您的 -vb 可能被忽略了。由于您想要特定的比特率删除 -crf.
  • -maxrate 1369 缺少 k
  • 添加-bufsize。参见 FFmpeg Wiki: Encoding for Streaming Sites
  • 不需要-strict -2。用户总是在不知道为什么的情况下添加它。 (它适用于 2015 年之前的旧 AAC 编码器。)
  • 确保您的输入有音频。某些网站(如 YouTube)需要音频。如果它没有音频,请使用 anullsrc 过滤器生成无声音频。