From e3f4f737b2c7f3061f62643c17885a11934f3e77 Mon Sep 17 00:00:00 2001 From: Farber Denis Date: Tue, 10 Jan 2023 16:04:53 +0300 Subject: [PATCH] fix(#in221): videoplayer autoquality enabled fix(#in221): mobile auto 720 quality added --- src/features/StreamPlayer/hooks/useVideoQuality.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/features/StreamPlayer/hooks/useVideoQuality.tsx b/src/features/StreamPlayer/hooks/useVideoQuality.tsx index 25d1924e..dd1f97be 100644 --- a/src/features/StreamPlayer/hooks/useVideoQuality.tsx +++ b/src/features/StreamPlayer/hooks/useVideoQuality.tsx @@ -15,6 +15,7 @@ import isString from 'lodash/isString' import filter from 'lodash/fp/filter' import { useLocalStore } from 'hooks' +import { isMobileDevice } from 'config/userAgent' const autoQuality = { label: 'Auto', @@ -43,7 +44,7 @@ const getVideoQualities = (levels: Array) => { Number, 'desc', ) - return uniqBy([...sorted], 'label') + return uniqBy([...sorted, autoQuality], 'label') } export const useVideoQuality = (hls: Hls | null) => { @@ -73,11 +74,18 @@ export const useVideoQuality = (hls: Hls | null) => { const listener = () => { const qualities = getVideoQualities(hls.levels) - const quality = find(qualities, { label: selectedQuality }) || qualities[0] + const quality = find(qualities, { label: selectedQuality }) || autoQuality // eslint-disable-next-line no-param-reassign hls.currentLevel = quality.level setSelectedQuality(quality.label) setVideoQualities(qualities) + + if (isMobileDevice && quality.label === 'Auto') { + const mob720 = qualities.find((item) => item.label === '720') + + // eslint-disable-next-line no-param-reassign + hls.autoLevelCapping = Number(mob720?.level) + } } hls.on(Hls.Events.MANIFEST_PARSED, listener) return () => {