2011-01-15 8 views
2

私はaviファイルをflvにエンコードするためにffmpegで特定のコードを実行しています。私のffmpegコードは正しく、うまくいきますが、何らかのエラーが発生すると(破損したaviファイルであると仮定すると、ffmpegはそれをエンコードしません)、エラーの内容を知りたいと思います。ここではサンプルコードは次のとおりです。ffmpegエラー出力を表示するには

$v_cmd=" some code to transcode"; 
exec($v_cmd,$v_output,$v_status); 
if($v_status == 0) 
{ 
echo "Success!"; 
} 
else 
{ 
echo "ERROR: ".$v_output; 
} 

しかし、この$のv_outputはちょうど私が

echo "ERROR: ".implode($v_output); 

を試みたが、それはどのように私は、エラーメッセージにそれを得ることができます...空白だった... ERROR: Arrayとして表示されますffmpegは何がうまくいかなかったのか理解できるようにしました。これはPHPのcronスクリプトであり、手動でコマンドラインで実行されません。

答えて

3

POSIX準拠のシステムおよびアプリケーションでは、エラーはSTDOUTではなくSTDERRに送信されます。

exec("foo", $output); 
var_dump($output); 

表示:

array(0) { 
} 

あなたは、あなたがこの仕事をしたい場合はSTDOUTにSTDERRをリダイレクトする必要がexecはSTDOUTと$output引数を移入します。例ごとに、* nixの上:

exec("foo 2>&1", $output); 
var_dump($output); 

意志表示:

array(1) { 
    [0]=> 
    string(18) "sh: foo: not found" 
} 
+0

おかげで.. '2>&1 'を助けました。 var_dumpの出力に基づいてエラーを生成するように私のコードを修正しました。 –

関連する問題