Skip to content

Smelter

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

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()
Example

import Smelter from "@swmansion/smelter-web-client"
async function run() {
const smelter = new Smelter({ url: "http://127.0.0.1:8081" });
await smelter.init()
// register inputs, outputs, or other resources e.g.
await smelter.registerOutput("example", <View />, {
type: "rtmp_client",
url: "rtmp://example.com/app/stream_key",
video: {
encoder: { type: "ffmpeg_h264" },
resolution: { width: 1920, height: 1080 },
},
audio: {
channels: "stereo",
encoder: { type: "aac" },
}
});
await smelter.start()
// you can register additional input/outputs at any point
}
void run();

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 SmelterOptions = {
url: string
}

init()

smelter.init(): Promise<void>

Initialize the Smelter instance. It will establish a connection to the Smelter server and reset its state.

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 @swmnasion/smelter-web-client

import {
RegisterRtpOutput,
RegisterMp4Output,
RegisterHlsOutput,
RegisterWhipClientOutput,
RegisterWhepServerOutput,
RegisterRtmpClientOutput,
} from "@swmasnion/smelter"
type RegisterOutput =
| ({ type: 'rtp_stream' } & RegisterRtpOutput)
| ({ type: 'mp4' } & RegisterMp4Output)
| ({ type: 'hls' } & RegisterHlsOutput)
| ({ type: 'whip_client' } & RegisterWhipClientOutput)
| ({ type: 'whep_server' } & RegisterWhepServerOutput)
| ({ type: 'rtmp_client' } & RegisterRtmpClientOutput);

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

import {
RegisterRtpInput,
RegisterMp4Input,
RegisterHlsInput,
RegisterWhipServerInput,
RegisterWhepClientInput,
RegisterRtmpServerInput,
} from "@swmasnion/smelter"
type RegisterInput =
| ({ type: 'rtp_stream' } & RegisterRtpInput)
| ({ type: 'mp4' } & RegisterMp4Input)
| ({ type: 'hls' } & RegisterHlsInput)
| ({ type: 'whip_server' } & RegisterWhipServerInput)
| ({ type: 'whep_client' } & RegisterWhepClientInput);
| ({ type: 'rtmp_server' } & RegisterRtmpServerInput);

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.

registerWebRenderer()

import { Renderers } from "@swmansion/smelter"
Smelter.registerWebRenderer(
instanceId: string,
instance: Renderers.RegisterWebRenderer,
): Promise<object>

Register a web renderer instance. See RegisterWebRenderer to learn more.

unregisterWebRenderer()

smelter.unregisterWebRenderer(instanceId: string): Promise<void>

Unregister a previously registered web renderer.

registerFont()

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

type FontSource =
| 'string' // URL
| ArrayBuffer

Register a new font, that can be used when rendering <Text> component.

terminate()

smelter.terminate(): Promise<void>

Disconnect from the Smelter server instance.