2010-06-30 12 views
3

J'utilise une commande ffmpeg pour couper une vidéo avec la fonction exec en php. Mais il ne crée pas de fichier vidéo et ne montre aucune erreur. Je exec comme ci-dessousComment puis-je connaître l'erreur de commande dans une fonction exec?

exec("ffmpeg -i input.flv -ss 00:00:30.0 -t 00:00:10.0 -acodec copy -vcodec copy -async 1 output.flv"); 

Puis-je obtenir de l'aide pour savoir ce qui est l'erreur se passe ici?

exec("ffmpeg -i input.flv -ss 00:00:30.0 -t 00:00:10.0 -acodec copy -vcodec copy -async 1 output.flv",$output); 

Je l'ai aussi essayé. Mais je n'ai pas reçu de message d'erreur dans la variable $output

+0

Très similaire, le vote en double: http://stackoverflow.com/questions/2143006/php-execsvn-commit-is-not -returning-any-errors-nor-working –

Répondre

5

En règle générale, vous devez d'abord vérifier la valeur de retour: les valeurs non nulles indiquent qu'il y a eu une erreur (étant donné que l'auteur du programme vous êtes courir adhère à la norme). Cette valeur est capturée dans le troisième argument de exec(). En deuxième lieu, de nombreux programmes n'envoient pas de messages d'erreur à la sortie standard. Au lieu de cela, ils utilisent l'erreur standard. Dans ce cas, il semble sûr que redirect ce dernier à l'ancienne:

exec("ffmpeg -i input.flv -ss 00:00:30.0 -t 00:00:10.0 -acodec copy -vcodec copy -async 1 output.flv 2>&1", $output, $return_value);