我有一个削减视频的PHP脚本。这里有三个exec()命令 - 两个执行正确而一个不执行:
使用:
sudo ffmpeg -i /home/vidserver/videos/$filename.mp4 -ss $ ctime -t 00:00:06 -acodec copy -vcodec copy -y /var/vidcache/test$x.mp4
使用:
sudo ffmpeg -i /var/vidcache/test$x.mp4 -qscale:v 1 /var/vidcache/i$x.mpg
不起作用:
sudo ffmpeg -i CONCAT: “i0.mpg | i1.mpg” -qscale:v 1 /var/vidcache/output.mpg
/ var / vidcache有777个privs,而www-data
位于带有NOPASSWD的sudoers文件中(是的,我知道 - 在锁定安全性之前,这仅用于调试目的)。
当我从命令行单独运行php脚本中的最后一个命令时,它就可以工作了。 (作为www-data或root运行。)但是当我尝试将它放在从网页调用的函数中时,它不起作用。
有什么想法吗?
答案 0 :(得分:0)
这应该修复第三个exec:
sudo ffmpeg -i "concat:i0.mpg|i1.mpg" -qscale:v 1 /var/vidcache/output.mpg
Here是一个很好的维基页面,介绍如何在ffmpeg
中连接媒体文件。
答案 1 :(得分:0)
实际上,答案是愚蠢的,“www-data知道在哪里查找文件?”
我在i0.mpg上做了很多假设。它显然需要一个完全限定的目录。
无论如何,更改代码看起来像这样:
sudo ffmpeg -i concat:“/ var / vidcache / i0.mpg | /var/vidcache/i1.mpg” -qscale:v 1 /var/vidcache/output.mpg