diff --git a/src/media/libav_utils.cpp b/src/media/libav_utils.cpp
index 8cf6da14c46cde1be24d92fccdc2e3c05f9f067a..cd54e8fdbe70affcf6cf61cb2fffefc996b478df 100644
--- a/src/media/libav_utils.cpp
+++ b/src/media/libav_utils.cpp
@@ -61,12 +61,13 @@ choose_sample_fmt(const AVCodec* codec,
                   const AVSampleFormat* preferred_formats,
                   int preferred_formats_count)
 {
-    for (int i = 0; i < preferred_formats_count; ++i) {
-        for (auto it = codec->sample_fmts; *it != -1; ++it) {
-            if (*it == preferred_formats[i])
-                return preferred_formats[i];
+    if (codec->sample_fmts)
+        for (int i = 0; i < preferred_formats_count; ++i) {
+            for (auto it = codec->sample_fmts; *it != -1; ++it) {
+                if (*it == preferred_formats[i])
+                    return preferred_formats[i];
+            }
         }
-    }
     return AV_SAMPLE_FMT_NONE;
 }