diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index 29ae832c6f2107fb5536f56802a2955cf763f71d..952b184b06c19264abada7bca02c8e67164efe39 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;