php利用ffmpeg转码mp4 时间过长

找了一个ffmpeg支持h264编码的,php调用exec利用ffmpeg转码时间过长,CPU使用率超过80%,问如何解决。
转码命令 另外不知道这里面参数的含义是什么?

$command='..\ffmpeg\bin\ffmpeg.exe -i ' .  $file . '.' . $ext . ' -vcodec libx264 -vprofile main -preset slow -b:v 400k -maxrate 400k -bufsize 800k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -ab 128k ' .$file . '.mp4';
阅读 7.5k
3 个回答

用七牛来转,或者用队列异步来做

具体命令 man ffmpeg

新手上路,请多包涵

php调脚本呗,转码cpu占用本来就高,这个无解。
参数最重要的是 -vcodec libx264 使用x264进行视频编码。
-acodec libvo_aacenc 使用aacenc进行音频编码。

在 docker 內安裝 ffmpeg, 然後限制 docker 可運行的 CPU 數量.
例子:
docker run -d --cpuset-cpus=1-3 -p 22:22 -p 8082:8082 -v /root/docker/volume/:/dj -it django supervisord

註:
--cpuset-cpus=1-3 
主機有4個CPU. 我只分配 CPU1, CPU2, CPU3 給 docker 使用. CPU0 讓留下來備用.

你的情況,只要分配 2 個CPU就夠用了.

另外, 也可考慮使用 -threads 限CPU數量.
ffmpeg -threads 2 -crf 20 -y -i source.avi -strict experimental sample.mp4

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题