Skip to content

Smelter

import Smelter from "@swmansion/smelter-web-wasm"

Smelter class is a primary way of interacting with the Smelter server.

Usage

To use Smelter follow this life cycle:

  • Create instance new Smelter().
  • Call await smelter.init().
  • (optional) Register inputs, outputs or other resources.
  • Call await smelter.start().
  • (optional) Register inputs, outputs or other resources.
  • At the end, call await smelter.terminate()

new Smelter()

Creates a new Smelter instance. You have to call init() first before this object can be used.

new Smelter(options: SmelterOptions)
Type definitions

type Framerate = { num: number; den: number; };
type SmelterOptions = {
framerate?: Framerate | number;
streamFallbackTimeoutMs: number;
};

init()

smelter.init(): Promise<void>

Initialize the Smelter instance.

After init() you can start connecting inputs/outputs or register other elements. However, no output stream will be produced until start() method is called.

start()

smelter.start(): Promise<void>

Starts the processing pipeline. Any previously registered output will start producing the video/audio stream.

registerOutput()

smelter.registerOutput(
outputId: string,
output: RegisterOutput,
): Promise<object>
Type definitions

export type RegisterOutput =
| {
type: 'stream';
video: {
resolution: Api.Resolution;
};
audio?: boolean;
}
| {
type: 'canvas';
video: {
canvas: HTMLCanvasElement;
resolution: Api.Resolution;
};
audio?: boolean;
}
| {
type: 'whip_client';
endpointUrl: string;
bearerToken?: string;
iceServers?: RTCConfiguration['iceServers'];
video: {
resolution: Api.Resolution;
maxBitrate?: number;
};
audio?: boolean;
};

Register external destination that can be used as a smelter output. Visit output documentation to learn more.

unregisterOutput()

smelter.unregisterOutput(outputId: string): Promise<void>

Unregister previously registered output.

registerInput()

smelter.registerInput(
inputId: string,
input: RegisterInput
): Promise<object>
Type definitions

type RegisterInput =
| { type: 'mp4'; url: string }
| { type: 'camera' }
| { type: 'screen_capture' }
| { type: 'stream'; stream: MediaStream }
| { type: 'whep_client'; endpointUrl: string; bearerToken?: string };

Register external source that can be used as a smelter input. Visit input documentation to learn more.

unregisterInput()

smelter.unregisterInput(inputId: string): Promise<void>

Unregister previously registered input.

registerImage()

import { Renderers } from "@swmansion/smelter"
smelter.registerImage(
imageId: string,
image: Renderers.RegisterImage,
): Promise<void>

Register an image asset. See RegisterImage to learn more.

unregisterImage()

smelter.unregisterImage(imageId: string): Promise<void>

Unregister a previously registered image asset.

registerShader()

import { Renderers } from "@swmnasion/smelter"
smelter.registerShader(
shaderId: string,
shader: Renderers.RegisterShader,
): Promise<void>

Register a shader. See RegisterShader to learn more.

unregisterShader()

smelter.unregisterShader(shaderId: string): Promise<void>

Unregister a previously registered shader.

registerFont()

smelter.registerFont(source: FontSource): Promise<void>
Type definitions

type FontSource = 'string' // URL

Register new font.

terminate()

smelter.terminate(): Promise<void>

Terminate the compositor instance.