2010-07-17 6 views
1

quand je lancephp exec ffmpeg comment obtenir des erreurs

exec("ffmpeg -i $flv -y -f mjpeg -ss 00:00:05 -s 120x90 -vframes 1 -an thumb.jpg",$error); 

valeur de retour d'erreur $ vide mais quand je lance cette commande en utilisant cron job celui-ci envoie un email de notification à moi qui contiennent des informations comme

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --prefix =/usr --libdir =/usr/lib64 --shlibdir =/usr/lib64 --mandir =/usr/share/man --incdir =/usr/include --disable-avisynth - extra-cflags = -O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protecteur --param = ssp-buffer-size = 4 -m64 -mtune = générique -fPIC --enable-avfilter - -enable-avfilter-lavf --able-libdirac --able-libfaac --able-libfaad --able-libfaadbin --able-libmp3lame --able-libopencore-amrnb --able-libopencore-amrwb --enable-libthe --enable-libx264 --enable-gpl --enable-non-libre --enable-postproc --enable-pthreads --enable-partagé --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab libavutil 49.15. 0/49.15. 0 libavcodec 52.20. 1/52.20. 1 libavformat 52.31. 0/52,31. 0 libavdevice 52. 1. 0/52. 1. 0 libavfilter 0. 4. 0/0. 4. 0 libswscale 0. 7. 1/0. 7. 1 libpostproc 51. 2. 0/51. 2. 0 construit le 13 juin 2010 23:44:18, gcc 4.1.2 20.080.704 (Red Hat 4.1.2-48)

Je dois être en mesure d'obtenir ces erreurs en php si je peux savoir si le pouce a été créé ou non

Merci.

+0

comment faire la gestion des erreurs dans ffmpeg? – Hitesh

Répondre

4

Rediriger la sortie avec 2>&1

exec("ffmpeg -i $flv -y -f mjpeg -ss 00:00:05 -s 120x90 -vframes 1 -an thumb.jpg 2>&1",$error);

+0

Je sais que c'est une vieille question mais je trouve toujours utile d'obtenir également le rapport FFMPEG lors de l'exécution de certaines commandes. Pour cela j'utilise quelque chose comme ceci: '$ cmd = 'ffmpeg -i'. $ task. $ codec. $ path. '-report -hide_banner -loglevel error 2> &1'; $ r = exec ($ cmd, $ errors); 'où -report génère un rapport détaillé dans le répertoire racine. Pour les projets plus volumineux, je lance toujours un système de journalisation comme: '$ log = file_put_contents ($ logFile, $ cmd. PHP_EOL, FILE_APPEND | LOCK_EX);' juste pour avoir tout en un seul endroit et commenté gentiment. – thvs86

1

Cette réponse vient presque six années après la question, mais les versions plus récentes ont une option -hide_banner.

De l'homme la page

-hide_banner

bannière impression Suppress.

Tous les outils FFmpeg affichent normalement une notice de copyright, des options de compilation et des versions de bibliothèque. Cette option peut être utilisée pour supprimer l'impression de cette information.

vous pouvez également utiliser l'option -loglevel pour définir ce type de message (erreurs, avertissement, info, debug) voudriez-vous montrer.

0

S'appuyer sur la réponse de Mauro. Un moyen propre de détecter les erreurs sera d'ajouter les options suivantes -hide_banner et -loglevel error.

exec("ffmpeg -i $flv -y -f mjpeg -ss 00:00:05 -s 120x90 -vframes 1 -an thumb.jpg -hide_banner -loglevel error 2>&1", $errors); 

exec() toujours attribuer un tableau de chaînes au second paramètre dans ce cas $errors, chaque élément correspondant à une autre erreur, vous pouvez simplement imprimer ou gérer chaque erreur en utilisant une boucle:

foreach($errors as $next) { 
    //handle error 
    echo $next; 
}