ffmpeg-progress-wrapper
Version:
A simple wrapper that helps with determinng the progress of the ffmpeg conversion
78 lines (77 loc) • 2.28 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { ChildProcess } from "child_process";
import { Readable } from "stream";
import ProcessEnv = NodeJS.ProcessEnv;
export * from "./error";
export interface FFMpegProgressOptions {
cmd?: string;
cwd?: string;
env?: ProcessEnv;
duration?: number;
hideFFConfig?: boolean;
maxMemory?: number;
}
export interface IFFMpegFileDetails {
duration?: number;
bitrate?: number;
start?: number;
resolution?: {
width: number;
height: number;
};
fps?: number;
}
export interface IFFMpegProgressData {
speed: number | null;
eta: number | null;
time: number | null;
progress: number | null;
drop: number;
dup: number;
fps: number | null;
frame: number | null;
quality: number[][];
psnr: {
y: number | null;
u: number | null;
v: number | null;
all: number | null;
}[][];
size: number | null;
bitrate: number | null;
}
export interface IFFMpegProgress {
on(event: 'end', listener: (code: number | undefined, signal: string | undefined) => void): this;
on(event: 'details', listener: (file: IFFMpegFileDetails) => void): this;
on(event: 'progress', listener: (p: IFFMpegProgressData) => void): this;
on(event: 'raw', listener: (text: string) => void): this;
}
export declare class FFMpegProgress extends EventEmitter implements IFFMpegProgress {
private _args;
private _process;
private _details;
private _metadataDuration;
private _stderr;
private _isKilledByUser;
private _outOfMemory;
private _vitalsTimer;
private _vitalsMemory;
readonly options: FFMpegProgressOptions;
constructor(args: string[], options?: FFMpegProgressOptions);
private _progressCheck;
private _checkVitals;
kill(signal?: string): void;
stop(): void;
readonly details: IFFMpegFileDetails;
readonly stderrOutput: string;
readonly stdout: Readable;
readonly process: ChildProcess;
readonly args: string[];
onDone(): Promise<string>;
onDetails(): Promise<IFFMpegFileDetails>;
private processMetadataDuration;
private processInitialOutput;
private processProgress;
private processOutput;
}