Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

By default ffmpeg sends a whole lotta messages to stderr: when built, how built, codecs, etc, etc, etc.

How can I make it quieter?

I've tried -v 0 (and -v 10 since the documentation just coyly says Set the logging verbosity level. with no indication of what the range of inputs is) -- still not quiet.

I've tried -loglevel quiet -- still not quiet.

I should mention, I'm looking for "quieter," not "no output ever". If there's an error I want to see it, but I don't need to hear about ffmpeg's configuration every. single. time.

share|improve this question
3  
ffmpeg is definitely one of those 'for developers, by developers' kinds of programs. – digitxp Aug 22 '11 at 22:10
up vote 39 down vote accepted

I haven't tested it out, but I see an option in the man page to do:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Should make it so only serious errors are logged, in theory

share|improve this answer
3  
Even with -loglevel panic, for me it's only reducing output a little - it still prints version information, stream mapping, configuration options, (and even progress information!).... any ideas? I might have to mention that it's a self-compiled version from latest svn trunk. – codeling Apr 30 '12 at 11:42
2  
pipe it to the bit bucket: >/dev/null 2>&1 – rogerdpack Aug 2 '12 at 15:05
1  
@rogerdpack that would work for most programs, but ffmpeg puts all of its text output to stderr, rather than stdout (it does this so that you can pipe the encoder output to other programs), so redirecting stdout to /dev/null wouldn't do anything useful. – evilsoup Dec 21 '12 at 14:29
6  
Using -hide_banner in addition to a reduced verbosity level would be a good compromise. – Makaveli84 Aug 12 '14 at 16:14
2  
In addition to everything that has been said, -nostats will disable progress output. – Ely Oct 13 '14 at 12:23

Here you have loglevels from the source code (FFmpeg version 0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };
share|improve this answer
1  
Although the URLs tend to change over time, it's good to include them also as source of your answer. For example, at present this is documented at ffmpeg.org/ffmpeg.html#toc-Generic-options and reader will know where to look in docs even if this URL changes. – Fr0zenFyr Dec 15 '15 at 8:01

ffmpeg -hide_banner -loglevel panic

This is alluded to in a comment below the current answer.

The option -hide_banner was introduced in late 2013 -- https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )

share|improve this answer

I have used with success the following (newest FFMPEG Version at time of writing):

-nostats -loglevel 0

Then it is absolutely quiet in my usage scenario.

share|improve this answer

You can pipe stderr through grep. For example, if you wanted to remove the configuration info, you could do it like this:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:
share|improve this answer
    
I believe that may need to be ffmpeg … 2>&1 >/dev/null | grep …. – Scott Apr 17 '13 at 15:37
ffmpeg -loglevel error [other commands]

This hides the banner and only displays errors. Use -loglevel warning if you would like to see warnings.

Tested in Ffmpeg 3.0.2.

From the documentation:

-loglevel [repeat+]loglevel | -v [repeat+]loglevel

Set the logging level used by the library. Adding "repeat+" indicates that repeated log output should not be compressed to the first line and the "Last message repeated n times" line will be omitted. "repeat" can also be used alone. If "repeat" is used alone, and with no prior loglevel set, the default loglevel will be used. If multiple loglevel parameters are given, using ’repeat’ will not change the loglevel. loglevel is a string or a number containing one of the following values:

‘quiet, -8’

Show nothing at all; be silent.

‘panic, 0’

Only show fatal errors which could lead the process to crash, such as and assert failure. This is not currently used for anything.

‘fatal, 8’

Only show fatal errors. These are errors after which the process absolutely cannot continue after.

‘error, 16’

Show all errors, including ones which can be recovered from.

‘warning, 24’

Show all warnings and errors. Any message related to possibly incorrect or unexpected events will be shown.

‘info, 32’

Show informative messages during processing. This is in addition to warnings and errors. This is the default value.

‘verbose, 40’

Same as info, except more verbose.

‘debug, 48’

Show everything, including debugging information.

‘trace, 56’

By default the program logs to stderr, if coloring is supported by the terminal, colors are used to mark errors and warnings. Log coloring can be disabled setting the environment variable AV_LOG_FORCE_NOCOLOR or NO_COLOR, or can be forced setting the environment variable AV_LOG_FORCE_COLOR. The use of the environment variable NO_COLOR is deprecated and will be dropped in a following FFmpeg version.

share|improve this answer

This is a little cheap to go about it, but appending >/dev/null 2>&1 is a sure way to keep ffmpeg silent in the shell.

Example

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

More info about bash output

share|improve this answer
11  
Except that ffmpeg is one step ahead of you, and outputs both configuration information and actual errors to stderr. – blahdiblah Aug 23 '11 at 19:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .