ems-editor
Version:
EMS Video Editor SDK - Universal JavaScript SDK for external video editor integration
187 lines (186 loc) • 4.49 kB
TypeScript
/**
* Interface for render options used in startRender and startRenderWithMAMUpload methods
*/
export interface RenderOptions {
title?: string;
color?: string;
duration?: number;
fps?: number;
width?: number;
height?: number;
template?: any;
settings?: any;
format?: 'mp4' | 'webm' | 'mov' | 'mxf';
codec?: string;
quality?: 'low' | 'medium' | 'high' | 'ultra';
uploadToMAM?: boolean;
mamToken?: string;
mamBaseUrl?: string;
mamProjectId?: number;
mamBinId?: number | null;
sessionId?: string;
compositionProps?: Record<string, any>;
}
/**
* MAM Upload Event stages
*/
export type MAMUploadStage = 'preparing' | 'analyzing' | 'converting' | 'uploading' | 'completing' | 'completed' | 'failed';
/**
* MAM Upload Progress Event Result
*/
export interface MAMUploadEventResult {
jobId: string;
stage: MAMUploadStage;
progress: number;
message: string;
currentStep?: string;
totalSteps?: number;
currentStepIndex?: number;
fileInfo?: {
size: number;
sizeFormatted: string;
format: string;
duration?: number;
resolution?: string;
};
conversionInfo?: {
inputFormat: string;
outputFormat: string;
conversionProgress: number;
conversionSpeed?: string;
estimatedTimeRemaining?: string;
};
chunkProgress?: {
uploadedChunks: number;
totalChunks: number;
chunkSize: string;
};
binInfo?: {
binPath: string;
binId: number;
};
assetId?: number;
assetUrl?: string;
error?: string;
logs?: string[];
}
/**
* MAM Upload Complete Result
*/
export interface MAMUploadCompleteResult {
assetId: number;
assetName?: string;
assetUrl?: string;
jobId: string;
videoUrl: string;
uploadTime?: number;
fileSize?: number;
binPath?: string;
}
/**
* MAM Upload Tracker
*/
export interface MAMUploadTracker {
trackingId: string;
stop: () => void;
}
/**
* Result from startRenderWithMAMUpload method
*/
export interface StartRenderWithMAMUploadResult {
jobId?: string;
tracker: MAMUploadTracker;
}
/**
* MAM Upload Callbacks
*/
export interface MAMUploadCallbacks {
onProgress?: (progress: MAMUploadEventResult) => void;
onStageChange?: (stage: MAMUploadStage, data: MAMUploadEventResult) => void;
onComplete?: (result: MAMUploadCompleteResult) => void;
onError?: (error: string) => void;
}
/**
* Workspace Loading Options
*/
export interface LoadWorkspaceOptions {
workspaceId: string;
sessionId?: string;
mergeMode?: 'replace' | 'append';
switchToWorkspace?: boolean;
}
/**
* Workspace Loading Result
*/
export interface LoadWorkspaceResult {
success: boolean;
workspaceId: string;
localWorkspaceId: string;
workspaceName: string;
message?: string;
error?: string;
}
/**
* Workspace Loading Progress Event
*/
export interface WorkspaceLoadingProgress {
stage: 'fetching' | 'parsing' | 'importing' | 'completed' | 'failed';
progress: number;
message: string;
workspaceId?: string;
workspaceName?: string;
error?: string;
}
/**
* Workspace Loading Callbacks
*/
export interface WorkspaceLoadingCallbacks {
onProgress?: (progress: WorkspaceLoadingProgress) => void;
onComplete?: (result: LoadWorkspaceResult) => void;
onError?: (error: string) => void;
}
/**
* Quick Render Options - simplified render interface using current workspace
*/
export interface QuickRenderOptions {
title?: string;
format?: 'mp4' | 'webm' | 'mov' | 'mxf';
codec?: string;
fps?: number;
uploadToMAM?: boolean;
}
/**
* Quick Render Result
*/
export interface QuickRenderResult {
success: boolean;
jobId?: string;
message: string;
error?: string;
}
/**
* Render Job Status
*/
export type RenderJobStatus = 'queued' | 'in-progress' | 'uploading' | 'completed' | 'failed' | 'cancelled';
/**
* Render Result from job status
*/
export interface RenderResult {
jobId: string;
status: RenderJobStatus;
progress?: number;
message?: string;
error?: string;
videoUrl?: string;
downloadUrl?: string;
mamAssetId?: number;
mamAssetUrl?: string;
mamAssetName?: string;
mamUploadSuccess?: boolean;
mamUploadError?: string;
startTime?: string;
endTime?: string;
renderTime?: number;
fileSize?: number;
format?: string;
}