diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index bd8c456dac9765de68c3ee4440435722585526c0..284f2555d18b34785de7b3bfb1e998fc3cbf2f19 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -242,7 +242,11 @@ MediaDecoder::setupStream(AVMediaType mediaType)
 #endif
 
     JAMI_DBG() << "Decoding " << streamType << " using " << inputDecoder_->long_name << " (" << inputDecoder_->name << ")";
-    decoderCtx_->err_recognition = (AV_EF_CRCCHECK | AV_EF_BITSTREAM | AV_EF_BUFFER | AV_EF_EXPLODE | AV_EF_CAREFUL | AV_EF_COMPLIANT | AV_EF_AGGRESSIVE);
+
+    decoderCtx_->err_recognition = (AV_EF_CRCCHECK | AV_EF_BITSTREAM | AV_EF_BUFFER | AV_EF_CAREFUL | AV_EF_COMPLIANT | AV_EF_AGGRESSIVE);
+    if(inputDecoder_->id != AV_CODEC_ID_MPEG4)
+        decoderCtx_->err_recognition |= AV_EF_EXPLODE;
+
     ret = avcodec_open2(decoderCtx_, inputDecoder_, nullptr);
     if (ret < 0) {
         JAMI_ERR() << "Could not open codec: " << libav_utils::getError(ret);