From 9cef57bde833aefb5a864eaaff19a9b405561759 Mon Sep 17 00:00:00 2001 From: Katsuo-thegamer Date: Thu, 8 May 2025 10:11:59 +0100 Subject: [PATCH 1/2] Update index.tsx --- src/components/ReactNetflixPlayer/index.tsx | 31 ++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/components/ReactNetflixPlayer/index.tsx b/src/components/ReactNetflixPlayer/index.tsx index b910058..cef090b 100644 --- a/src/components/ReactNetflixPlayer/index.tsx +++ b/src/components/ReactNetflixPlayer/index.tsx @@ -1,3 +1,4 @@ +import Hls from 'hls.js'; import React, { useEffect, useState, useRef, SyntheticEvent } from 'react'; import i18n from 'i18next'; import { useTranslation, initReactI18next } from 'react-i18next'; @@ -506,6 +507,35 @@ export default function ReactNetflixPlayer({ setPlaying(autoPlay); } }, [src]); + + useEffect(() => { + const video = videoComponent.current; + if (!video || !src) return; + + // If it's HLS (.m3u8) + if (src.endsWith('.m3u8')) { + if (Hls.isSupported()) { + const hls = new Hls(); + hls.loadSource(src); + hls.attachMedia(video); + + hls.on(Hls.Events.ERROR, function (event, data) { + console.error('HLS.js error:', data); + }); + + return () => { + hls.destroy(); + }; + } else if (video.canPlayType('application/vnd.apple.mpegurl')) { + // Safari native support + video.src = src; + } + } else { + // Fallback for regular .mp4 or other types + video.src = src; + } +}, [src]); + useEffect(() => { document.addEventListener('keydown', getKeyBoardInteration, false); @@ -614,7 +644,6 @@ export default function ReactNetflixPlayer({ {/* eslint-disable-next-line jsx-a11y/media-has-caption */}