2012-04-27 90 views
0

我試圖用ffmpeg在PHP中轉換音頻文件,我通過post獲取音頻文件作爲m4a,並且我想將它變成mp3。我做了以下操作:PHP執行ffmpeg使用exec()和shell_exec()什麼也不做

$commandOutput = shell_exec('ffmpeg -i '.$filePath.' -ar 8000 -ab 16000 '.str_replace('m4a', 'mp3', $filePath)); 

但它什麼也沒做,commandOutput也沒有包含任何內容。該文件保存正確,但沒有轉換爲MP3,當我在終端運行相同的命令它正確地轉換文件。任何想法可能發生什麼?

+0

我不是100%肯定,但是這可能是在chroot jail運行的是與PHP(或Apache)。如果是這樣,您可能無法調用某些可執行文件或寫入某些文件路徑。 – Polynomial 2012-04-27 20:47:22

+0

任何方式呢?此轉換對我的應用至關重要。 – 8vius 2012-04-27 20:49:06

+0

看到我的答案替代。 – Polynomial 2012-04-27 20:51:29

回答

2

嘗試包裝命令是這樣的:

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,以便您可以看到任何錯誤消息。

+0

好的,這揭示了我得到這個輸出的問題:sh:ffmpeg:命令未找到 – 8vius 2012-04-27 20:52:41

+0

我嘗試添加ffmpeg到我的PATH,但它沒有工作 – 8vius 2012-04-27 21:00:00

+0

1)使用ffmpeg的完整路徑:'/ usr/bin/ffmpeg'或其他 – Cal 2012-04-27 21:11:00