mfx
Version:
In-browser video editing toolkit, with effects accelerated by WebGL
48 lines (47 loc) • 1.75 kB
TypeScript
/// <reference types="dom-webcodecs" />
import { MFXTransformStream } from "./stream";
import { ExtendedVideoFrame } from "./frame";
import { MP4ContainerEncoder } from "./container/mp4/MP4ContainerEncoder";
import { WebMContainerEncoder } from "./container/webM/WebMContainerEncoder";
import { GIFContainerEncoder } from "./container/gif/GIFContainerEncoder";
import type { MFXEncodedChunk } from "./types";
import type { ContainerEncoderConfig } from "./container/encoderConfig";
export { MP4ContainerEncoder, WebMContainerEncoder, GIFContainerEncoder };
/**
* @group Encode
*/
export interface MFXVideoEncoderConfig extends VideoEncoderConfig {
/**
* Encodes a frame as keyframe every nth second (in seconds)
* Set to `Infinity` to disable periodic keyframes
* @default 30 */
keyframeEveryNthSecond?: number;
}
/**
* @group Encode
*/
export declare const encode: ({ mimeType, video, audio, ...config }: {
mimeType: string;
video?: Omit<MFXVideoEncoderConfig, "codec"> & {
stream: MFXTransformStream<any, VideoFrame> | ReadableStream<VideoFrame>;
codec?: string;
};
audio?: Omit<AudioEncoderConfig, "codec"> & {
stream: MFXTransformStream<any, AudioData> | ReadableStream<AudioData>;
codec?: string;
};
} & Omit<ContainerEncoderConfig, "video" | "audio">) => any;
/**
* @group Encode
*/
export declare class MFXVideoEncoder extends MFXTransformStream<ExtendedVideoFrame, MFXEncodedChunk> {
get identifier(): string;
constructor(config: MFXVideoEncoderConfig);
}
/**
* @group Encode
*/
export declare class MFXAudioEncoder extends MFXTransformStream<AudioData, MFXEncodedChunk> {
get identifier(): string;
constructor(config: AudioEncoderConfig);
}