Capture UVC webcams and USB switchers (e.g. ATEM Mini Pro ISO) on a dedicated Caspar host channel. By default Caspar opens the device directly via PLAY … v4l2:///dev/videoN LOOP (ffmpeg producer). An optional FFmpeg UDP bridge (v4l2_capture_bridge: true) remains for legacy setups.
v4l-utils on the playout host (v4l2-ctl --list-devices). Included in scripts/setup/05-caspar-deps.sh and live ISO prep./dev/video10) are excluded automatically./dev/video0 (not /dev/video1).route://hostCh-N from Sources → Live onto PGM or multiview.Or: Sources → Live → + → USB Video (V4L2) — adds a slot and starts capture when channels exist.
| Piece | Role |
|---|---|
| Direct (default) | Caspar ffmpeg producer → v4l2:///dev/videoN |
| Optional bridge | v4l2-input-bridge.js → UDP 52400 + slot when v4l2_capture_bridge is true |
| Caspar channel | One dedicated host channel per slot (kind: v4l2) |
| On-air | route:// only — do not PLAY V4L2 directly on program layers |
| Method | Path |
|---|---|
| GET | /api/system/v4l2-devices?refresh=1 |
| GET | /api/v4l2-inputs |
| POST | /api/v4l2-inputs/config |
| POST | /api/v4l2-inputs/apply |
Status is also exposed as v4l2InputsStatus in GET /api/state.
| Symptom | Check |
|---|---|
| Empty device list | v4l2-ctl --list-devices; install v4l-utils |
| ATEM missing | USB cable; ls -l /dev/video* |
| Black picture after route | Apply PLAY; AMCP connected; INFO hostCh-1 shows v4l2:// and advancing time |
non-existing PPS in Caspar log |
Disable UDP bridge — use direct v4l2:// (default) |
| Duplicate device warning | Only one slot per /dev/videoN |
| ALSA conflict warning | Same hw:C,D cannot be live-audio and V4L2 mux simultaneously |
work/work-orders/121_WO_USB_WEBCAM_V4L2_INPUT.md/dev/video10 as input