【问题标题】:Can't execute exec command (php / windows / ffmpeg)无法执行 exec 命令(php/windows/ffmpeg)
【发布时间】:2015-07-13 22:25:28
【问题描述】:

我正在尝试运行这个在 cli 中有效的命令

ffmpeg -i tmp1.flv -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 output1.flv

我只能通过 php 运行 ffmpeg -version

$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -version");

tmp1.flv 文件的位置:

C:\wamp\www\tmp1.flv

当我运行时$res = exec("chdir") => C:\wamp\www\

如何通过 php 运行它

ffmpeg -i tmp1.flv -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 output1.flv

我试过了:

$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i tmp1.flv -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 output1.flv", $output, $return_var);
$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i C:\\wamp\\www\\tmp1.flv -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 C:\\wamp\\www\\output1.flv", $output, $return_var);
$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i C:\wamp\www\tmp1.flv -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 C:\wamp\www\output1.flv", $output, $return_var);
$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i \"C:\wamp\www\tmp1.flv\" -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 \"C:\wamp\www\output1.flv\"", $output, $return_var);
$res = exec("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i 'C:\wamp\www\tmp1.flv' -c:a copy -vf drawbox=:x=0:y=0:color=invert:t=2 'C:\wamp\www\output1.flv'", $output, $return_var);
...

但是echo $resecho $output 什么也没给出,而echo $return_var 给出1

+++更新+++

感谢this post 取得了一些进展,它确实为我提供了有关文件的输出和信息,但仍然无法运行整个命令。

$cmd = 'C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe ffmpeg -i tmp1.flv 2>&1';

exec($cmd, $output, $value);

var_dump($output);
var_dump($value);
var_dump($cmd)

+++更新2+++

echo exec('whoami') => nt authority\system

【问题讨论】:

  • "要获取执行命令的输出,一定要设置并使用输出参数。" ... php.net/manual/en/function.exec.php
  • 你检查过执行脚本的用户是否对输出目录有写权限吗?
  • @dbinns66 谢谢,我添加并更新了我的问题。
  • @steven 谢谢你,我再次检查它说我不是权威\系统

标签: php windows ffmpeg exec command-line-interface


【解决方案1】:

我在ffmpeg.exe 之后有ffmpeg - 这就是它不起作用的原因。

$cmd = 'C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe -i tmp1.flv -c:a copy  -vf drawbox=:x=0:y=0:color=invert:t=2 output2.flv 2>&1';
exec($cmd, $output)

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2017-05-06
    • 2013-07-28
    • 2015-03-13
    相关资源
    最近更新 更多