Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用exec()和shell_exec()执行ffmpeg不会执行任何操作_Php_Audio_Ffmpeg_Audio Converter - Fatal编程技术网

PHP-使用exec()和shell_exec()执行ffmpeg不会执行任何操作

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,当我在终端中运行相同的命令时,它会正确

我正在尝试使用ffmpeg在PHP中转换音频文件,我通过post将音频文件转换为m4a,并希望将其转换为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”)