Skip to content

node-av / lib / Filter

Class: Filter

Defined in: src/lib/filter.ts:40

Filter descriptor for video/audio processing.

Represents a filter that can be used in filter graphs for processing audio and video frames. Filters can be sources (no inputs), sinks (no outputs), or processors (with both inputs and outputs). Each filter has specific capabilities and pad configurations.

Direct mapping to FFmpeg's AVFilter.

Example

typescript
import { Filter } from 'node-av';

// Get a specific filter
const scaleFilter = Filter.getByName('scale');
if (scaleFilter) {
  console.log(`Filter: ${scaleFilter.name}`);
  console.log(`Description: ${scaleFilter.description}`);
  console.log(`Inputs: ${scaleFilter.inputs.length}`);
  console.log(`Outputs: ${scaleFilter.outputs.length}`);
}

// List all video filters
const filters = Filter.getList();
const videoFilters = filters.filter(f => f.isVideo());
console.log(`Found ${videoFilters.length} video filters`);

See

Implements

Constructors

Constructor

new Filter(native): Filter

Defined in: src/lib/filter.ts:48

Internal

Parameters

native

NativeFilter

The native filter instance

Returns

Filter

Accessors

description

Get Signature

get description(): null | string

Defined in: src/lib/filter.ts:131

Filter description.

Human-readable description of what the filter does.

Direct mapping to AVFilter->description.

Returns

null | string


flags

Get Signature

get flags(): number

Defined in: src/lib/filter.ts:166

Filter flags.

Combination of AVFILTER_FLAG_* values indicating filter capabilities.

Direct mapping to AVFilter->flags.

Returns

number


inputs

Get Signature

get inputs(): FilterPad[]

Defined in: src/lib/filter.ts:143

Input pads.

Array of input pad descriptors. Empty array for source filters.

Direct mapping to AVFilter->inputs.

Returns

FilterPad[]


name

Get Signature

get name(): null | string

Defined in: src/lib/filter.ts:120

Filter name.

Unique identifier for the filter (e.g., 'scale', 'overlay').

Direct mapping to AVFilter->name.

Returns

null | string


outputs

Get Signature

get outputs(): FilterPad[]

Defined in: src/lib/filter.ts:155

Output pads.

Array of output pad descriptors. Empty array for sink filters.

Direct mapping to AVFilter->outputs.

Returns

FilterPad[]

Methods

getNative()

getNative(): NativeFilter

Defined in: src/lib/filter.ts:257

Internal

Get the underlying native Filter object.

Returns

NativeFilter

The native Filter binding object

Implementation of

NativeWrapper.getNative


isAudio()

isAudio(): boolean

Defined in: src/lib/filter.ts:246

Check if filter processes audio.

Returns

boolean

True if filter has audio inputs or outputs

Example

typescript
const filters = Filter.getList();
const audioFilters = filters.filter(f => f.isAudio());
console.log(`Audio filters: ${audioFilters.length}`);

See

isVideo To check for video filters


isSink()

isSink(): boolean

Defined in: src/lib/filter.ts:210

Check if filter is a sink.

Sink filters consume frames without output (e.g., 'nullsink', 'buffersink').

Returns

boolean

True if filter has no outputs

Example

typescript
const filter = Filter.getByName('nullsink');
if (filter?.isSink()) {
  console.log('This is a sink filter');
}

See

isSource To check for source filters


isSource()

isSource(): boolean

Defined in: src/lib/filter.ts:188

Check if filter is a source.

Source filters generate frames without input (e.g., 'testsrc', 'color', 'anullsrc').

Returns

boolean

True if filter has no inputs

Example

typescript
const filter = Filter.getByName('testsrc');
if (filter?.isSource()) {
  console.log('This is a source filter');
}

See

isSink To check for sink filters


isVideo()

isVideo(): boolean

Defined in: src/lib/filter.ts:228

Check if filter processes video.

Returns

boolean

True if filter has video inputs or outputs

Example

typescript
const filters = Filter.getList();
const videoFilters = filters.filter(f => f.isVideo());
console.log(`Video filters: ${videoFilters.length}`);

See

isAudio To check for audio filters


getByName()

static getByName(name): null | Filter

Defined in: src/lib/filter.ts:78

Get a filter by name.

Retrieves a specific filter descriptor by its name. Common filter names include 'scale', 'crop', 'overlay', 'aformat', etc.

Direct mapping to avfilter_get_by_name().

Parameters

name

string

Name of the filter

Returns

null | Filter

Filter instance if found, null otherwise

Example

typescript
// Get video scaling filter
const scale = Filter.getByName('scale');
if (!scale) {
  throw new Error('Scale filter not available');
}

// Get audio format filter
const aformat = Filter.getByName('aformat');

See

getList To list all available filters


getList()

static getList(): Filter[]

Defined in: src/lib/filter.ts:108

Get list of all available filters.

Returns an array of all registered filters in FFmpeg. Useful for discovering available filters or building filter lists.

Returns

Filter[]

Array of all available filters

Example

typescript
// List all filters
const filters = Filter.getList();
console.log(`Total filters: ${filters.length}`);

// Find all source filters (generators)
const sources = filters.filter(f => f.isSource());
console.log(`Source filters: ${sources.length}`);

// Find all sink filters (outputs)
const sinks = filters.filter(f => f.isSink());
console.log(`Sink filters: ${sinks.length}`);

See

getByName To get a specific filter