A view that displays a live camera feed from a connected device. CameraPreview shows a real-time video preview, useful for camera-enabled applications, barcode scanning, or video conferencing interfaces.
Constructor¶
nib.CameraPreview(
device_id=None,
**modifiers,
)
Parameters¶
| Parameter | Type | Default | Description |
|---|---|---|---|
device_id |
str |
None |
Camera device ID. When None, the system default camera is used. Obtain device IDs from Camera.list_devices(). |
**modifiers |
Common view modifiers: width, height, corner_radius, opacity, padding, etc. |
Mutable Properties¶
| Property | Type | Description |
|---|---|---|
device_id |
str |
Get or set the camera device ID. |
Examples¶
Default camera preview¶
import nib
def main(app: nib.App):
app.build(
nib.CameraPreview(
width=320,
height=240,
corner_radius=12,
padding=16,
)
)
nib.run(main)
Camera preview with device selection¶
import nib
from nib.services import Camera
def main(app: nib.App):
preview = nib.CameraPreview(
width=320,
height=240,
corner_radius=8,
)
devices = Camera.list_devices()
options = [(d["id"], d["name"]) for d in devices]
app.build(
nib.VStack(controls=[
nib.Picker(
"Camera",
selection=options[0][0] if options else "",
options=options,
on_change=lambda device_id: setattr(
preview, "device_id", device_id
),
),
preview,
], spacing=12, padding=16)
)
nib.run(main)
Camera feed with overlay¶
import nib
def main(app: nib.App):
app.build(
nib.ZStack(controls=[
nib.CameraPreview(
width=400,
height=300,
corner_radius=12,
),
nib.VStack(controls=[
nib.Spacer(),
nib.Text(
"Live",
foreground_color=nib.Color.WHITE,
font=nib.Font.CAPTION,
padding={"horizontal": 8, "vertical": 4},
background=nib.Color.RED,
corner_radius=4,
),
], padding=12),
], padding=16)
)
nib.run(main)