任何正文解释为什么exec(),shell_exec(),system()在执行ffmpeg命令时不能返回任何返回值。
即: exec(“我是谁”,$ output = array()); //这里执行成功,$ output设置数组值 $ output = shell_exec(“我是谁”); //这里执行成功,$ output设置数组值 system(“我是谁”,$ output = array()); //这里执行成功,$ output设置数组值
但是
exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"', $output = array());
//here execution is success but $output is not set an array value
$output= shell_exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"');
//here execution is success but $output is not set an array value
system('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"', $output = array());
//here execution is success but $output is not set an array value
我不知道为什么..!?
请任何人帮助我。答案 0 :(得分:1)
这是因为ffmpeg不向stdout输出任何内容。它的输出打印到stderr。
如果你在非Windows系统上,你可以exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg 2>&1"', $output = array());
或者你可以使用proc_open()