我正在创建一个小脚本来在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"
答案 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被设置为无限编码。