fix(#in221): videoplayer autoquality enabled

fix(#in221): mobile auto 720 quality added
pull/38/head
Farber Denis 3 years ago
parent 9e56f5cf87
commit e3f4f737b2
  1. 12
      src/features/StreamPlayer/hooks/useVideoQuality.tsx

@ -15,6 +15,7 @@ import isString from 'lodash/isString'
import filter from 'lodash/fp/filter' import filter from 'lodash/fp/filter'
import { useLocalStore } from 'hooks' import { useLocalStore } from 'hooks'
import { isMobileDevice } from 'config/userAgent'
const autoQuality = { const autoQuality = {
label: 'Auto', label: 'Auto',
@ -43,7 +44,7 @@ const getVideoQualities = (levels: Array<Level>) => {
Number, Number,
'desc', 'desc',
) )
return uniqBy([...sorted], 'label') return uniqBy([...sorted, autoQuality], 'label')
} }
export const useVideoQuality = (hls: Hls | null) => { export const useVideoQuality = (hls: Hls | null) => {
@ -73,11 +74,18 @@ export const useVideoQuality = (hls: Hls | null) => {
const listener = () => { const listener = () => {
const qualities = getVideoQualities(hls.levels) 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 // eslint-disable-next-line no-param-reassign
hls.currentLevel = quality.level hls.currentLevel = quality.level
setSelectedQuality(quality.label) setSelectedQuality(quality.label)
setVideoQualities(qualities) 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) hls.on(Hls.Events.MANIFEST_PARSED, listener)
return () => { return () => {

Loading…
Cancel
Save