ffmpeg rtmp流占用100%的CPU

时间:2016-12-11 17:07:16

标签: ffmpeg

我正在创建一个小脚本来在rtmp服务器上传输图像,但FFMPEG命令占用100%的CPU。请查看我的代码。

ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -loop 1 -i "Digital-Wallet-.jpg" -t 00:30:00 -r 1 -c:v  libx264 -c:a aac -preset:v ultrafast  -pix_fmt yuv420p -f flv "rtmp://rtmpserver"

1 个答案:

答案 0 :(得分:3)

编码是CPU密集型的。移除-r 1并添加-framerate 1-re-shortest

ffmpeg -f lavfi -i anullsrc -loop 1 -framerate 1 -re -i "Digital-Wallet-.jpg" -t 00:30:00 -c:v libx264 -c:a aac -preset:v ultrafast -pix_fmt yuv420p -shortest -f flv "rtmp://rtmpserver"
  • 默认的图像分离器帧速率为25,因此您的命令不必要地将每秒25帧转换为每秒1帧,这是低效的。上述更改修复了该问题。

  • -re会减慢输入读取到输入的本机帧速率。它对实时输出和实时流非常有用。否则ffmpeg将尝试尽快编码。

  • 我添加-shortest以在最短流结束时(图像)结束输出,因为anullsrc被设置为无限编码。