FFMpeg在命令行中工作但在PHP中没有使用exec();

时间:2011-02-25 18:19:49

标签: php command-line ffmpeg exec

我正在使用FFMpeg来隐藏视频,并且它在命令行中运行良好。我使用以下命令:

ffmpeg -i input.mpg  -vcodec libx264 -b 819200 -s 100x100 -g 15 -bf 3 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method hex -subq 5 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 1 -flags2 +fastpskip -dts_delta_threshold 1 -acodec libfaac -ab 48000 output.m4v

但是,当我使用PHP exec()运行命令时,输出视频编码不正确并且被扭曲和裁剪。我在PHP中使用以下内容:

$output = exec($cmd . ' 2>&1', $output, $return);

$ output返回'0'成功代码。

有人有任何建议吗?

谢谢。

3 个答案:

答案 0 :(得分:8)

这很不寻常。您可能安装了多个ffmpeg二进制文件,而PHP / Apache用户调用的二进制文件与您从命令行调用的用户名不同。

尝试在exec()中指定ffmpeg二进制文件的完整路径(/ usr / bin / ffmpeg或其他)。

答案 1 :(得分:1)

听起来有些命令行选项会丢失/改变。我会尝试将其分为两部分:

  1. 动态编写一个shell脚本(来自PHP),它具有所有正确的命令参数(使其可执行)
  2. 执行shell脚本(来自PHP)

答案 2 :(得分:0)

我可能会尝试:

1)将'2>& 1'更改为'2>& 1&'

此外,转码可能需要一段时间。你确定你等待足够长的时间来完成转码吗?