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' // URLRegister new font.
terminate()
smelter.terminate(): Promise<void>Terminate the compositor instance.