diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js
index 1b1ec39d18..b4fcec21e5 100644
--- a/src/plugins/htmlVideoPlayer/plugin.js
+++ b/src/plugins/htmlVideoPlayer/plugin.js
@@ -383,8 +383,22 @@ function tryRemoveElement(elem) {
setSrcWithHlsJs(elem, options, url) {
return new Promise((resolve, reject) => {
requireHlsPlayer(() => {
+ let maxBufferLength = 30;
+ let maxMaxBufferLength = 600;
+
+ // chromium based browsers cannot handle huge fragments in high bitrate.
+ // This issue usually happens when using HWA encoders with a high bitrate setting.
+ // Limit the BufferLength to 6s, it works fine when playing 4k 120Mbps over HLS on chrome.
+ // https://github.com/video-dev/hls.js/issues/876
+ if ((browser.chrome || browser.edgeChromium) && playbackManager.getMaxStreamingBitrate(this) >= 25000000) {
+ maxBufferLength = 6;
+ maxMaxBufferLength = 6;
+ }
+
const hls = new Hls({
- manifestLoadingTimeOut: 20000
+ manifestLoadingTimeOut: 20000,
+ maxBufferLength: maxBufferLength,
+ maxMaxBufferLength: maxMaxBufferLength
});
hls.loadSource(url);
hls.attachMedia(elem);