ffmpeg 后台运行

我想在晚上批量处理一批视频,因为晚上服务器基本处于空闲状态,这样最大化利用服务器。


执行脚本:

python3 rm.py &


会直接停止

[1]+  Stopped                 python3 rm.py


如果不在后台执行是没有任何问题的,但这样我没法退出,得等着任务直到完成。显然这不可能,视频的量足够运行一晚上了。

python3 rm.py



解决:

py脚本没法后台执行,是因为ffmpeg没法在后台执行。当执行ffmpeg命令时,它会打开三个通道:stdin、stdout、stderr。通道有内存缓冲区(4KB),当缓冲区满了,写操作暂停,直到数据被读取。由于一直没有读取stdout和stderr,所有ffmpeg会挂起。

后台执行并不需要输出信息,所以:

ffmpeg .... > /dev/null 2>&1 < /dev/null


将py脚本内命令改成这个形式就没问题了


再执行脚本

python3 rm.py &


当然,在子进程中运行,并关闭stdin、stdout、stderr也是可行的。


 

展开阅读全文