mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
71 lines
1.4 KiB
TypeScript
71 lines
1.4 KiB
TypeScript
import type { FrameRate } from "opencut-wasm";
|
|
import { EXPORT_MIME_TYPES } from "@/constants/export-constants";
|
|
|
|
export const EXPORT_QUALITY_VALUES = [
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"very_high",
|
|
] as const;
|
|
|
|
export const EXPORT_FORMAT_VALUES = ["mp4", "webm"] as const;
|
|
|
|
export type ExportFormat = (typeof EXPORT_FORMAT_VALUES)[number];
|
|
export type ExportQuality = (typeof EXPORT_QUALITY_VALUES)[number];
|
|
|
|
export interface ExportOptions {
|
|
format: ExportFormat;
|
|
quality: ExportQuality;
|
|
fps?: FrameRate;
|
|
includeAudio?: boolean;
|
|
}
|
|
|
|
export interface ExportResult {
|
|
success: boolean;
|
|
buffer?: ArrayBuffer;
|
|
error?: string;
|
|
cancelled?: boolean;
|
|
}
|
|
|
|
export interface ExportState {
|
|
isExporting: boolean;
|
|
progress: number;
|
|
result: ExportResult | null;
|
|
}
|
|
|
|
export function getExportMimeType({
|
|
format,
|
|
}: {
|
|
format: ExportFormat;
|
|
}): string {
|
|
return EXPORT_MIME_TYPES[format];
|
|
}
|
|
|
|
export function getExportFileExtension({
|
|
format,
|
|
}: {
|
|
format: ExportFormat;
|
|
}): string {
|
|
return `.${format}`;
|
|
}
|
|
|
|
export function downloadBuffer({
|
|
buffer,
|
|
filename,
|
|
mimeType,
|
|
}: {
|
|
buffer: ArrayBuffer;
|
|
filename: string;
|
|
mimeType: string;
|
|
}): void {
|
|
const blob = new Blob([buffer], { type: mimeType });
|
|
const url = URL.createObjectURL(blob);
|
|
const downloadLink = document.createElement("a");
|
|
downloadLink.href = url;
|
|
downloadLink.download = filename;
|
|
document.body.appendChild(downloadLink);
|
|
downloadLink.click();
|
|
document.body.removeChild(downloadLink);
|
|
URL.revokeObjectURL(url);
|
|
}
|