Spaces:
Sleeping
Sleeping
File size: 2,480 Bytes
bc18ad5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import { PREVIEW_FRAME_WIDTH } from "../constants/constants";
/**
* Converts raw timeline units to the readable format.
* @param units Target unit value.
* @returns Time in format HH:MM:SS.FPS
*/
export function formatTimelineUnit(units?: number): string {
if (!units) return "0";
const time = units / PREVIEW_FRAME_WIDTH;
const frames = Math.trunc(time) % 60;
const seconds = Math.trunc(time / 60) % 60;
const minutes = Math.trunc(time / 3600) % 60;
const hours = Math.trunc(time / 216000);
const formattedTime = [
hours.toString(),
minutes.toString(),
seconds.toString(),
frames.toString()
];
if (time < 60) {
return `${formattedTime[3].padStart(2, "0")}f`;
}
if (time < 3600) {
return `${formattedTime[2].padStart(1, "0")}s`;
}
if (time < 216000) {
return `${formattedTime[1].padStart(2, "0")}:${formattedTime[2].padStart(2, "0")}`;
}
return `${formattedTime[0].padStart(2, "0")}:${formattedTime[1].padStart(2, "0")}:${formattedTime[2].padStart(2, "0")}`;
}
export function formatTimeToHumanReadable(
ms: number,
includeFrames = false
): string {
if (!ms) return "00:00";
const fps = 60;
const msPerFrame = 1000 / fps;
if (ms < 1000) {
if (includeFrames) {
const frames = Math.floor(ms / msPerFrame);
return `${frames}f`;
} else {
// Convert milliseconds to seconds (with one decimal place)
const seconds = (ms / 1000).toFixed(1);
return `${seconds}s`;
}
}
const seconds = Math.floor(ms / 1000);
if (seconds < 60) {
return `${seconds}s`;
}
const minutes = Math.floor(seconds / 60);
if (minutes < 60) {
const remainingSeconds = seconds % 60;
return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
}
const hours = Math.floor(minutes / 60);
const remainingMinutes = minutes % 60;
const remainingSeconds = seconds % 60;
return `${hours.toString().padStart(2, "0")}:${remainingMinutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
}
export function millisecondsToHHMMSS(ms: number): string {
if (ms < 0) return "00:00:00";
const totalSeconds = Math.floor(ms / 1000);
const hours = Math.floor(totalSeconds / 3600);
const minutes = Math.floor((totalSeconds % 3600) / 60);
const seconds = totalSeconds % 60;
return `${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
}
|