diff --git a/cmdutils.c b/cmdutils.c
index fc4b42440eea1ba2e679627a2d55fcb26366bf7d..dc9bd2cc00ddf7375415613a937665fd241320fd 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -66,6 +66,7 @@ AVDictionary *swr_opts;
 AVDictionary *format_opts, *codec_opts, *resample_opts;
 
 static FILE *report_file;
+int hide_banner = 0;
 
 void init_opts(void)
 {
@@ -491,6 +492,9 @@ void parse_loglevel(int argc, char **argv, const OptionDef *options)
             fflush(report_file);
         }
     }
+    idx = locate_option(argc, argv, options, "hide_banner");
+    if (idx)
+        hide_banner = 1;
 }
 
 static const AVOption *opt_find(void *obj, const char *name, const char *unit,
@@ -1083,7 +1087,7 @@ static void print_buildconf(int flags, int level)
 void show_banner(int argc, char **argv, const OptionDef *options)
 {
     int idx = locate_option(argc, argv, options, "version");
-    if (idx)
+    if (hide_banner || idx)
         return;
 
     print_program_info (INDENT|SHOW_COPYRIGHT, AV_LOG_INFO);
diff --git a/cmdutils.h b/cmdutils.h
index f4f23ef8350a526271e291afcac52737723ae268..d1e1ecbe7e8f796ef3eb7d804c9b8f57acbbca83 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -48,6 +48,7 @@ extern AVFormatContext *avformat_opts;
 extern struct SwsContext *sws_opts;
 extern AVDictionary *swr_opts;
 extern AVDictionary *format_opts, *codec_opts, *resample_opts;
+extern int hide_banner;
 
 /**
  * Register a program-specific cleanup routine.
diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h
index 685163e7d1832cf70e6cb6c73b6711be5f00d38e..190dba674facae645f1bdef6d265acce46eb4a29 100644
--- a/cmdutils_common_opts.h
+++ b/cmdutils_common_opts.h
@@ -21,6 +21,7 @@
     { "report"     , 0,        {(void*)opt_report}, "generate a report" },
     { "max_alloc"  , HAS_ARG,  {.func_arg = opt_max_alloc},     "set maximum size of a single allocated block", "bytes" },
     { "cpuflags"   , HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
+    { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner},     "do not show program banner", "hide_banner" },
 #if CONFIG_OPENCL
     { "opencl_bench", OPT_EXIT, {.func_arg = opt_opencl_bench}, "run benchmark on all OpenCL devices and show results" },
     { "opencl_options", HAS_ARG, {.func_arg = opt_opencl},      "set OpenCL environment options" },
diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi
index ff6478a1de0559d1ec8658d0afa8c08aa2edc292..dcfe9b5a35e03d83735d8faeef8a103d67f5225d 100644
--- a/doc/fftools-common-opts.texi
+++ b/doc/fftools-common-opts.texi
@@ -194,6 +194,13 @@ to a plain @code{%}
 Errors in parsing the environment variable are not fatal, and will not
 appear in the report.
 
+@item -hide_banner
+Suppress printing banner.
+
+All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+
 @item -cpuflags flags (@emph{global})
 Allows setting and clearing cpu flags. This option is intended
 for testing. Do not use it unless you know what you're doing.