diff --git a/src/main/java/org/olat/admin/sysinfo/SysinfoController.java b/src/main/java/org/olat/admin/sysinfo/SysinfoController.java
index 8b62d6c6a4504a9cbb54e53da92a14f8c570a8bb..9f15f0b6dda6e9404558c34a2fd052292338c63e 100644
--- a/src/main/java/org/olat/admin/sysinfo/SysinfoController.java
+++ b/src/main/java/org/olat/admin/sysinfo/SysinfoController.java
@@ -35,7 +35,6 @@ import java.util.TimeZone;
 import org.olat.admin.sysinfo.manager.SessionStatsManager;
 import org.olat.admin.sysinfo.model.SessionsStats;
 import org.olat.basesecurity.BaseSecurity;
-import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
@@ -48,6 +47,7 @@ import org.olat.core.helpers.Settings;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.WebappHelper;
+import org.springframework.beans.factory.annotation.Autowired;
 
 
 /**
@@ -58,8 +58,10 @@ import org.olat.core.util.WebappHelper;
 */
 public class SysinfoController extends FormBasicController {
 	
-	private final BaseSecurity securityManager;
-	private final SessionStatsManager sessionStatsManager;
+	@Autowired
+	private BaseSecurity securityManager;
+	@Autowired
+	private SessionStatsManager sessionStatsManager;
 	
 	/**
 	 * @param ureq
@@ -67,10 +69,6 @@ public class SysinfoController extends FormBasicController {
 	 */
 	public SysinfoController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl, "sysinfo");
-		
-		securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
-		sessionStatsManager = CoreSpringFactory.getImpl(SessionStatsManager.class);
-
 		initForm(ureq);
 	}
 
