# Tutorial
![DL Streamer tutorial highlights: detection, pose estimation, tracking, and privacy blur](_images/tutorial_header.jpg)
Welcome! This tutorial takes you from a clean Ubuntu\* 24.04 machine to running real, hardware-accelerated video analytics with **Deep Learning Streamer (DL Streamer)** — using nothing but copy/paste. No prior experience with DL Streamer, GStreamer\*, or AI is required. By the end you will have detected objects, segmented them pixel-by-pixel, estimated human body poses, tracked and anonymized people, and even searched a video for a specific object using plain English — each with a **single command**. - [What is DL Streamer?](#what-is-dl-streamer) - [What is a pipeline?](#what-is-a-pipeline) - [Step 1 - Install DL Streamer on Ubuntu 24.04](#step-1---install-dl-streamer-on-ubuntu-2404) - [Step 2 - Prepare your environment](#step-2---prepare-your-environment) - [Step 3 - Run your first YOLO pipelines](#step-3---run-your-first-yolo-pipelines) - [Step 4 - Go further with DL Streamer](#step-4---go-further-with-dl-streamer) - [Step 5 - Run in Docker (GPU/NPU passthrough)](#step-5---run-in-docker-gpunpu-passthrough) - [Where to next?](#where-to-next) --- ## What is DL Streamer? **DL Streamer** is an open-source framework for building **video and audio analytics** applications. It lets you take a video — from a file, a camera, or a network stream — run AI models on every frame, and do something useful with the results: draw boxes on screen, count people, anonymize faces, save data to a file, or send alerts — all **without writing any code**. It runs on **Intel® CPUs, GPUs, and NPUs**, automatically taking advantage of your hardware to run fast. The same command works on any of these devices — you just change one word. > **In short:** DL Streamer turns "I want AI on my video" into a single command > you can copy, paste, and run. ## What is a pipeline? A **pipeline** is a chain of small building blocks called **elements**. Each element does one job and passes its result to the next, like an assembly line. You connect elements with an exclamation mark `!`. A typical video AI pipeline looks like this: ```mermaid flowchart LR A["Read video (filesrc)"] --> B["Decode frames (decodebin3)"] B --> C["Run AI model (gvadetect)"] C --> D["Draw results (gvawatermark)"] D --> E["Show on screen (autovideosink)"] ``` Written as a DL Streamer command, that same idea becomes: ```text gst-launch-1.0 filesrc ! decodebin3 ! gvadetect ! gvawatermark ! autovideosink ``` This is still a concept, not a runnable command — each element needs its **properties** to do real work. Properties are written as `key=value` right after the element name, for example `filesrc location=