# Install This describes a set of manual instructions to run camera streamer. ## Validate your system **This streamer does only use hardware, and does not support any software decoding or encoding**. It does require system to provide: 1. ISP (`/dev/video13`, `/dev/video14`, `/dev/video15`) 2. JPEG encoder (`/dev/video31`) 3. H264 encoder (`/dev/video11`) 4. JPEG/H264 decoder (for UVC cameras, `/dev/video10`) 5. At least LTS kernel (5.15, 6.1) for Raspberry PIs You can validate the presence of all those devices with: ```bash uname -a v4l2-ctl --list-devices ``` The `5.15 kernel` or `6.1 kernel` is easy to get since this is LTS kernel for Raspberry PI OS: ```bash apt-get update apt-get dist-upgrade reboot ``` Ensure that your `/boot/config.txt` has enough of GPU memory (required for JPEG re-encoding): ```text # Example for IMX519 dtoverlay=vc4-kms-v3d,cma-128 gpu_mem=128 # preferred 160 or 256MB dtoverlay=imx519 # Example for Arducam 64MP gpu_mem=128 dtoverlay=arducam_64mp,media-controller=1 # Example for USB cam gpu_mem=128 ``` ## Compile ```bash git clone https://github.com/ayufan-research/camera-streamer.git --recursive apt-get -y install libavformat-dev libavutil-dev libavcodec-dev libcamera-dev liblivemedia-dev v4l-utils pkg-config xxd build-essential cmake libssl-dev cd camera-streamer/ make sudo make install ``` ## Use it There are three modes of operation implemented offering different compatibility to performance. ### Use a preconfigured systemd services The simplest is to use preconfigured `service/camera-streamer*.service`. Those can be used as an example, and can be configured to fine tune parameters. Example: ```bash systemctl enable $PWD/service/camera-streamer-arducam-16MP.service systemctl start camera-streamer-arducam-16MP ``` If everything was OK, there will be web-server at `http://:8080/`. Error messages can be read `journalctl -xef -u camera-streamer-arducam-16MP`.