diff --git a/libavformat/v4l2.c b/libavformat/v4l2.c
index 7404ef51246140be0684fde485b6562263856019..3a2ad1fbacfddb8b43aa3b30303e3e25a7038624 100644
--- a/libavformat/v4l2.c
+++ b/libavformat/v4l2.c
@@ -457,7 +457,9 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     if (capabilities & V4L2_CAP_STREAMING) {
         s->io_method = io_mmap;
         res = mmap_init(s);
-        res = mmap_start(s);
+        if (res == 0) {
+            res = mmap_start(s);
+        }
     } else {
         s->io_method = io_read;
         res = read_init(s);