@@ -97,7 +95,16 @@ public class SysinfoController extends FormBasicController {
 		int controllerCnt = DefaultController.getControllerCount();
 		uifactory.addStaticTextElement("controllercount", "runtime.controllercount", Integer.toString(controllerCnt), runtimeCont);
 		int numOfDispatchingThreads = sessionStatsManager.getConcurrentCounter();
-		uifactory.addStaticTextElement("dispatchingthreads", "runtime.dispatchingthreads", Integer.toString(numOfDispatchingThreads), runtimeCont);
+		int numOfDispatchingStreams =  sessionStatsManager.getConcurrentStreamCounter();
+		String threadsInfos;
+		if(numOfDispatchingStreams == 0) {
+			threadsInfos = Integer.toString(numOfDispatchingThreads);
+		} else {
+			threadsInfos = translate("runtime.dispatchingthreads.infos", new String[] {
+					Integer.toString(numOfDispatchingThreads - numOfDispatchingStreams), Integer.toString(numOfDispatchingStreams)
+			});
+		}
+		uifactory.addStaticTextElement("dispatchingthreads", "runtime.dispatchingthreads", threadsInfos, runtimeCont);
 		
 		//sessions and clicks
 		String sessionAndClicksPage = velocity_root + "/session_clicks.html";
diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties
index 6ac442ee5fa532102fc61aa00a929a2e73dc9c3a..484b258a1cb00c06738665f4015d93f723cfdcec 100644
--- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties
@@ -173,6 +173,7 @@ run.gc=Java Garbage Collection jetzt starten
 runtime=Runtime Informationen
 runtime.controllercount=Controllers (Aktiv und nicht aufger\u00E4umt)
 runtime.dispatchingthreads=Gleichzeitige arbeitende Threads
+runtime.dispatchingthreads.infos={0} und {1} Video Streams
 runtime.memory=Speicher
 runtime.memory.permGen=Speicher (Permanent Generation)
 runtime.memory.tooltip={0} MB von {1} MB belegt
diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties
index 7f56a08659eb791358c72bb829d3d317e10a9b67..b0cf3b9a00398c56bc06e3b3a665af7473dabe6a 100644
--- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties
@@ -173,6 +173,7 @@ run.gc=Run garbage collection
 runtime=Runtime infos
 runtime.controllercount=Controllers (active and not disposed)
 runtime.dispatchingthreads=Concurrent dispatching threads
+runtime.dispatchingthreads.infos={0} and {1} videos streams
 runtime.memory=Memory
 runtime.memory.permGen=Memory (Permanent Generation)
 runtime.memory.tooltip={0} MB of {1} MB available
diff --git a/src/main/java/org/olat/admin/sysinfo/manager/SessionStatsManager.java b/src/main/java/org/olat/admin/sysinfo/manager/SessionStatsManager.java
index 3e036d3b1322b2ce0d9f745f45f196952aa9d886..fa0440b9d176a423e31800bf0e6bab86bba1ca9a 100644
--- a/src/main/java/org/olat/admin/sysinfo/manager/SessionStatsManager.java
+++ b/src/main/java/org/olat/admin/sysinfo/manager/SessionStatsManager.java
@@ -47,7 +47,8 @@ public class SessionStatsManager implements Sampler {
 	private	UserSessionManager sessionManager;
 	
 	private SessionStatsSample currentSample;
-	private AtomicInteger concurrentCounter = new AtomicInteger(0);
+	private final AtomicInteger concurrentCounter = new AtomicInteger(0);
+	private final AtomicInteger concurrentStreamCounter = new AtomicInteger(0);
 	private List<SessionStatsSample> sessionStatsSamples = new ArrayList<>();
 
 	public List<SessionStatsSample> getSessionViews() {
@@ -89,7 +90,19 @@ public class SessionStatsManager implements Sampler {
 	public void decrementConcurrentCounter() {
 		concurrentCounter.decrementAndGet();
 	}
+
+	public int getConcurrentStreamCounter() {
+		return concurrentStreamCounter.intValue();
+	}
+
+	public void incrementConcurrentStreamCounter() {
+		concurrentStreamCounter.incrementAndGet();
+	}
 	
+	public void decrementConcurrentStreamCounter() {
+		concurrentStreamCounter.decrementAndGet();
+	}
+
 	public synchronized long getNumOfSessions() {
 		if(currentSample != null) {
 			return currentSample.getNumOfSessions();
diff --git a/src/main/java/org/olat/core/gui/media/ServletUtil.java b/src/main/java/org/olat/core/gui/media/ServletUtil.java
index f7bc631ee1b12c44ecf3a4c3b12bd507edeb266b..d47bee277b1b54b9a0a8f4a7b8c35776aeeec532 100644
--- a/src/main/java/org/olat/core/gui/media/ServletUtil.java
+++ b/src/main/java/org/olat/core/gui/media/ServletUtil.java
@@ -45,13 +45,14 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.Logger;
+import org.olat.admin.sysinfo.manager.SessionStatsManager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.Windows;
 import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.util.bandwidth.SlowBandWidthSimulator;
 import org.olat.core.helpers.Settings;
 import org.olat.core.logging.AssertException;
-import org.apache.logging.log4j.Logger;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
 import org.olat.core.util.StringHelper;
@@ -252,13 +253,21 @@ public class ServletUtil {
 	
 	protected static void copy(OutputStream ostream, InputStream resourceInputStream, Range range, int bufferSize) throws IOException {
 		IOException exception = null;
-
-		InputStream istream = (resourceInputStream instanceof BufferedInputStream)
-				? resourceInputStream : new BufferedInputStream(resourceInputStream, bufferSize);
-		exception = copyRange(istream, ostream, range.start, range.end, bufferSize);
-
-		// Clean up the input stream
-		istream.close();
+		
+		SessionStatsManager stats = CoreSpringFactory.getImpl(SessionStatsManager.class);
+
+		try(InputStream istream = (resourceInputStream instanceof BufferedInputStream)
+				? resourceInputStream : new BufferedInputStream(resourceInputStream, bufferSize)) {
+			stats.incrementConcurrentStreamCounter();
+			Thread.sleep(5000);
+			exception = copyRange(istream, ostream, range.start, range.end, bufferSize);
+		} catch(IOException e) {
+			handleIOException("Deliver range of data", e);
+		} catch(Exception e) {
+			log.error("", e);
+		} finally {
+			stats.decrementConcurrentStreamCounter();
+		}
 
 		// Rethrow any exception that has occurred
 		if (exception != null) throw exception;