diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp
index 4e87ac9daa669c0a0d0997df85e15405f7faac27..8dc2e07f07a04389a5e2e1a4fd6552610b64e76b 100644
--- a/src/media/video/video_input.cpp
+++ b/src/media/video/video_input.cpp
@@ -68,9 +68,13 @@ VideoInput::VideoInput(VideoInputMode inputMode, const std::string& id_)
         inputMode_ = VideoInputMode::ManagedByDaemon;
 #endif
     }
+#ifdef __ANDROID__
+    sink_ = Manager::instance().createSinkClient(id_);
+#else
     if (inputMode_ == VideoInputMode::ManagedByDaemon) {
         sink_ = Manager::instance().createSinkClient(id_);
     }
+#endif
 }
 
 VideoInput::~VideoInput()
@@ -591,6 +595,23 @@ VideoInput::setSink(const std::string& sinkId)
     sink_ = Manager::instance().createSinkClient(sinkId);
 }
 
+void VideoInput::setFrameSize(const int width, const int height)
+{
+    /* Signal the client about readable sink */
+    sink_->setFrameSize(width, height);
+}
+
+void VideoInput::setupSink()
+{
+    setup();
+}
+
+void VideoInput::stopSink()
+{
+    detach(sink_.get());
+    sink_->stop();
+}
+
 void
 VideoInput::updateStartTime(int64_t startTime)
 {
diff --git a/src/media/video/video_input.h b/src/media/video/video_input.h
index 082bde5c176b4f2d6157f0b329db7e00b912f808..220ee3178f1ff8b332751bec7fd45657080087c6 100644
--- a/src/media/video/video_input.h
+++ b/src/media/video/video_input.h
@@ -74,7 +74,10 @@ public:
     void setPaused(bool paused) {
         paused_ = paused;
     }
-     void setSeekTime(int64_t time);
+    void setSeekTime(int64_t time);
+    void setFrameSize(const int width, const int height);
+    void setupSink();
+    void stopSink();
 
     std::shared_future<DeviceParams> switchInput(const std::string& resource);
 #if VIDEO_CLIENT_INPUT
diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp
index 2d50cb07916785ebcec82b3366cc622e4a934f1b..ed39906ddd107d53313d695e28f5db85f41fd09d 100644
--- a/src/media/video/video_rtp_session.cpp
+++ b/src/media/video/video_rtp_session.cpp
@@ -120,6 +120,13 @@ void VideoRtpSession::startSender()
                 JAMI_WARN("Can't lock video input");
                 return;
             }
+
+#ifdef __ANDROID__
+            if (auto input1 = std::static_pointer_cast<VideoInput>(videoLocal_)) {
+                input1->setupSink();
+                input1->setFrameSize(localVideoParams_.width, localVideoParams_.height);
+            }
+#endif
         }