diff --git a/modules/gui/qt/player/qml/SliderBar.qml b/modules/gui/qt/player/qml/SliderBar.qml
index afbd522501fc5f8a7ed23a72cce7f7989fc2fdf1..4616021baa4e3c6e6a9213605c697079d815a068 100644
--- a/modules/gui/qt/player/qml/SliderBar.qml
+++ b/modules/gui/qt/player/qml/SliderBar.qml
@@ -394,12 +394,36 @@ T.ProgressBar {
             property int bufferAnimPosition: 0
             property int bufferFrames: 1000
             property alias animateLoading: loadingAnim.running
+            property bool display: false
+            property bool buffering: Player.buffering > 0 && Player.buffering < 1
 
             height: control.barHeight
             opacity: 0.4
             color: theme.fg.neutral //FIXME buffer color ?
             radius: control.barHeight
 
+            Timer {
+                id: bufferingTimer
+                interval: VLCStyle.humanMoment
+                repeat: false
+                running: false
+                onTriggered: {
+                    bufferRect.display = true
+                }
+            }
+
+            onBufferingChanged: {
+                if(buffering)
+                {
+                    bufferingTimer.start()
+                }
+                else
+                {
+                    bufferingTimer.stop()
+                    bufferRect.display = false
+                }
+            }
+
             states: [
                 State {
                     name: "hidden"
@@ -425,7 +449,7 @@ T.ProgressBar {
                 },
                 State {
                     name: "time to start playing known"
-                    when: control.visible && Player.buffering < 1
+                    when: control.visible && bufferRect.display
                     PropertyChanges {
                         target: bufferRect
                         width: Player.buffering * parent.width
@@ -436,7 +460,7 @@ T.ProgressBar {
                 },
                 State {
                     name: "playing from buffer"
-                    when: control.visible && Player.buffering === 1
+                    when: control.visible && !bufferRect.display
                     PropertyChanges {
                         target: bufferRect
                         width: Player.buffering * parent.width