Skip to content

RTP

An input type that allows streaming video and audio to the Smelter server over RTP. It supports both streaming over UDP and TCP (smelter works as a TCP server).

rtpInputExample.tsx
import Smelter from "@swmansion/smelter-node";
async function run() {
const smelter = new Smelter();
await smelter.init();
await smelter.registerInput("example", {
type: "rtp_stream",
port: 8001,
transportProtocol: "tcp_server",
video: { decoder: "ffmpeg_h264" },
audio: { decoder: "opus" }
});
// At this point you can connect to 8001 TCP port
// and start sending RTP traffic
}
void run();

RegisterRtpInput

import { RegisterRtpInput } from "@swmansion/smelter"

Parameters for an input stream from RTP source. At least one of video and audio has to be defined.

Type definitions

type RegisterRtpInput = {
port: string | number;
transportProtocol?: "udp" | "tcp_server";
video?: Inputs.InputRtpVideoOptions;
audio?: Inputs.InputRtpAudioOptions;
required?: bool;
offsetMs?: number;
}

Properties

port

UDP port or port range for the smelter to listen to incoming streams.

  • Type: string | number

transportProtocol

UDP port or port range for the smelter to listen to incoming streams.

  • Type: "udp" | "tcp_server"
  • Supported values:
    • udp - UDP protocol.
    • tcp_server - TCP protocol where Smelter is the server side of the connection.

video

Parameters of a video included in the RTP stream.


audio

Parameters of an audio source included in the RTP stream.


required

Determines if the input stream is essential for output frame production. If set to true and the stream is delayed, Smelter will postpone output frames until the stream is received.

  • Type: boolean
  • Default value: false

offsetMs

Offset in milliseconds relative to the pipeline start (start request). If unspecified, the stream synchronizes based on the delivery time of the initial frames.

  • Type: number

Inputs.InputRtpVideoOptions

import { Inputs } from "@swmansion/smelter"

Parameters of a video source included in the RTP stream.

Type definitions

type InputRtpVideoOptions = {
decoder: "ffmpeg_h264";
}

Properties

decoder

UDP port or port range for the smelter to listen to incoming streams.

  • Type: "ffmpeg_h264"

Inputs.InputRtpAudioOptions

import { Inputs } from "@swmansion/smelter"

Parameters of a audio source included in the RTP stream.

Type definitions

type InputRtpAudioOptions =
| {
decoder: "opus";
forwardErrorCorrection?: bool;
}
| {
decoder: "aac";
audioSpecificConfig: string;
rtpMode?: "low_bitrate" | "high_bitrate";
}

Properties (decoder: “opus”)

forwardErrorCorrection

Specifies whether the stream uses forward error correction. It’s specific for the Opus codec. For more information, visit RFC specification.

  • Type: string

Properties (decoder: “aac”)

audioSpecificConfig

Configuration encoded in the format described in RFC 3640.

  • Type: boolean
  • Default value: false

For detailed instructions on obtaining this value, refer to the information provided in the table below:

Format/ProtocolLocation of AAC Specific Config (ASC)Notes
FFmpeg StreamingSDP fileUse the -sdp_file FILENAME option when streaming to a smelter to generate an SDP file containing the ASC.
MP4 FilesInside the esds boxThe ASC is embedded as part of the esds box, not the entire box. Applies to regular MP4 and fragmented MP4s (used in HLS playlists with MP4 files).
FLV Files / RTMPInside the AACAUDIODATA tagThe ASC is contained within the AACAUDIODATA tag.

rtpMode

Specifies the RFC 3640 mode that should be used when depacketizing this stream. For more information, visit RFC specification

  • Type: "low_bitrate" | "high_bitrate"
  • Default value: "high_bitrate"