How to tell if ffmpeg errored?


<strong>The Situation:</strong><br /> I'm using ffmpeg (via php) to convert video files. I configured my convert script to return the output (as the $error array) from the exec() command. My assumption was that if no error occurred, $error would be an empty array.

<strong>The Problem:</strong><br /> The problem is that, the script returns output even if there was no error in conversion. (I can tell that there was no error because a playable video file is output.)

<strong>The Question:</strong><br /> How does ffmpeg format its errors/output? I want to be able to parse this and determine if an error occurred and what error it was.


<strong>Code:</strong><br /> *An example of a non-error output:

FFmpeg version git-N-29201-g37c0a44, Copyright (c) 2000-2011 the FFmpeg developers| built on Sep 9 2011 23:29:21 with gcc 4.1.2 20080704 (Red Hat 4.1.2-50)| configuration: --prefix=/usr/local/hgffmpeg --enable-shared --enable-nonfree --enable-avfilter --enable-filter=movie --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/hgffmpeg/include/ --extra-ldflags=-L/usr/local/hgffmpeg/lib --enable-decoder=ac3 --enable-decoder=asv1 --enable-decoder=asv2 --enable-decoder=flac --enable-decoder=wmv1 --enable-decoder=wmv2 --enable-decoder=wmv3 --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=flv --enable-decoder=fraps --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=libgsm --enable-decoder=mjpeg --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --enable-decoder=mpegvideo --enable-decoder=mpeg4aac --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=pcm_alaw --enable-decoder=pcm_mulaw --enable-encoder=ac3 --enable-encoder=asv1 --enable-encoder=asv2 --enable-encoder=flac --enable-encoder=h263 --enable-encoder=flashsv --enable-encoder=flv --enable-encoder=libgsm --enable-encoder=mjpeg --enable-encoder=msmpeg4v3 --enable-encoder=pcm_alaw --enable-encoder=pcm_mulaw --enable-encoder=mpeg1video --enable-encoder=mpeg2video --enable-encoder=mpeg4 --enable-encoder=msmpeg4v1 --enable-encoder=msmpeg4v2 --enable-encoder=rv10 --enable-encoder=rv20 --enable-encoder=vorbis --enable-encoder=wmav1 --enable-encoder=wmav2 --enable-encoder=wmv1 --enable-encoder=wmv2 --disable-demuxer=v4l --disable-demuxer=v4l2 --enable-version3| libavutil 50. 40. 1 / 50. 40. 1| libavcodec 52.120. 0 / 52.120. 0| libavformat 52.108. 0 / 52.108. 0| libavdevice 52. 4. 0 / 52. 4. 0| libavfilter 1. 79. 1 / 1. 79. 1| libswscale 0. 13. 0 / 0. 13. 0|[mpeg1video @ 0x1f6d030] skipped MB in I frame at 5 0|[mpeg1video @ 0x1f6d030] Warning MVs not available|[mpeg1video @ 0x1f6d030] concealing 260 DC, 260 AC, 260 MV errors|[mpegvideo @ 0x1f6a660] Estimating duration from bitrate, this may be inaccurate|Input #0, mpegvideo, from '../uploads/test_vid/unencodedVideo.mpg':| Duration: 00:00:00.01, bitrate: 104860 kb/s| Stream #0.0: Video: mpeg1video, yuv420p, 320x200 [PAR 1:1 DAR 8:5], 104857 kb/s, 23.98 fps, 23.98 tbr, 1200k tbn, 23.98 tbc|WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s|File '../uploads/test_vid/video.flv' already exists. Overwrite ? [y/N] Not overwriting - exiting


Assuming you're using exec() to invoke ffmpeg, you'd want:

$lastline = exec('ffmpeg ...', $full_output, $return_var); if ($return_var !== whatever_ffmpeg_returns_on_success) { die("ffmpeg failed"); }


  • ffmpeg concat batch loop with text file
  • Inputing a List of Files for Concatenation with Node.js Module fluent-ffmpeg
  • How to tell if ffmpeg errored?
  • Win/ffmpeg - How to generate a video from images under ffmpeg?
  • Command for putting watermark on video
  • FFMPEG error while receiving rtsp stream
  • Transcode to opus by Fluent-ffmpeg or ffmpeg from command line
  • FFMpeg: merge images with audio for specific duration
  • Convert swf to mp4
  • FFMPEG - Moving text to appear every 'X' Seconds
  • converted mp4 file using ffmpegvis not playing JW player
  • ffmpeg concat error-unusual video
  • ffmpeg fails with: Unable to find a suitable output format for 'pipe:'
  • pygame on OSX Yosemite: unrecognized music format
  • Decrypting And Combining .ts Audio Files with .m3u8
  • libavdevice.so.57: failed to map segment from shared object: Permission denied\"
  • 2 source videos in FFMPEG… how to map audio?
  • FFMpeg - Combine multiple filter_complex and overlay functions
  • Why does libmp3lame add zeros to the start of the MP3?
  • ffmpeg mix audio at specific time
  • gdcl multiplexer create file with raw video not h264
  • why is streaming to an flv server with ffmpeg only showing black/blank video for clients?
  • Getting Exception while merging two file with ffmpeg
  • Transcode Webm to Audio file (fluent-ffmpeg)
  • Incrementing array values - Arduino
  • ignoring ensurepip failure pip requires ssl/tls error in Ubuntu 18.04
  • how do I echo only white space and no newline
  • Bash: sort find results using part of a filename [duplicate]
  • Can I use Preprocessor Directives in .ld file
  • Gulp globbing excluding files then unexcluding not working as described
  • dbus - how to set include paths
  • Compile ffmpeg as stand alone binary
  • JsonConverter: Get parent object in ReadJson, without $refs
  • Reduction and collapse clauses in OMP have some confusing points
  • Projection media query: browser support and workarounds?
  • R: gsub and capture