在exec()php函数上使用ffmpeg进行音频转换

时间:2013-12-10 10:21:49

标签: ffmpeg exec

任何正文解释为什么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

我不知道为什么..!?

请任何人帮助我。

1 个答案:

答案 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()