Camera Inputs

Last validated: 2026-05-05

Camera inputs are configured on video entities in Oden Streamer. Use this page when you need to add a camera, choose the correct input type, or tune the capture settings before configuring encoding and network output.

Choose an input type

Pick the input type from the source you need to receive. Some entries are only shown when the current Oden build includes the required feature or SDK.

Task Input type in Oden Use when Key settings

Receive an IP camera

RTSP

The camera exposes an rtsp:// stream and hardware decoding is available.

URL, Codec, Username, Password

Receive RTP video

RTP

A sender transmits H.264, H.265, or MJPEG over UDP to Oden.

Port, Codec

Use a custom GStreamer pipeline

GStreamer Pipeline

You already know the GStreamer source pipeline or need a source not covered by a simpler input.

Pipeline, HW Decode, Codec, Sync On Sink

Receive SRT

SRT

A sender uses SRT and the build includes GStreamer SRT support.

SRT connection settings, HW Decode, Codec, pipeline latency

Use a USB webcam on Linux

V4L2

The camera appears as a Video4Linux2 device.

Device, Pixel Format, Resolution, Frame Rate, Controls

Use a Windows capture device

Direct Show

The camera or capture card is exposed through Windows DirectShow.

Device Name, Resolution, Pixel Format, Capture Rate, Frame Rate

Use FLIR or Point Grey cameras

FLIR (Spinnaker)

The camera is supported by the Spinnaker SDK.

Device, Resolution, Pixel Format, Auto Frame Rate, exposure, gain, white balance

Use GigE Vision cameras

GigE

The camera is discovered on the network as a GigE Vision device.

Camera selection, pixel format, access mode, capture type, GenICam settings

Use USB3 Vision cameras

USB3

The camera is a USB3 Vision device and the internal USB3 capture feature is available.

Allow Slow Cameras, camera selection, GenICam settings

Use Lucid Arena cameras

Lucid (Arena)

The camera is supported by Lucid Arena.

Auto Reconnect, device or IP, size, pixel format, frame rate, exposure

Use IDS cameras

IDS

The build includes IDS support.

Camera serial, capture rate, exposure, gain, white balance, AOI

Use Jetson CSI cameras

Argus

The streamer runs on NVIDIA Jetson with Argus support.

Camera, Mode, exposure, gain, AWB, denoise, edge enhance, camera crop

Capture the desktop

Display Capture

You need a monitor or application output as a video source.

Cursor, Monitor

Use a generated placeholder

Test Source

You need a known signal while configuring layouts or encoders.

Resolution, Pattern

Use an image as video

Image

You need a static .png, .jpg, or .jpeg source.

Image file

Reuse another Oden video stream

Clone Stream

Another entity already receives the source and you want to display or process it again.

Follow Video, Focus Region, sync settings, Copy To Texture, hard crop

Receive NDI

NDI

The source is published on the network with NDI.

Source, Quality

Receive Spout on Windows

Spout

Another Windows application shares a GPU texture through Spout.

Source, Use Alpha Channel, Log Spout Messages

Play a file or URL through FFmpeg

File, HLS, RTMP, or FFmpeg

The source is a media file, HLS playlist, RTMP stream, or custom FFmpeg input.

URL, Input Format, HW Acceleration, Live Source, Loop, Auto Start

Use a plugin capture

Plugin video capture

A loaded Oden plugin registers its own video capture type.

Plugin-defined options

Add an input

  1. Open the video entity that should receive the camera.

  2. Expand Input or Inputs.

  3. If the entity has no input, select Add Input.

  4. In Type, choose the source type from the table above.

  5. Configure the source-specific fields.

  6. Start the input if it has a Start button.

  7. Confirm that Texture shows a live preview and that the input header reports the expected resolution and frame rate.

  8. Set Id to a stable, meaningful name and color.

Keep input names consistent with the physical camera layout, for example front_left, front_center, and rear. This makes later camera-rig, crop, and stream troubleshooting easier.

Configure common input behavior

Every active video input can show a texture preview. Hover the preview for a larger view, or pop it out if you need to inspect focus or exposure while changing settings.

Most input types also expose image-transfer, crop, vignetting, delay, and visibility controls after the capture-specific fields. Use those controls after the camera is receiving frames.

  • Use Delay only to align inputs that are consistently offset from each other.

  • Use Crop or Crop and Vignetting for display and calibration adjustments.

  • Use Save texture when you need a still image for support, calibration checks, or documentation.

  • Use Visible In Eye only for stereo setups where a source should appear in one eye.

