By default ffmpeg sends a whole lot of messages to stderr: when built, how it was 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.
411 Answers
ffmpeg -hide_banner -loglevel errorThis is alluded to in a comment below the current answer.
The option -hide_banner was introduced in late 2013 -- )
-loglevel warning leads to more verbose output as it shows all warning messages
-loglevel panic is the least verbose output (omitting even error messages) but is undocumented.
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
10Here 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 }, }; 1 I have used with success the following (newest FFMPEG Version at time of writing):
-nostats -loglevel 0Then it is absolutely quiet in my usage scenario.
4ffmpeg -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_NOCOLORorNO_COLOR, or can be forced setting the environment variableAV_LOG_FORCE_COLOR. The use of the environment variableNO_COLORis deprecated and will be dropped in a following FFmpeg version.
The following worked for me on macOS:
ffmpeg -v quietor to only see the progress:
ffmpeg -v quiet -stats 3 ffmpeg -loglevel error -hide_banner -nostats
Just the errors, nothing else.
I personally like this best;
ffmpeg -loglevel warning -hide_banner -stats
It gives only warnings and errors, but also shows the progress of work.
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: 1 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 1 These measures don't hide the Codec banner (even with "-loglevel 0"). For hiding the H.265-banner it would look like this:
-vcodec libx265 -x265-params log-level=error All the answers are a bit old at my time of writing, so for new version in 2021, -loglevel warning dumps a lot of hex codes, and you cannot see the warnings.-loglevel error also dumps lots of hex, you cannot see the 'errors'.-loglevel fatal runs fine but slowly. Perhaps it expects some output.-loglevel panic runs fast, but you miss out on fatal errors.
The best you could use, is:
Windows (cmd/dos) & Python3:
from os import system
for file in list: system('ffmpeg -hide_banner -loglevel fatal -nostats (your options)>file.txt')Unix & Python3:
from os import system
for file in list: system('ffmpeg -hide_banner -loglevel fatal -nostats (your options)&>file.txt')Now, search which files are not blank.
from os import stat
for file in list: if stat('file').st_size == 0: continue else: print(file)Check those files which have some output.
2