Spaces:
Sleeping
Sleeping
| export const frameToTimeString = ( | |
| { frame }: { frame: number }, | |
| { fps }: { fps: number } | |
| ): string => { | |
| // Calculate the total time in seconds | |
| const totalSeconds = frame / fps; | |
| // Calculate hours, minutes, seconds, and milliseconds | |
| const hours = Math.floor(totalSeconds / 3600); | |
| const remainingSeconds = totalSeconds % 3600; | |
| const minutes = Math.floor(remainingSeconds / 60); | |
| const seconds = Math.floor(remainingSeconds % 60); | |
| // Format the time string based on whether hours are zero or not | |
| if (hours > 0) { | |
| return `${hours}:${minutes.toString().padStart(2, "0")}:${seconds | |
| .toString() | |
| .padStart(2, "0")}`; | |
| } | |
| return `${minutes.toString().padStart(2, "0")}:${seconds | |
| .toString() | |
| .padStart(2, "0")}`; | |
| }; | |
| export const timeToString = ({ time }: { time: number }): string => { | |
| // Calculate the total time in seconds | |
| const totalSeconds = time / 1000; | |
| // Calculate hours, minutes, seconds, and milliseconds | |
| const hours = Math.floor(totalSeconds / 3600); | |
| const remainingSeconds = totalSeconds % 3600; | |
| const minutes = Math.floor(remainingSeconds / 60); | |
| const seconds = Math.floor(remainingSeconds % 60); | |
| // Format the time string based on whether hours are zero or not | |
| if (hours > 0) { | |
| return `${hours}:${minutes.toString().padStart(2, "0")}:${seconds | |
| .toString() | |
| .padStart(2, "0")}`; | |
| } | |
| return `${minutes.toString().padStart(2, "0")}:${seconds | |
| .toString() | |
| .padStart(2, "0")}`; | |
| }; | |
| export const getCurrentTime = () => { | |
| const currentTimeElement = document.getElementById("video-current-time"); | |
| const currentTimeSeconds = currentTimeElement | |
| ? Number.parseFloat( | |
| currentTimeElement.getAttribute("data-current-time") ?? "0" | |
| ) | |
| : 0; | |
| const currentTimeMiliseconds = currentTimeSeconds * 1000; | |
| return currentTimeMiliseconds; | |
| }; | |
| /** | |
| * Safely gets the current frame from a player reference | |
| * @param playerRef - The player reference | |
| * @returns The current frame as a finite number, or 0 if invalid | |
| */ | |
| export const getSafeCurrentFrame = (playerRef: any): number => { | |
| try { | |
| if (!playerRef?.current) { | |
| return 0; | |
| } | |
| const frame = playerRef.current.getCurrentFrame(); | |
| // Check if frame is a valid finite number | |
| if (typeof frame !== "number" || !Number.isFinite(frame)) { | |
| console.warn("getCurrentFrame returned non-finite value:", frame); | |
| return 0; | |
| } | |
| // Ensure frame is non-negative | |
| return Math.max(0, frame); | |
| } catch (error) { | |
| console.error("Error getting current frame:", error); | |
| return 0; | |
| } | |
| }; | |