0

我有一个剪切视频的 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 身份运行。)但是当我尝试将其放入从网页调用的函数中时,它不起作用。

有任何想法吗?

4

2 回答 2

0

这应该修复第三个 exec:

sudo ffmpeg -i "concat:i0.mpg|i1.mpg" -qscale:v 1 /var/vidcache/output.mpg

是一个很好的 wiki 页面,介绍如何在ffmpeg.

于 2013-05-15T06:38:49.820 回答
0

实际上,答案就像“www-data 知道在哪里查找文件?”一样愚蠢。

我对 i0.mpg 做了很多假设。显然,它需要一个完全限定的目录。

无论如何,将代码更改为如下所示:

sudo ffmpeg -i concat:"/var/vidcache/i0.mpg|/var/vidcache/i1.mpg" -qscale:v 1 /var/vidcache/output.mpg

于 2013-05-15T06:41:34.850 回答