我正在使用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'成功代码。
有人有任何建议吗?
谢谢。
答案 0 :(得分:8)
这很不寻常。您可能安装了多个ffmpeg二进制文件,而PHP / Apache用户调用的二进制文件与您从命令行调用的用户名不同。
尝试在exec()中指定ffmpeg二进制文件的完整路径(/ usr / bin / ffmpeg或其他)。
答案 1 :(得分:1)
听起来有些命令行选项会丢失/改变。我会尝试将其分为两部分:
答案 2 :(得分:0)
我可能会尝试:
1)将'2>& 1'更改为'2>& 1&'
此外,转码可能需要一段时间。你确定你等待足够长的时间来完成转码吗?