在 PHP 中找不到文件并使用 ffmpeg exec 进行压缩

Cannot find file and compress using ffmpeg exec in PHP

我正在尝试使用 ffmpeg 压缩文件,但尽管文件路径正确,但找不到文件:

我在这里使用这段代码:

echo $ypath;
exec("ffmpeg -i ".$ypath." -vf 'scale=iw/3:ih/3' ".$prevPath ." 2>&1", $error);
foreach($error as $next) {
    echo "<br>".$next;
}

得到这个结果:

../data/mydirectory/buffer/1610997353779_D012&ForestDescend.mp4
sh: 1: ForestDescend.mp4: not found

什么问题,为什么找不到有问题的文件。我 100% 确定路径是正确的,因为我在代码上方进一步使用它来转换同一目录中的图像。

我该如何解决这个问题?

文件名中的和号 (&) 可能是导致问题的原因。一个简单的解决方法是将 $ypath 值用引号引起来:

exec('ffmpeg -i "'.$ypath.'" -vf "scale=iw/3:ih/3" "'.$prevPath .'" 2>&1', $error);

如果您的文件名可能包含引号或其他特殊字符,请将此与 escapeshellarg() 合并。