diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index d1a3d71720ff875aa3e817f4792705b53fad2ced..c6f69d19e09c44df46e00c55bee1921963204a32 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -327,7 +327,7 @@ MediaDecoder::decode(VideoFrame& result)
             auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6);
             auto now = av_gettime();
             if (target > now) {
-                std::this_thread::sleep_for(std::chrono::milliseconds(target - now));
+                std::this_thread::sleep_for(std::chrono::microseconds(target - now));
             }
         }
         return Status::FrameFinished;
@@ -378,7 +378,7 @@ MediaDecoder::decode(const AudioFrame& decodedFrame)
             auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6);
             auto now = av_gettime();
             if (target > now) {
-                std::this_thread::sleep_for(std::chrono::milliseconds(target - now));
+                std::this_thread::sleep_for(std::chrono::microseconds(target - now));
             }
         }
         return Status::FrameFinished;