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';
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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