diff --git a/CMakeLists.txt b/CMakeLists.txt
index 33825057e6a7b8e35c526d42bf8aa68209f88da9..3c11de2515fcfb8f584fcf1d7797c871e7519416 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -184,12 +184,16 @@ source_group("Source Files\\media\\audio\\audio-processing" FILES ${Source_Files
 source_group("Source Files\\media\\audio\\audio-processing" FILES ${Source_Files__media__audio__webrtc})
 source_group("Source Files\\media\\audio\\audio-processing" FILES ${Source_Files__media__audio__speexdsp})
 source_group("Source Files\\media\\audio\\sound" FILES ${Source_Files__media__audio__sound})
-source_group("Source Files\\media\\video" FILES ${Source_Files__media__video})
+if(JAMI_VIDEO)
+    source_group("Source Files\\media\\video" FILES ${Source_Files__media__video})
+endif()
 source_group("Source Files\\plugin" FILES ${Source_Files__plugin})
 
 if(MSVC)
-   source_group("Source Files\\media\\audio\\portaudio" FILES ${Source_Files__media__audio__portaudio})
-   source_group("Source Files\\media\\video\\winvideo" FILES ${Source_Files__media__video__winvideo})
+    source_group("Source Files\\media\\audio\\portaudio" FILES ${Source_Files__media__audio__portaudio})
+    if(JAMI_VIDEO)
+       source_group("Source Files\\media\\video\\winvideo" FILES ${Source_Files__media__video__winvideo})
+    endif()
 endif()
 
 list (APPEND ALL_FILES
@@ -208,10 +212,12 @@ list (APPEND ALL_FILES
       ${Source_Files__media__audio}
       ${Source_Files__media__audio__sound}
       ${Source_Files__media__audio__audio_processing}
-      ${Source_Files__media__video}
       ${Source_Files__security}
       ${Source_Files__sip}
 )
+if (JAMI_VIDEO)
+    list (APPEND ALL_FILES ${Source_Files__media__video})
+endif()
 if (JAMI_PLUGIN)
     list (APPEND ALL_FILES ${Source_Files__plugin})
 endif()
@@ -264,11 +270,15 @@ elseif (APPLE)
 elseif(MSVC)
    list (APPEND ALL_FILES ${ALL_FILES}
          "${Source_Files__media__audio__portaudio}"
-         "${Source_Files__media__video__uwpvideo}"
-         "${Source_Files__media__video__winvideo}"
          "${Source_Files__media__audio__webrtc}"
          "${Source_Files__media__audio__speexdsp}"
    )
+   if(JAMI_VIDEO)
+    list (APPEND ALL_FILES ${ALL_FILES}
+            "${Source_Files__media__video__uwpvideo}"
+            "${Source_Files__media__video__winvideo}"
+    )
+   endif()
 endif()
 
 add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
@@ -743,9 +753,35 @@ else()
         target_link_libraries(ut_base64 ut_library)
         add_test(NAME base64 COMMAND ut_base64)
 
-        add_executable(ut_ice_sdp_parser test/unitTest/ice/ice_sdp_parser.cpp)
-        target_link_libraries(ut_ice_sdp_parser ut_library)
-        add_test(NAME ice_sdp_parser COMMAND ut_ice_sdp_parser)
+        if (JAMI_VIDEO)
+            add_executable(ut_ice_sdp_parser test/unitTest/ice/ice_sdp_parser.cpp)
+            target_link_libraries(ut_ice_sdp_parser ut_library)
+            add_test(NAME ice_sdp_parser COMMAND ut_ice_sdp_parser)
+
+            add_executable(ut_conference test/unitTest/call/conference.cpp)
+            target_link_libraries(ut_conference ut_library)
+            add_test(NAME conference COMMAND ut_conference)
+
+            add_executable(ut_test_media_frame test/unitTest/media/test_media_frame.cpp)
+            target_link_libraries(ut_test_media_frame ut_library)
+            add_test(NAME test_media_frame COMMAND ut_test_media_frame)
+
+            add_executable(ut_test_video_scaler test/unitTest/media/video/test_video_scaler.cpp)
+            target_link_libraries(ut_test_video_scaler ut_library)
+            add_test(NAME test_video_scaler COMMAND ut_test_video_scaler)
+
+            add_executable(ut_testVideo_input test/unitTest/media/video/testVideo_input.cpp)
+            target_link_libraries(ut_testVideo_input ut_library)
+            add_test(NAME testVideo_input COMMAND ut_testVideo_input)
+
+            add_executable(ut_test_media_filter test/unitTest/media/test_media_filter.cpp)
+            target_link_libraries(ut_test_media_filter ut_library)
+            add_test(NAME test_media_filter COMMAND ut_test_media_filter)
+
+            add_executable(ut_test_media_player test/unitTest/media/test_media_player.cpp)
+            target_link_libraries(ut_test_media_player ut_library)
+            add_test(NAME test_media_player COMMAND ut_test_media_player)
+        endif()
 
         add_executable(ut_scheduler test/unitTest/scheduler.cpp)
         target_link_libraries(ut_scheduler ut_library)
@@ -759,10 +795,6 @@ else()
         target_link_libraries(ut_call ut_library)
         add_test(NAME call COMMAND ut_call)
 
-        add_executable(ut_conference test/unitTest/call/conference.cpp)
-        target_link_libraries(ut_conference ut_library)
-        add_test(NAME conference COMMAND ut_conference)
-
         add_executable(ut_recorder test/unitTest/call/recorder.cpp)
         target_link_libraries(ut_recorder ut_library)
         add_test(NAME recorder COMMAND ut_recorder)
@@ -838,19 +870,6 @@ else()
         add_executable(ut_conversationMembersEvent test/unitTest/conversation/conversationMembersEvent.cpp test/unitTest/conversation/conversationcommon.cpp)
         target_link_libraries(ut_conversationMembersEvent ut_library)
         add_test(NAME conversationMembersEvent COMMAND ut_conversationMembersEvent)
-
-        add_executable(ut_test_media_frame test/unitTest/media/test_media_frame.cpp)
-        target_link_libraries(ut_test_media_frame ut_library)
-        add_test(NAME test_media_frame COMMAND ut_test_media_frame)
-
-        add_executable(ut_test_video_scaler test/unitTest/media/video/test_video_scaler.cpp)
-        target_link_libraries(ut_test_video_scaler ut_library)
-        add_test(NAME test_video_scaler COMMAND ut_test_video_scaler)
-
-        add_executable(ut_testVideo_input test/unitTest/media/video/testVideo_input.cpp)
-        target_link_libraries(ut_testVideo_input ut_library)
-        add_test(NAME testVideo_input COMMAND ut_testVideo_input)
-
         add_executable(ut_test_media_encoder test/unitTest/media/test_media_encoder.cpp)
         target_link_libraries(ut_test_media_encoder ut_library)
         add_test(NAME test_media_encoder COMMAND ut_test_media_encoder)
@@ -867,14 +886,6 @@ else()
         target_link_libraries(ut_test_audio_frame_resizer ut_library)
         add_test(NAME test_audio_frame_resizer COMMAND ut_test_audio_frame_resizer)
 
-        add_executable(ut_test_media_filter test/unitTest/media/test_media_filter.cpp)
-        target_link_libraries(ut_test_media_filter ut_library)
-        add_test(NAME test_media_filter COMMAND ut_test_media_filter)
-
-        add_executable(ut_test_media_player test/unitTest/media/test_media_player.cpp)
-        target_link_libraries(ut_test_media_player ut_library)
-        add_test(NAME test_media_player COMMAND ut_test_media_player)
-
         if (JAMI_PLUGIN)
             add_executable(ut_plugins test/unitTest/plugins/plugins.cpp)
             target_link_libraries(ut_plugins ut_library)
diff --git a/src/conference.cpp b/src/conference.cpp
index 64734f491122b235854040b9244f06eaaeefb5ef..d83b44e0e3f0be4e9f0b650c4b5bd02ccf1f5ce8 100644
--- a/src/conference.cpp
+++ b/src/conference.cpp
@@ -582,12 +582,16 @@ Conference::requestMediaChange(const std::vector<libjami::MediaMap>& mediaList)
                    && oldAttr.label_ == mediaAttr.label_;
         });
         // If video, add to newVideoInputs
+#ifdef ENABLE_VIDEO
         if (mediaAttr.type_ == MediaType::MEDIA_VIDEO) {
             auto srcUri = mediaAttr.sourceUri_.empty() ? Manager::instance().getVideoManager().videoDeviceMonitor.getMRLForDefaultDevice() : mediaAttr.sourceUri_;
             newVideoInputs.emplace_back(srcUri);
         } else {
+#endif
             hostAudioInputs_[mediaAttr.label_] = jami::getAudioInput(mediaAttr.label_);
+#ifdef ENABLE_VIDEO
         }
+#endif
         if (oldIdx != hostSources_.end()) {
             // Check if muted status changes
             if (mediaAttr.muted_ != oldIdx->muted_) {
@@ -757,6 +761,7 @@ Conference::removeSubCall(const std::string& callId)
         participantsMuted_.erase(call->getCallId());
         if (auto* transport = call->getTransport())
             handsRaised_.erase(std::string(transport->deviceId()));
+#ifdef ENABLE_VIDEO
         if (videoMixer_) {
             for (auto const& rtpSession : call->getRtpSessionList()) {
                 if (rtpSession->getMediaType() == MediaType::MEDIA_AUDIO)
@@ -766,7 +771,6 @@ Conference::removeSubCall(const std::string& callId)
             }
         }
 
-#ifdef ENABLE_VIDEO
         auto sinkId = getConfId() + peerId;
         unbindSubCallAudio(callId);
         call->exitConference();
diff --git a/src/media/media_player.cpp b/src/media/media_player.cpp
index 017f1ec2d1ff61977a07b2c2f0a64fc247db2498..b9262cc94257b101a78af8a0eaa1552cdf448ce5 100644
--- a/src/media/media_player.cpp
+++ b/src/media/media_player.cpp
@@ -58,7 +58,9 @@ MediaPlayer::~MediaPlayer()
     pause(true);
     loop_.join();
     audioInput_.reset();
+#ifdef ENABLE_VIDEO
     videoInput_.reset();
+#endif
 }
 
 bool
diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index e6e3b4bed66835231e88fe2409e2617667fbb4a3..4a4ca9f35f1b7050b6c004227214152f9ac4894a 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -166,7 +166,9 @@ SIPCall::~SIPCall()
     setSipTransport({});
     setInviteSession(); // prevents callback usage
 
+#ifdef ENABLE_VIDEO
     closeMediaPlayer(mediaPlayerId_);
+#endif
 }
 
 int
@@ -2532,12 +2534,16 @@ SIPCall::requestMediaChange(const std::vector<libjami::MediaMap>& mediaList)
         if (prefix == libjami::Media::VideoProtocolPrefix::FILE) {
             hasFileSharing = true;
             mediaPlayerId_ = media.sourceUri_;
+#ifdef ENABLE_VIDEO
             createMediaPlayer(mediaPlayerId_);
+#endif
         }
     }
 
     if (!hasFileSharing) {
+#ifdef ENABLE_VIDEO
         closeMediaPlayer(mediaPlayerId_);
+#endif
         mediaPlayerId_ = "";
     }