【问题标题】:php exec() works on some calls, not other similar onesphp exec() 适用于某些调用,而不是其他类似的调用
【发布时间】:2013-05-09 15:02:38
【问题描述】:

我有一个剪切视频的 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 连接:“i0.mpg|i1.mpg” -qscale:v 1 /var/vidcache/output.mpg

/var/vidcache 有 777 个权限,www-data 位于带有 NOPASSWD 的 sudoers 文件中(是​​的,我知道 - 这仅用于在我锁定安全性之前进行调试)。

当我从命令行单独运行 php 脚本的最后一个命令时,它确实有效。 (以 www-data 或 root 身份运行。)但是当我尝试将其放入从网页调用的函数中时,它不起作用。

有什么想法吗?

【问题讨论】:

    标签: php linux bash scripting ffmpeg


    【解决方案1】:

    这应该会修复第三个 exec:

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

    Here 是一个很好的 wiki 页面,介绍如何在ffmpeg 中连接媒体文件。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-05-10
        • 1970-01-01
        • 2014-10-12
        • 2015-02-18
        • 1970-01-01
        • 2015-05-03
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多