diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index 9b7741b624c7d727df7487184e21a216759f1413..7e59f3dd2b0960cd713d3a8beb3c808f91e2d245 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -636,4 +636,18 @@ MediaEncoder::getStreamCount() const
         return 0;
 }
 
+MediaStream
+MediaEncoder::getStream(const std::string& name, int streamIdx) const
+{
+    // if streamIdx is negative, use currentStreamIdx_
+    if (streamIdx < 0)
+        streamIdx = currentStreamIdx_;
+    // make sure streamIdx is valid
+    if (getStreamCount() <= 0 || streamIdx < 0 || encoders_.size() < (unsigned)(streamIdx + 1))
+        return {};
+    auto enc = encoders_[streamIdx];
+    // TODO set firstTimestamp
+    return MediaStream(name, enc);
+}
+
 } // namespace ring
diff --git a/src/media/media_encoder.h b/src/media/media_encoder.h
index 80c28c17125faba4ac852ee14b44fb534bc4d2a8..bae4718c2e1c6e3fcd209199c4214ec3c916afeb 100644
--- a/src/media/media_encoder.h
+++ b/src/media/media_encoder.h
@@ -32,6 +32,7 @@
 #include "media_buffer.h"
 #include "media_codec.h"
 #include "media_device.h"
+#include "media_stream.h"
 
 #include <map>
 #include <memory>
@@ -97,6 +98,7 @@ public:
     bool useCodec(const AccountCodecInfo* codec) const noexcept;
 
     unsigned getStreamCount() const;
+    MediaStream getStream(const std::string& name, int streamIdx = -1) const;
 
 private:
     NON_COPYABLE(MediaEncoder);