PHP-使用exec()和shell_exec()执行ffmpeg不会执行任何操作
我正在尝试使用ffmpeg在PHP中转换音频文件,我通过post将音频文件转换为m4a,并希望将其转换为mp3。为此,我执行以下操作:PHP-使用exec()和shell_exec()执行ffmpeg不会执行任何操作,php,audio,ffmpeg,audio-converter,Php,Audio,Ffmpeg,Audio Converter,我正在尝试使用ffmpeg在PHP中转换音频文件,我通过post将音频文件转换为m4a,并希望将其转换为mp3。为此,我执行以下操作: $commandOutput = shell_exec('ffmpeg -i '.$filePath.' -ar 8000 -ab 16000 '.str_replace('m4a', 'mp3', $filePath)); 然而它什么也不做,commandOutput也不包含任何内容。该文件已正确保存,但未转换为mp3,当我在终端中运行相同的命令时,它会正确
$commandOutput = shell_exec('ffmpeg -i '.$filePath.' -ar 8000 -ab 16000 '.str_replace('m4a', 'mp3', $filePath));
然而它什么也不做,commandOutput也不包含任何内容。该文件已正确保存,但未转换为mp3,当我在终端中运行相同的命令时,它会正确转换该文件。知道可能会发生什么吗?尝试如下包装命令:
exec($cmd." 2>&1", $out, $ret);
if ($ret){
echo "There was a problem!\n";
print_r($out);
}else{
echo "Everything went better than expected!\n";
}
exec()
用于捕获所有输出并获取退出代码。添加2>&1
确保将STDERR
重定向到STDOUT
,以便您可以看到任何错误消息。尝试如下包装命令:
exec($cmd." 2>&1", $out, $ret);
if ($ret){
echo "There was a problem!\n";
print_r($out);
}else{
echo "Everything went better than expected!\n";
}
exec()
用于捕获所有输出并获取退出代码。添加2>&1
确保将STDERR
重定向到STDOUT
,以便查看任何错误消息。您可以使用ffmpeg-php扩展:您可以使用ffmpeg-php扩展:我不是100%确定,但这可能与在chroot监狱中运行的php(或Apache)有关。如果是这样的话,您可能就没有能力调用某些可执行文件或写入某些文件路径。有什么办法吗?这种转换对我的应用程序至关重要。请参阅我的答案以获得替代方案。我不是100%确定,但这可能与在chroot中运行的PHP(或Apache)有关。如果是这样的话,您可能就没有能力调用某些可执行文件或写入某些文件路径。有什么办法吗?此转换对我的应用程序至关重要。请参阅我的答案以获取替代方案。好的,这揭示了我得到此输出的问题:sh:ffmpeg:command not found 1)使用ffmpeg的完整路径:/usr/bin/ffmpeg
或其他内容2)首先从php设置path ENV变量:putenv(“path=/usr/local/bin”)
Ok,这揭示了我得到这个输出的问题:sh:ffmpeg:command not found 1)使用ffmpeg的完整路径:/usr/bin/ffmpeg
或其他什么2)首先从php设置path ENV变量:putenv(“path=/usr/local/bin”)代码>