import { HashAlgorithmEnum } from '../../types/hash.types'; export type FFFSPath = string; export type FFmpegCoreModule = any; export type FFmpegCoreModuleFactory = any; /** * ffmpeg-core loading configuration. */ export interface FFMessageLoadConfig { /** * `ffmpeg-core.js` URL. * * @defaultValue `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`; */ coreURL: string; /** * `ffmpeg-core.wasm` URL. * * @defaultValue `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.wasm`; */ wasmURL: string; /** * `ffmpeg-core.worker.js` URL. * * @defaultValue `https://unpkg.com/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js`; */ workerURL?: string; } export interface FFMessageRenderSettings { width: number; height: number; framerate: number; hardwareAcceleration: HardwareAcceleration; bitrate: number; bitrateMode: VideoEncoderBitrateMode; latencyMode: LatencyMode; outputPath?: string; codec?: "h264" | "vp8" | "vp9"; forcedCodecRFCString?: string; useWebCodecsVideoEncoder?: boolean; hasAlpha?: boolean; deadline?: number; crf?: number; keyframeInterval?: number; useChunkedOutput?: boolean; chunkedOutputMaxSize?: number; } export interface FFMessageChunkedMuxData { videoFiles: string[]; audioMix: string; from: number; to: number; extension: string; } export interface FFMessageFrameData { data: Uint8Array; } export interface FFMessageFrame { frame: VideoFrame; } export interface FFMessageInitDemuxerData { id: string; path: FFFSPath; } export interface FFMessageSeekDemuxerData { id: string; time: number; } export interface FFMessageIdDemuxerData { id: string; } export interface FFMessageInitAudioDemuxerData { id: string; path: FFFSPath; audioStream: number; } export interface FFMessageSeekAudioDemuxerData { id: string; time: number; } export interface FFMessageIdAudioDemuxerData { id: string; } export interface FFMessageMuxerData { packet: Uint8Array; timestamp: bigint; duration: bigint; isKeyFrame: boolean; } export interface FFMessageInitMuxerData { path: FFFSPath; width: number; height: number; framerate: number; codec: string; bitrate: number; codecRFC: string; chunkedOutput: boolean; maxChunkSize: number; } export interface FFMessageTranscodeData { inputPath: FFFSPath; outputPath: FFFSPath; bitrateFactor: number; } export interface FFMessageExecData { args: string[]; timeout?: number; } export interface FFMessagePathExistsData { path: FFFSPath; } export interface FFMessageWriteFileData { path: FFFSPath; data: FileData; } export interface FFMessageReadFileData { path: FFFSPath; encoding: string; } export interface FFMessageReadFilesAsBlobData { paths: FFFSPath[]; mimeType?: string; } export interface FFMessageDeleteFileData { path: FFFSPath; } export interface FFMessageRenameData { oldPath: FFFSPath; newPath: FFFSPath; } export interface FFMessageCreateDirData { path: FFFSPath; } export interface FFMessageListDirData { path: FFFSPath; } export interface FFMessageGetInfoData { path: FFFSPath; } export interface FFMessageGetHashData { path: FFFSPath; algorithm: HashAlgorithmEnum; } export interface FFMessageGetSubtitlesData { path: FFFSPath; } export interface FFMessageAuthentificateData { licensee: string; key: string; } export interface FFMessageFetchTSChunksData { urls: string[]; } export interface FFMessageCreateArchiveData { path: FFFSPath; } export interface FFMessageOpenArchiveData { path: FFFSPath; } export interface FFMessageSaveArchiveData { id: number; } export interface FFMessageCloseArchiveData { id: number; } export interface FFMessageAddDataToArchiveData { id: number; path: FFFSPath; data: Uint8Array; } export interface FFMessageReadFileFromArchiveData { id: number; path: FFFSPath; } export interface FFMessageExtractAllFromArchiveData { id: number; path: FFFSPath; } export interface FFMessageAddFileToArchiveData { id: number; path: FFFSPath; targetDirectory: FFFSPath; } export interface FFMessageAddFilesToArchiveData { id: number; paths: FFFSPath[]; targetDirectory: FFFSPath; } export interface FFMessageListFilesFromArchiveData { id: number; } export interface FFMessageExtractFileFromArchiveData { id: number; fromPath: FFFSPath; toPath: FFFSPath; } /** * @remarks * Only deletes empty directory. */ export interface FFMessageDeleteDirData { path: FFFSPath; } export declare enum FFFSType { MEMFS = "MEMFS", NODEFS = "NODEFS", NODERAWFS = "NODERAWFS", IDBFS = "IDBFS", WORKERFS = "WORKERFS", PROXYFS = "PROXYFS" } export type WorkerFSFileEntry = File; export interface WorkerFSBlobEntry { name: string; data: Blob; } export interface WorkerFSMountData { blobs?: WorkerFSBlobEntry[]; files?: WorkerFSFileEntry[]; } export type FFFSMountOptions = WorkerFSMountData; export interface FFMessageMountData { fsType: FFFSType; options: FFFSMountOptions; mountPoint: FFFSPath; } export interface FFMessageUnmountData { mountPoint: FFFSPath; } export type FFMessageData = FFMessageLoadConfig | FFMessageExecData | FFMessageWriteFileData | FFMessageReadFileData | FFMessageReadFilesAsBlobData | FFMessageDeleteFileData | FFMessageRenameData | FFMessageCreateDirData | FFMessageListDirData | FFMessageDeleteDirData | FFMessageMountData | FFMessageUnmountData | FFMessageGetInfoData | FFMessageGetSubtitlesData | FFMessageFrameData | FFMessageFrame | FFMessageRenderSettings | FFMessageChunkedMuxData | FFMessageInitDemuxerData | FFMessageSeekDemuxerData | FFMessageIdDemuxerData | FFMessageInitAudioDemuxerData | FFMessageSeekAudioDemuxerData | FFMessageIdAudioDemuxerData | FFMessageMuxerData | FFMessageAuthentificateData | FFMessageFetchTSChunksData | FFMessageTranscodeData | FFMessageCreateArchiveData | FFMessageOpenArchiveData | FFMessageSaveArchiveData | FFMessageCloseArchiveData | FFMessageAddDataToArchiveData | FFMessageReadFileFromArchiveData | FFMessageExtractAllFromArchiveData | FFMessageAddFileToArchiveData | FFMessageAddFilesToArchiveData | FFMessageListFilesFromArchiveData | FFMessageExtractFileFromArchiveData | FFMessagePathExistsData; export interface Message { type: string; data?: FFMessageData; } export interface FFMessage extends Message { id: number; } export interface FFMessageEvent extends MessageEvent { data: FFMessage; } export interface LogEvent { type: string; message: string; } export interface ProgressEvent { progress: number; time: number; } export interface DemuxerPacket { packet: Uint8Array; isKeyFrame: boolean; timestamp: bigint; duration: bigint; } export interface AudioDemuxerPacket { packet: Uint8Array; timestamp: bigint; duration: bigint; } export type ExitCode = number; export type ErrorMessage = string; export type FileData = Uint8Array | string; export type IsFirst = boolean; export type OK = boolean; export interface FSNode { name: string; isDir: boolean; } export type CallbackData = FileData | Blob | ExitCode | ErrorMessage | LogEvent | ProgressEvent | IsFirst | OK | Error | FSNode[] | undefined | object | null; export interface Callbacks { [id: number | string]: (data: CallbackData) => void; } export type LogEventCallback = (event: LogEvent) => void; export type ProgressEventCallback = (event: ProgressEvent) => void; export interface FFMessageEventCallback { data: { id: number; type: string; data: CallbackData; }; }