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 | ArrayBufferRegister a new font, that can be used when rendering <Text> component.
terminate()
smelter.terminate(): Promise<void>Disconnect from the Smelter server instance.