php exec ffmpeg如何获取错误

时间:2010-07-17 17:51:25

标签: ffmpeg

我跑的时候

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

$ error return的空值 但是当我使用cron job运行此命令时 这个发送通知邮件给我,其中包含

等信息
  

FFmpeg版本0.5.2,版权所有(c)2000-2009 Fabrice Bellard,et al。    配置: - 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-protector --param = ssp-buffer-size = 4 -m64 -mtune = generic -fPIC --enable-avfilter - enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora - -enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --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    建于2010年6月13日23:44:18,gcc:4.1.2 20080704(Red Hat 4.1.2-48)

我需要能够在php中获取这些错误,以便我可以知道拇指是否已创建

感谢。

3 个答案:

答案 0 :(得分:4)

使用2>&1

重定向输出

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

答案 1 :(得分:1)

这个答案差不多6年后提出,但是较新的版本有一个选项-hide_banner

来自手册页

  

-hide_banner

     

禁止打印横幅。

     

所有FFmpeg工具通常都会显示版权声明,构建选项和库版本。此选项可用于禁止打印此信息。

您还可以使用选项-loglevel来定义要显示的消息类型(错误,警告,信息,调试)。

答案 2 :(得分:0)

建立在Mauro的答案之上。一种检测错误的简洁方法是添加以下选项-hide_banner-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);
在这种情况下,{p> exec()将始终为第二个参数$errors分配一个字符串数组,每个元素对应一个不同的错误,因此您只需使用循环打印或处理每个错误: / p>
foreach($errors as $next) {
    //handle error
    echo $next;
}