|
|
@ -1,10 +1,7 @@ |
|
|
|
import { ReactNode, useEffect, useMemo, useRef } from "react"; |
|
|
|
import { ReactNode, useEffect, useMemo, useRef } from "react"; |
|
|
|
|
|
|
|
|
|
|
|
import { makeVideoElementDisplayInterface } from "@/components/player/display/base"; |
|
|
|
import { makeVideoElementDisplayInterface } from "@/components/player/display/base"; |
|
|
|
import { |
|
|
|
import { convertSubtitlesToDataurl } from "@/components/player/utils/captions"; |
|
|
|
convertSubtitlesToVtt, |
|
|
|
|
|
|
|
vttToDataurl, |
|
|
|
|
|
|
|
} from "@/components/player/utils/captions"; |
|
|
|
|
|
|
|
import { playerStatus } from "@/stores/player/slices/source"; |
|
|
|
import { playerStatus } from "@/stores/player/slices/source"; |
|
|
|
import { usePlayerStore } from "@/stores/player/store"; |
|
|
|
import { usePlayerStore } from "@/stores/player/store"; |
|
|
|
|
|
|
|
|
|
|
@ -47,10 +44,9 @@ function VideoElement() { |
|
|
|
const captionAsTrack = usePlayerStore((s) => s.caption.asTrack); |
|
|
|
const captionAsTrack = usePlayerStore((s) => s.caption.asTrack); |
|
|
|
const language = usePlayerStore((s) => s.caption.selected?.language); |
|
|
|
const language = usePlayerStore((s) => s.caption.selected?.language); |
|
|
|
|
|
|
|
|
|
|
|
const trackData = useMemo( |
|
|
|
const trackData = useMemo(() => { |
|
|
|
() => (srtData ? vttToDataurl(convertSubtitlesToVtt(srtData)) : null), |
|
|
|
return srtData ? convertSubtitlesToDataurl(srtData) : null; |
|
|
|
[srtData] |
|
|
|
}, [srtData]); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// report video element to display interface
|
|
|
|
// report video element to display interface
|
|
|
|
useEffect(() => { |
|
|
|
useEffect(() => { |
|
|
|