[isaacsim.streaming.rtsp] RTSP Streaming OmniGraph Nodes#
Version: 0.1.3
Overview#
The isaacsim.streaming.rtsp extension provides RTSP streaming for camera render products in Isaac Sim. It captures rendered frames through a Replicator writer and publishes them over RTSP via omni.kit.livestream.rtsp. OmniGraph nodes are included for graph-based streaming setup. External clients can connect with any standard RTSP player using rtsp://<host>:<port><mountPath>.
Usage#
The extension is not enabled by default in the Isaac Sim full application. Enable it explicitly from the Extension Manager or start Isaac Sim with --enable isaacsim.streaming.rtsp when RTSP streaming is needed.
Functionality#
The extension registers RTSPStreamWriter with the Replicator WriterRegistry on startup. The writer supports two encoding modes: pre-encoded H.264 with per-frame SEI metadata injection, and raw CUDA buffer passthrough where encoding is handled by the livestream backend. The RTSP server is started lazily on the first rendered frame and stopped when the writer detaches. Multiple simultaneous streams are supported when each stream uses a unique port and mount path.
Integration#
The extension depends on omni.replicator.core for frame capture and annotator management, omni.kit.livestream.core and omni.kit.livestream.rtsp for the RTSP server backend, and isaacsim.core.nodes for the OmniGraph writer node base class. Camera render products are created elsewhere in the application or graph and passed to the writer at attach time.
Enable Extension#
The extension can be enabled (if not already) in one of the following ways:
Define the next entry as an application argument from a terminal.
APP_SCRIPT.(sh|bat) --enable isaacsim.streaming.rtsp
Define the next entry under [dependencies] in an experience (.kit) file or an extension configuration (extension.toml) file.
[dependencies]
"isaacsim.streaming.rtsp" = {}
Open the Window > Extensions menu in a running application instance and search for isaacsim.streaming.rtsp.
Then, toggle the enable control button if it is not already active.
Python API#
RTSP Stream Writer#
- class RTSPStreamWriter(*args: Any, **kwargs: Any)#
Bases:
WriterReplicator Writer that streams LdrColor frames over RTSP.
Supports two modes controlled by the
encodingparameter:"h264"(default): The LdrColor annotator is requested withinit_params={"compression": "h264"}so the render pipeline produces H.264-encoded bytes. These are passed tostream_video_pre_encoded_with_metadata, and also have the ability to enable per-frame SEI metadata injection."raw": The LdrColor annotator delivers a CUDA RGBA buffer which is passed tostream_video_cuda_buffer. The kit-livestream RTSP backend handles encoding internally. Metadata injection is not supported in this mode.
The RTSP server is started lazily on the first rendered frame. Calling
detach()(which happens automatically whenBaseWriterNoderesets on timeline stop) shuts the server down cleanly.- Parameters:
port – RTSP server port (1 to 65535). Each simultaneous stream needs a unique port.
mountPath – RTSP mount path (e.g.
/stream); must start with/.encoding –
"h264"(default) for pre-encoded H.264 with metadata support,"raw"for uncompressed CUDA path.width – Frame width in pixels. Used to configure the RTSP server when encoding is
"h264"(the encoded byte-stream does not carry resolution). Ignored when encoding is"raw"since the resolution is read from the CUDA buffer shape.height – Frame height in pixels. See
width.sensorSetName – Optional SRTX sensor-set name passed to the LdrColor annotator through
init_params.
- Raises:
ValueError – If
port,mountPath, orencodingis invalid.
Render Variable Utilities#
USD render-product / render-var helpers for the RTSP streaming extension.
These helpers exist to satisfy omni.replicator.srtx’s AnnotatorSRTX.attach
validation, which requires that the AOV’s RenderVar prim already exists as
a child of the render product (matched by sourceName) before a Replicator
Writer is attached.
- ensure_render_var_on_product(
- stage: pxr.Usd.Stage,
- render_product_path: str,
- aov_name: str,
- compression_type: str,
Ensure a
RenderVarfor the given AOV exists as a child of the render product and is inorderedVars.The helper is authoritative for the
srtx:compression:typeattribute on the rendervar prim: any pre-existing value is overwritten withcompression_type(which may be the empty string, the canonical SRTX “no compression / raw” signal). The attribute is created if missing.- Parameters:
stage – The USD stage.
render_product_path – Path to the render product prim.
aov_name – The AOV source name to match or create.
compression_type – SRTX compression type to author on the rendervar’s
srtx:compression:typeattribute. Pass""for raw / no compression, or one of the SRTX-recognised codec names (e.g."h264","h265","hevc").
- Returns:
A
(success, rendervar_path)tuple. On failurerendervar_pathisNoneandsuccessisFalse.
Omnigraph Nodes#
The extension exposes the following Omnigraph nodes: