streaming-frames

Installation
SKILL.md

Streaming Frames

Overview

stream_video / ovstream_stream_video is the per-frame entry point. It accepts a VideoFrame / ovstream_video_frame_t descriptor that discriminates on which fields are non-zero:

  • pitch_bytes > 0 → raw CUDA BGRA8 buffer. buffer points at GPU memory; the SDK reads it directly and encodes via NVENC. This is the path 95% of apps take.
  • size_bytes > 0 → pre-encoded bitstream (H.264 / H.265 / AV1, or a CUSTOM GStreamer-pipeline payload on RTSP). buffer is a host pointer to the encoded payload; the SDK packetizes and forwards without re-encoding. (Unlike raw CUDA, pre-encoded paths do not accept GPU-resident buffers.)
  • Both pitch_bytes == 0 and size_bytes == 0TENSOR input: buffer is a DLTensor* (DLPack) and width / height are also 0; the SDK reads shape, dtype, stride, and device from the DLTensor itself. Construct via VideoFrame.from_dlpack(obj) in Python (any framework that exposes __dlpack__ — Warp, PyTorch, JAX, CuPy). The server's configured video_input must be TENSOR.

The exception above aside, exactly one of pitch_bytes / size_bytes must be non-zero, and the choice must match the server's configured video_input.

Python

Source: examples/python/basic_stream/main.py snippet stream-loop

Construct a VideoFrame once, reuse the same buffer pointer across frames, mutate the buffer contents in place between calls.

Installs
1
GitHub Stars
8
First Seen
7 days ago
streaming-frames — nvidia-omniverse/ovstream