当ffmpeg函数运行时,内存没有问题,并且一切运行顺利。但是,当我尝试通过按q(或ctrl-c)停止流/ ffmpeg时,ffmpeg冻结,不接受任何其他输入,并突然占用了淫秽的内存。
我正在使用ffmpeg在YouTube上进行直播。我正在使用运行macOS Mojave的MacBook Mid 2015。
这是我与ffmpeg一起使用的功能。
ffmpeg -re -f lavfi -i testsrc2=s=1280x720:r=60 -re -i "INPUT FILE.mp3" -vcodec libx264 -pix_fmt yuv420p -preset "ultrafast" -r 60 -g 120 -b:v 6168000 -filter_complex "[0]scale=1280:720;[1]aloop=start=0:size=202*44100:loop=-1" -acodec libmp3lame -ar 44100 -threads 3 -b:a 640000 -qscale:a 5 -bufsize 512k -f flv ${YOUTUBE_URL}/${KEY}
该命令可以正常运行,并且可以按预期运行。此时,在活动监视器中,我可以看到ffmpeg似乎达到了约101 MB的峰值。当我按q(结束编码的按钮)时,如果流已经进行了大约十分钟,则ffmpeg冻结,并且在“活动”监视器中,ffmpeg命令似乎已爬升至数GB的内存,而没有任何停止的迹象。在取消命令之前,我注意到的最大内存约为6 GB。 Ffmpeg似乎每秒将近1 GB的数据写入内存。实际上,这会减慢计算机的运行速度,并有可能完全耗尽我的内存。
发生这种情况时,没有错误消息(关于内存不足的警告除外),并且运行ffmpeg的终端似乎不响应任何kill命令,缓解这种情况的唯一方法是强制关闭终端窗口本身。
我想知道是不是由于某种原因造成了内存泄漏问题,或者我写错了什么或者没有包含使用ffmpeg进行实时流式传输所必需的内容。