diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index fd09f52e3feaf4b11c15c32798004504edbea872..bbd39a6aa4f8169ba38881e90944bbffcdda7a82 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -64,7 +64,7 @@ MediaDecoder::~MediaDecoder()
         av_buffer_unref(&decoderCtx_->hw_device_ctx);
 #endif
     if (decoderCtx_)
-        avcodec_close(decoderCtx_);
+        avcodec_free_context(&decoderCtx_);
     if (inputCtx_)
         avformat_close_input(&inputCtx_);
 
diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index acf052b6c9641618288f7329557d074c47e85d85..69155b9e6b9fd5c49880d770ac9b439392292c7b 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -54,8 +54,7 @@ MediaEncoder::~MediaEncoder()
             av_write_trailer(outputCtx_);
 
         for (auto encoderCtx : encoders_)
-            if (encoderCtx)
-                avcodec_close(encoderCtx);
+            avcodec_free_context(&encoderCtx);
 
         avformat_free_context(outputCtx_);
     }