php - FFMPEG 在转换视频时使我的网站关闭
问题描述
我有一个upload.php
脚本来上传和转换我使用 FFMPEG 的视频。(灯 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
解决方案
发生这种情况是因为您没有将 FFMPEG 进程发送到后台。你可以通过使用 nohup 来做到这一点。
shell_exec("nohup ffmpeg (...) > foo.out 2> foo.err < /dev/null &");
推荐阅读
- sql - OPENJSON 给出空值
- arrays - 以角度 5 将 3 个点参数分配给数组
- python - 用 csv 文件破折号 DatePickerRange
- c++ - 调试捕获这个的 lambda
- tsql - 需要帮助从具有动态属性的表创建透视视图
- python - 如何将 sklearn 逻辑回归转换为 PMML 记分卡模型
- java - java中的类、接口或枚举预期错误
- ios - 以前删除的约束在 Xcode 9.4 中显示为冲突
- angular - Angular flexLayout 组件重叠
- selenium - 我已配置 Selenium Cucumber Maven 项目并在执行 runner.TestRunnerTest_Test.java 文件时出现初始化错误