diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp
index f2d63abc11f4cab4c5d29ee2df03288e31bd2442..0362cd3cf8b8319cf1ae463756872a00d1c06c0b 100644
--- a/src/media/media_recorder.cpp
+++ b/src/media/media_recorder.cpp
@@ -161,7 +161,7 @@ MediaRecorder::startRecording()
         while (!frames_.empty()) {
             auto f = frames_.front();
             av_frame_unref(f.frame);
-            frames_.pop();
+            frames_.pop_front();
         }
     }
 
@@ -228,7 +228,7 @@ MediaRecorder::recordData(AVFrame* frame, bool isVideo, bool fromPeer)
 
     {
         std::lock_guard<std::mutex> q(qLock_);
-        frames_.emplace(input, isVideo, fromPeer);
+        frames_.emplace_back(input, isVideo, fromPeer);
     }
     loop_.interrupt();
     return 0;
@@ -510,7 +510,7 @@ MediaRecorder::process()
         std::lock_guard<std::mutex> q(qLock_);
         if (!frames_.empty()) {
             recframe = frames_.front();
-            frames_.pop();
+            frames_.pop_front();
         } else {
             return;
         }
diff --git a/src/media/media_recorder.h b/src/media/media_recorder.h
index 87bf1e10875e3a6e7bbbc2bc3946aa03fa911be8..1c88f28764ca9e12cb5a4726452dac46511fb343 100644
--- a/src/media/media_recorder.h
+++ b/src/media/media_recorder.h
@@ -129,7 +129,7 @@ class MediaRecorder {
         InterruptedThreadLoop loop_;
         void process();
         std::mutex qLock_;
-        std::queue<RecordFrame> frames_;
+        std::deque<RecordFrame> frames_;
 };
 
 }; // namespace ring