frameflow
Version:
Audio/Video stream processing library for JavaScript world
71 lines (70 loc) • 2.47 kB
TypeScript
/// <reference types="dom-webcodecs" />
import { ModuleType as FF, FrameInfo, StreamInfo, DataFormat } from './types/ffmpeg';
declare type WebPacket = EncodedVideoChunk | EncodedAudioChunk;
declare type WebFrame = VideoFrame | AudioData;
declare type WebEncoder = VideoEncoder | AudioEncoder;
declare type WebDecoder = VideoDecoder | AudioDecoder;
export declare class Packet {
FFPacket?: FF['Packet'];
WebPacket?: WebPacket;
dts: number;
mediaType: 'video' | 'audio';
constructor(pkt: FF['Packet'] | WebPacket, dts: number, mediaType: 'video' | 'audio');
get size(): number;
get duration(): number;
toFF(): import("./types/ffmpeg").Packet;
toWeb(): WebPacket;
close(): void;
}
export declare class Frame {
#private;
FFFrame?: FF['Frame'];
WebFrame?: WebFrame;
constructor(frame: FF['Frame'] | WebFrame | undefined, name: string);
get name(): string;
get pts(): number;
get frameInfo(): FrameInfo | {
format: string;
height: number;
width: number;
sampleRate: number;
channels: number;
channelLayout: string;
};
toFF(): Promise<import("./types/ffmpeg").Frame>;
toWeb(frameRate: number): WebFrame;
clone(): Frame;
close(): void;
}
export declare class Encoder {
#private;
encoder: FF['Encoder'] | WebEncoder;
streamInfo: StreamInfo;
outputs: WebPacket[];
/**
* @param useWebCodecs check `Encoder.isWebCodecsSupported` before contructor if `true`
*/
constructor(streamInfo: StreamInfo, useWebCodecs: boolean, muxFormat: string);
static isWebCodecsSupported(streamInfo: StreamInfo): Promise<boolean>;
toSupportedFormat(dataFormat: DataFormat): DataFormat;
get FFEncoder(): import("./types/ffmpeg").Encoder | undefined;
encode(frame: Frame): Promise<Packet[]>;
flush(): Promise<Packet[]>;
close(): void;
}
export declare class Decoder {
#private;
decoder: FF['Decoder'] | WebDecoder;
outputs: WebFrame[];
streamInfo: StreamInfo;
/**
* @param useWebCodecs check `Decoder.isWebCodecsSupported` before contructor if `true`
*/
constructor(demuxer: FF['Demuxer'] | null, name: string, streamInfo: StreamInfo, useWebCodecs?: boolean);
static isWebCodecsSupported(streamInfo: StreamInfo): Promise<boolean>;
get mediaType(): "video" | "audio";
decode(pkt: Packet): Promise<Frame[]>;
flush(): Promise<Frame[]>;
close(): void;
}
export {};