diff --git a/ffmpeg.c b/ffmpeg.c
index 3e20d44aa0221c1f25c3a0ba0459d26382ff9eee..64132794a93244446b5bf9bdfcfa81ff9298d456 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -704,9 +704,17 @@ static const enum PixelFormat *choose_pixel_fmts(OutputStream *ost)
     if (ost->st->codec->pix_fmt != PIX_FMT_NONE) {
         ost->pix_fmts[0] = choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt);
         return ost->pix_fmts;
-    } else if (ost->enc->pix_fmts)
+    } else if (ost->enc->pix_fmts) {
+        if (ost->st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
+            if (ost->st->codec->codec_id == CODEC_ID_MJPEG) {
+                return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE };
+            } else if (ost->st->codec->codec_id == CODEC_ID_LJPEG) {
+                return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P,
+                                                    PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE };
+            }
+        }
         return ost->enc->pix_fmts;
-    else
+    } else
         return NULL;
 }