Configure network cameras

RTSP

Use RTSP for IP cameras that expose a direct RTSP URL.

  1. Set Type to RTSP.

  2. Set Codec to match the camera stream.

  3. Enter the stream URL, for example rtsp://192.168.0.20:8554/live.

  4. Enter Username and Password if the camera requires credentials.

  5. Enable or disable video and audio receive options when the build exposes separate controls for them.

  6. Select Start.

If the stream does not start, verify the codec first. The dedicated RTSP and RTP inputs are NVDEC-based in the code, so they are only available in builds with the NVIDIA decode path enabled. When using the GStreamer RTSP path, use Convert To Raw GStreamer Pipeline after the simple RTSP setup works if you need to inspect or customize the generated pipeline.

RTP

Use RTP when another process sends encoded video directly to a UDP port.

  1. Set Type to RTP.

  2. Select the incoming Codec.

  3. Set Port to the UDP port used by the sender.

  4. Select Start.

If you need RTP with a GStreamer mux, choose RTP (GStreamer) instead and set Listen Port, Codec, and Mux.

GStreamer Pipeline

Use GStreamer Pipeline when you need full control over the receive pipeline. Oden sends the pipeline into odenvideosink; you can include ! odenvideosink processing-deadline=0 yourself or let Oden append it.

  1. Set Type to GStreamer Pipeline.

  2. Enter the source pipeline in Pipeline.

  3. Enable HW Decode only when the pipeline receives encoded video that should be decoded by Oden.

  4. Set Codec when HW Decode is enabled.

  5. Open Advanced if you need startup coordination or sink timing.

  6. Select Start.

Use Exclusive Start when several pipelines compete for camera, decoder, or network resources during project load. Lower Exclusive Start Priority values start earlier, and Exclusive Start Duration controls the spacing between starts.

For live sources, keep Sync On Sink disabled unless you need the GStreamer timestamps to control presentation. For prerecorded or buffered sources, enabling Sync On Sink can make playback timing more stable.

You can also use GStreamer when a camera feed must be shared with another process before it enters Oden. On Jetson, use zero-copy IPC when available so the camera frames stay in GPU memory. For example, a camera process can publish frames through nvunixfdsink, and Oden Streamer can receive them through a GStreamer Pipeline input using nvunixfdsrc. On JetPack 5, the nvunixfd plugin is bundled with the Streamer installer. On JetPack 6 and newer, install DeepStream or build voysys/nvunixfd and place the plugin .so in the GStreamer plugin path.

Publish a Jetson test source with nvunixfd
gst-launch-1.0 -e -v videotestsrc is-live=true pattern=smpte ! \
  video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! \
  nvvidconv ! \
  "video/x-raw(memory:NVMM),format=UYVY,width=1280,height=720,framerate=30/1" ! \
  nvunixfdsink socket-path=/tmp/nvunixfd.sock
Receive the shared frames in an Oden GStreamer Pipeline input
nvunixfdsrc socket-path=/tmp/nvunixfd.sock buffer-timestamp-copy=true ! \
  video/x-raw(memory:NVMM),format=UYVY,width=1280,height=720,framerate=30/1

Disable HW Decode for this pipeline because the data is raw GPU memory, not encoded video.

On JetPack 6 and newer, the source build path is:

