Getting Started

To fetch the sources, build and install:

git clone https://git.libcamera.org/libcamera/libcamera.git
cd libcamera
meson build
ninja -C build install

Dependencies

The following Debian/Ubuntu packages are required for building libcamera. Other distributions may have differing package names:

A C++ toolchain: [required]

Either {g++, clang}

Meson Build system: [required]

meson (>= 0.55) ninja-build pkg-config

If your distribution doesn’t provide a recent enough version of meson, you can install or upgrade it using pip3.

pip3 install --user meson
pip3 install --user --upgrade meson
for the libcamera core: [required]

python3-yaml python3-ply python3-jinja2

for IPA module signing: [required]

libgnutls28-dev openssl

for the Raspberry Pi IPA: [optional]

libboost-dev

Support for Raspberry Pi can be disabled through the meson

‘pipelines’ option to avoid this dependency.

for device hotplug enumeration: [optional]

libudev-dev

for documentation: [optional]

python3-sphinx doxygen graphviz

for gstreamer: [optional]

libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

for cam: [optional]

libevent-dev

for qcam: [optional]

qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5 qttools5-dev-tools libtiff-dev

for tracing with lttng: [optional]

liblttng-ust-dev python3-jinja2 lttng-tools

for android: [optional]

libexif-dev libjpeg-dev libyaml-dev

for lc-compliance: [optional]

libevent-dev libgtest-dev

Using GStreamer plugin

To use GStreamer plugin from source tree, set the following environment so that GStreamer can find it. This isn’t necessary when libcamera is installed.

export GST_PLUGIN_PATH=$(pwd)/build/src/gstreamer

The debugging tool gst-launch-1.0 can be used to construct a pipeline and test it. The following pipeline will stream from the camera named “Camera 1” onto the OpenGL accelerated display element on your system.

gst-launch-1.0 libcamerasrc camera-name="Camera 1" ! glimagesink

To show the first camera found you can omit the camera-name property, or you can list the cameras and their capabilities using:

gst-device-monitor-1.0 Video

This will also show the supported stream sizes which can be manually selected if desired with a pipeline such as:

gst-launch-1.0 libcamerasrc ! 'video/x-raw,width=1280,height=720' ! \
      glimagesink