diff --git a/cmdutils.c b/cmdutils.c
index e6efc491d7bf38f17f1d870eb970360c0a9b8c3f..d02b36e66e51e2d3daaeebfab3483394541a15db 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -292,6 +292,7 @@ void set_context_opts(void *ctx, void *opts_ctx, int flags)
 void print_error(const char *filename, int err)
 {
     char errbuf[128];
+    const char *errbuf_ptr = errbuf;
 
     switch(err) {
 #if CONFIG_NETWORK
@@ -300,8 +301,9 @@ void print_error(const char *filename, int err)
         break;
 #endif
     default:
-        av_strerror(err, errbuf, sizeof(errbuf));
-        fprintf(stderr, "%s: %s\n", filename, errbuf);
+        if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
+            errbuf_ptr = strerror(AVUNERROR(err));
+        fprintf(stderr, "%s: %s\n", filename, errbuf_ptr);
     }
 }