在 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()
合并。
我正在尝试使用 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()
合并。