CameraStack on
NVIDIA Jetson.
Ready-made camera software for NVIDIA Jetson: capture, hardware encode, RTSP streaming and a standards-compliant ONVIF interface, turning a Jetson board with a camera into a network camera.
On this silicon
What runs today.
- 01 Sensor capture through NVIDIA's camera stack, in NVMM memory end to end
- 02 Multi-profile hardware encode on NVENC, H.264 and H.265
- 03 The full RTSP transport family: TCP, UDP, HTTP tunnelling, WebSocket and multicast
- 04 ONVIF Device, DeviceIO, Media, Media2, Events, Imaging, Analytics and Advanced Security services
- 05 TLS: HTTPS management and snapshots, RTSP over HTTPS, secure WebSocket and rtsps:// streaming, with camera-held certificates managed through the ONVIF TLS Configuration Add-on
- 06 TensorRT object detection through DeepStream, with tracked ONVIF scene metadata and live model selection
- 07 Polygon motion detection: ONVIF MotionRegionDetector rules on a compact activity grid
- 08 JPEG snapshots and multi-slot text OSD
- 09 Demand-driven encoding: each encoder runs only while clients consume its profile
- 10 Metadata streaming and events, including the ONVIF ImageTooDark tampering event
How this port works
Jetson has a vendor GStreamer stack, and that makes this the quickest kind of port: the CameraStack plugin is a description of the platform’s capture and encode elements, and the portable core builds and runs the pipelines in-process, from multi-profile encoding to the snapshot, OSD and analysis branches. Everything that is not platform-specific, RTSP delivery, the ONVIF services, events, tracking and configuration, runs in the same portable core as every other platform. Porting to a new GStreamer platform mostly means writing that description.
Delivery is flexible on GStreamer platforms too: streams can be served through GStreamer’s own RTSP server, or through the portable core’s delivery engine, the same one used on every platform, which supports the full RTSP transport family, including TLS, RTSP-over-HTTP tunnelling and RTSP-over-WebSocket.
Object analytics on TensorRT
The Jetson port runs CameraStack’s object detection on the GPU through DeepStream and TensorRT. The ObjectDetector analytics module advertises the models installed on the device, PicoDet-S, YOLOX-Nano and PP-YOLOE-S, each with a TensorRT engine built on the target so it always matches the installed runtime, and a standard ONVIF client can switch the model, confidence threshold and detection rate live. DeepStream owns TensorRT execution, and raw tensors cross a thin adapter into the same shared decoders, tracker and ONVIF serialiser used on every other port, so detected objects arrive as standard scene metadata with stable IDs. The reference Nano passed a repeatable acceptance test running tracked metadata, both 1080p streams and snapshots together.
Snapshots, OSD and motion
Authenticated 1920x1080 JPEG snapshots are proven on the live camera, taken from the shared capture graph without disturbing either encoded profile. The shared GStreamer tier also brings the portable text OSD, four slots per source with plain text, date and time modes and full transparency, ONVIF MotionRegionDetector polygon rules evaluated on a compact activity grid rather than full video frames, luminance-based ImageTooDark events, and demand-driven encoding that stops idle encoder work while snapshots, events and metadata stay available.
Built on JetPack
The port builds against NVIDIA’s stock JetPack software:
nvarguscamerasrc capturing into NVMM memory, NVENC through
nvv4l2h264enc and nvv4l2h265enc, and DeepStream’s nvstreammux
and nvinfer for inference. The reference Nano runs JetPack 4.6 with
GStreamer 1.14 and DeepStream 6.0.1, so the port does not require a
modern software base. It is proven with simultaneous 1080p H.264 and
H.265 streams from an IMX219 sensor.
$ ffprobe rtsp://<user>:<pass>@jetson.lan:8554/onvif/Profile_1
ffprobe version 7.1.1-1ubuntu4.2 Copyright (c) 2007-2025 the FFmpeg developers
...
Input #0, rtsp, from 'rtsp://<user>:<pass>@jetson.lan:8554/onvif/Profile_1':
Metadata:
title : CameraStack Server (JetsonNano)
Duration: N/A, start: 0.194378, bitrate: N/A
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080, 15 fps, 15 tbr, 90k tbn
Stream #0:1: Data: noneThe probe's second track is the ONVIF metadata stream, carrying analytics and events alongside the video.
Build on it
Designing a
Jetson product?
Jetson is a natural fit for cameras that do on-device inference, and CameraStack handles the camera plumbing so you can spend your time on the parts that make your product different. Use it as the complete camera stack or as a drop-in ONVIF interface.
Talk to us about Jetson