git clone https://github.com/voysys/nvunixfd.git
cd nvunixfd
make
sudo cp ./*.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/

If the Streamer runs in Docker, the same GStreamer plugin must be available inside the container. Bake it into the image or mount the .so from the host.

ROS and ROS 2 can work for proof-of-concept testing, but they add latency and Oden does not ship built-in ROS capture support. Avoid ROS as the production video path unless the added latency has been accepted for the deployment.

SRT

Use SRT when the camera or gateway sends SRT through GStreamer. Set the SRT connection mode and address fields, choose the codec, and start the input. In Advanced, increase Pipeline Latency if the connection is unstable.

Configure local capture devices

V4L2 on Linux

  1. Set Type to V4L2.

  2. Select the Device.

  3. Select Pixel Format.

  4. Select or enter Resolution.

  5. Select or enter Frame Rate.

  6. Select Start.

Use Advanced when the device needs non-default open behavior:

  • Blocking Mode waits for frames and can help cameras that fail with non-blocking reads.

  • Retry Until Success keeps trying to connect when the camera may not be ready at startup.

  • Use Custom Path lets you enter a path such as /dev/v4l/by-id/<device> or another V4L2 node.

  • Enable Timeouts and Max Timeouts control how many read timeouts are tolerated before the capture stops.

After the input starts, open Controls to tune camera-specific V4L2 controls such as exposure, brightness, contrast, or menu selections. Use Reset All Settings if the camera controls need to return to their defaults.

Direct Show on Windows

  1. Set Type to Direct Show.

  2. Select Device Name.

  3. Select Resolution.

  4. Select Pixel Format.

  5. Select the available Capture Rate range.

  6. Set Frame Rate when the selected range allows it.

  7. Leave Retry enabled if the device may disconnect and reconnect.

Use Rescan Devices after plugging in a new capture device. Use Rescan And Show All Devices only when a device is hidden by the recommended-device filter.

If Oden has a dedicated input for a source, prefer that over Direct Show. The Direct Show UI explicitly warns against using it for sources such as NDI and DeckLink when a better dedicated path exists.

Configure industrial cameras

FLIR (Spinnaker)

  1. Set Type to FLIR (Spinnaker).

  2. Enable Try to Reconnect if the camera may be unplugged or powered late.

  3. Select Rescan Devices or Rescan Devices and Interfaces if the camera is missing.

  4. Select Device.

  5. Select Resolution or enable Custom Resolution and set Width and Height.

  6. Select Pixel Format.

  7. Use Auto Frame Rate unless you need to force a lower rate.

  8. Select Start.

Use Advanced for sensor tuning:

  • Center Image, Offset X, and Offset Y control where a reduced image area is read from the sensor.

  • Binning reduces transmitted data while using a larger part of the sensor.

  • Auto Exposure, Exposure Time, Gain, and Auto Exposure Limits control brightness and frame-rate behavior.

  • Auto WB, Red Balance, and Blue Balance control white balance.

  • Buffer Count should normally stay at its default unless support asks you to change it.

  • Reset on Startup and Reset Camera are recovery tools for cameras stuck in a bad state.

GigE Vision

  1. Set Type to GigE.

  2. Select the discovered camera.

  3. Select the pixel format and start the input.

  4. Open Network Settings when packet loss, multicast, or adapter selection needs tuning.

Important GigE settings:

  • Access Mode controls whether Oden opens the camera exclusively or monitors an existing stream.

  • Multicast Interface IP selects the local interface for multicast.

  • Capture Type chooses the packet capture backend: socket, pcap, or Oden filter driver when available.

  • Restart On Stall lets Oden reconnect when frame delivery stops.

  • Frame Completion controls how incomplete frames are handled.

  • Camera Settings exposes GenICam controls and a device reset command.

USB3 Vision

Use USB3 for USB3 Vision devices in internal builds that include USB3 capture. Install UsbDk on Windows if Oden reports that it is missing. Select the camera, configure GenICam settings, and start the input. Enable Allow Slow Cameras only for devices that cannot meet the expected USB3 throughput.

Lucid (Arena)

  1. Set Type to Lucid (Arena).

  2. Leave Auto Reconnect enabled for deployed systems.

  3. Select Rescan Devices if the camera is missing.

  4. Select a discovered device or enter the camera IP.

  5. Set Width and Height.

  6. Select Pixel Format.

  7. Use Auto Frame Rate or set Frame Rate manually.

  8. Open Advanced for offsets, exposure, gain, white balance, and buffer count.

  9. Select Start.

Argus on Jetson

Use Argus for NVIDIA Jetson camera modules. Select the Camera, select the sensor Mode, and start the input. After the camera starts, tune auto exposure, exposure time, analog and digital gain, exposure compensation, AWB mode, white-balance gain, saturation, optical black, antibanding, denoise, and edge enhance as needed. Use Camera Crop before start when the sensor mode supports cropping.

Configure utility inputs

Clone Stream

Use Clone Stream when one source needs to be reused in another entity. Select the source in Follow Video.

Enable Focus Region when the clone should expose a smaller focus area for packing or monitoring. Enable Copy To Texture when you need independent filtering or hard crop on the clone. Without Copy To Texture, the clone uses the original source texture. Use Hard Crop only when the clone should produce a physically cropped texture instead of only reporting a focus region.

Display Capture

Use Display Capture to capture a monitor. On Windows, Cursor controls whether the pointer is included and Monitor selects the display. On Linux, Oden uses an X11 GStreamer capture pipeline.

Test Source

Use Test Source to verify layout, packing, encoding, and network output before connecting real cameras. Set Resolution and Pattern. Some static patterns can trigger drop detection, so disable drop-sensitive checks when intentionally using a static pattern.

Use Encoder Test when you need a harder-to-encode generated source. It renders a colorful noise-based sphere and exposes settings such as noise amount, noise frequency, and animation speed. The extra detail is useful when checking encoder quality, bitrate control, and packet-loss behavior.

Image

Use Image for static visual checks. Select a .png, .jpg, or .jpeg file. Alpha is supported for formats that carry transparency.

File, HLS, RTMP, and FFmpeg

Use the FFmpeg-backed inputs for prerecorded files, HLS playlists, RTMP streams, or custom FFmpeg input strings. Set URL to the file path or stream URL, set Input Format when auto-detection is not enough, and choose hardware acceleration only when the deployed GPU and driver have been validated. Enable Live Source for sources that should be treated as realtime. Enable Loop for prerecorded files used as repeatable tests. Enable Auto Start when the source should start as soon as the project opens.

NDI and Spout

Use NDI for network NDI sources. Select the source and set Quality.

Use Spout on Windows for GPU texture sharing from another application. Select Source, then set Use Alpha Channel and Log Spout Messages only when needed. Open Info to inspect whether the transfer path stays on the GPU or goes through CPU memory. Spout is a same-machine Windows GPU sharing path, so validate that the sending application and Oden run on the same GPU when avoiding CPU copies matters.

Project-file names

In .vproj files, the input backend is stored in the capture group as impl. The value is the snake_case form of the C++ input enum.

Oden UI name .vproj impl Notes

No Input

unspecified

GStreamer Pipeline, RTP (GStreamer), RTSP (GStreamer), SRT, Display Capture, Test Source

gstreamer

The subtype is stored in gui_settings.type as pipeline, rtp, rtsp, srt, screencap, or video_test_src.

RTSP

rtsp

Dedicated NVDEC-based RTSP input.

RTP

rtp

Dedicated NVDEC-based RTP input.

FFmpeg, File, HLS, RTMP

ffmpeg

The subtype is selected by input_format and related FFmpeg settings.

V4L2

v4l2

Linux only.

Direct Show

dshow

Windows only.

FLIR (Spinnaker)

spinnaker

GigE

gig_e

USB3

usb3

Internal USB3 capture builds only.

Lucid (Arena)

lucid

IDS

ids

Argus

argus

Jetson only.

Clone Stream

clone

NDI

ndi

Spout

spout

Windows only.

Image

image

Encoder Test

encoder_test

OpenVR

open_vr

Plugin video capture

plugin

Uses plugin type_id, type_name, and plugin-defined options.

Minimal GStreamer pipeline example
capture : {
    impl : "gstreamer";
    pipeline : "videotestsrc is-live=true ! video/x-raw,width=1280,height=720,framerate=30/1";
    use_nvdec : false;
};

Prefer changing inputs in the Oden UI when possible. When editing .vproj files directly, keep the impl value, subtype fields, stream width, stream height, and codec settings consistent with the selected source.

Troubleshoot an input

Use this checklist when an input does not show a live texture.

  1. Confirm the input type is available in the current build. If a build does not include the required feature or SDK, Oden replaces the invalid input with No Input.

  2. Confirm the camera is visible to the operating system or SDK. Use Rescan Devices where available.

  3. Confirm codec and pixel format. For encoded network sources, a codec mismatch is a common reason for a black or missing texture.

  4. Lower the resolution or frame rate. This helps isolate bandwidth, USB, decoder, or camera exposure limits.

  5. Check whether the source is live before Oden starts. Use reconnect settings such as Retry, Retry Until Success, Try to Reconnect, or Auto Reconnect for deployed systems.

  6. For GStreamer, convert a simplified input to a raw pipeline only after it works. Then inspect or modify the generated pipeline.

  7. Save a texture once frames arrive. Use that still image to verify orientation, crop, exposure, and calibration outside the live system.