我有一个upload.php
脚本,用于上传和转换使用FFMPEG的视频。 (LAMP Ubuntu 16.04)
但是,一旦FFMPEG开始转换视频,所有网站都将变得无响应,所以我想FFMPEG会占用我所有的CPU。
这是我用来转换源视频的3行:
* Check format, size, ect..
shell_exec('ffmpeg -i '.$temp_path.' -r 1/1 '.$path_jpeg.'');
shell_exec('ffmpeg -i '.$temp_path.' -f webm -c:v libvpx -b:v 1M -acodec libvorbis '.$path_webm.' -hide_banner');
shell_exec('ffmpeg -i '.$temp_path.' -c:v libx264 -preset veryfast -c:a copy '.$path_mp4.' -hide_banner');
* Add video data to DB
在转换视频时,是否有限制FFMPEG的CPU资源?
谢谢
编辑:
我尝试使用-threads 1
失败
shell_exec('ffmpeg -i '.$temp_path.' -f webm -c:v libvpx -threads 1 -b:v 1M -acodec libvorbis '.$path_webm.' -hide_banner');
shell_exec('ffmpeg -i '.$temp_path.' -c:v libx264 -threads 1 -preset veryfast -c:a copy '.$path_mp4.' -hide_banner');
我也尝试使用nice -n 15
也不成功
shell_exec('nice -n 15 ffmpeg -i '.$temp_path.' -f webm -c:v libvpx -b:v 1M -acodec libvorbis '.$path_webm.' -hide_banner');
shell_exec('nice -n 15 ffmpeg -i '.$temp_path.' -c:v libx264 -preset veryfast -c:a copy '.$path_mp4.' -hide_banner');
FFMPEG在转换时仍然占用我100%的CPU
答案 0 :(得分:0)
您始终可以使用nice
执行FFmpeg。像这样...
shell_exec('nice -n 15 ffmpeg...
请注意,您的系统可能实际上缺少某些其他资源,例如磁盘I / O。使用top
进行查找。
答案 1 :(得分:0)
发生这种情况是因为您没有将FFMPEG进程发送到后台。您可以使用nohup来做到这一点。
shell_exec("nohup ffmpeg (...) > foo.out 2> foo.err < /dev/null &");