ADD clip length label

This commit is contained in:
2025-05-23 11:56:25 +02:00
parent a25564dd31
commit 7b6c3431b5
2 changed files with 23 additions and 7 deletions

View File

@@ -8,10 +8,15 @@ type Props = {
videoRef: HTMLVideoElement | null; videoRef: HTMLVideoElement | null;
videoMetadata: VideoMetadata; videoMetadata: VideoMetadata;
setSliderValue: Function; setSliderValue: Function;
setClipRangeValue: Function;
className?: string; className?: string;
}; };
export default function ClipRangeSlider({videoRef, videoMetadata, setSliderValue, className}: Props) { export default function ClipRangeSlider({videoRef,
videoMetadata,
setSliderValue,
setClipRangeValue,
className}: Props) {
const previousRangeSliderInput = useRef<[number, number]>([0, 0]); const previousRangeSliderInput = useRef<[number, number]>([0, 0]);
const handleRangeSliderInput = (val: [number, number]) => { const handleRangeSliderInput = (val: [number, number]) => {
@@ -25,6 +30,7 @@ export default function ClipRangeSlider({videoRef, videoMetadata, setSliderValue
setSliderValue(val[1]); setSliderValue(val[1]);
} }
setClipRangeValue(val);
previousRangeSliderInput.current = val; previousRangeSliderInput.current = val;
}; };

View File

@@ -11,7 +11,8 @@ export default function VideoId() {
const videoUrl = `api/v1/download/input/${id}` const videoUrl = `api/v1/download/input/${id}`
const [metadata, setMetadata] = useState<VideoMetadata | null>(null); const [metadata, setMetadata] = useState<VideoMetadata | null>(null);
const [sliderValue, setSliderValue] = useState(0); const [playbackValue, setPlaybackValue] = useState(0);
const [clipRangeValue, setClipRangeValue] = useState([0, 1]);
useEffect(() => { useEffect(() => {
fetch(`api/v1/metadata/original/${id}`) fetch(`api/v1/metadata/original/${id}`)
@@ -24,7 +25,7 @@ export default function VideoId() {
}, [id]); }, [id]);
return ( return (
<div className={"flex flex-col gap-2 max-w-3xl m-auto align-middle"}> <div className={"flex flex-col max-w-3xl m-auto align-middle"}>
<video <video
ref={videoRef} ref={videoRef}
width={"600"} width={"600"}
@@ -38,21 +39,30 @@ export default function VideoId() {
{metadata && {metadata &&
<div> <div>
<Playbar video={videoRef.current} videoMetadata={metadata}/> <Playbar
video={videoRef.current}
videoMetadata={metadata}
/>
<PlaybackSlider <PlaybackSlider
videoRef={videoRef.current} videoRef={videoRef.current}
videoMetadata={metadata} videoMetadata={metadata}
sliderValue={sliderValue} sliderValue={playbackValue}
setSliderValue={setSliderValue} setSliderValue={setPlaybackValue}
className={"w-full"} className={"w-full"}
/> />
<ClipRangeSlider <ClipRangeSlider
videoRef={videoRef.current} videoRef={videoRef.current}
videoMetadata={metadata} videoMetadata={metadata}
setSliderValue={setSliderValue} setSliderValue={setPlaybackValue}
setClipRangeValue={setClipRangeValue}
className={"w-full"} className={"w-full"}
/> />
<label>
Clip Length: {Math.round(clipRangeValue[1] - clipRangeValue[0])}
</label>
</div> </div>
} }
</div> </div>