# rpi-video-rs This project implements `H264` video record on Raspberry Pi. It uses the `rust-ffi` binding library [rpi-mmal-rs](https://github.com/silathdiir/rpi-mmal-rs). ## Usage Add the following to your `Cargo.toml`: ```toml [dependencies] rpi-video-rs = "0.0.2" ``` You could checkout the user code in folder `examples/`. And run the `simple` one as below. ``` cargo run --example simple ``` ## Development Since this project requires the real camera to record H264 videos, you needs a RPI to run or test. But you could also uses a cross-compiling environment for compiling and developing. We offers a Dockerfile (in folder `tools/docker/`) which is a separate cross-compiling environment. For developing on either a RPI device or a Docker container, you should install the standard Rust development environment, and then adds Rust targets as below. ``` rustup target add arm-unknown-linux-gnueabihf rustup target add armv7-unknown-linux-gnueabihf ``` ### Installing Camera Device on RPI 1. Adds text `bcm2835-v4l2` to the bottom of file `/etc/modules`. ``` sudo echo bcm2835-v4l2 >> /etc/modules ``` 2. Activates the camera in configuration. ``` sudo raspi-config ``` 3. Follows the prompt to reboot Raspberry PI. 4. You could use the command `raspivid` to test recording a `H264` video and check if the camera is installed properly. ``` raspivid -o test_video.h264 ``` ### C Version Code 1. Enters into the folder `tools/c_ver`, and runs `make` to compile the command `rpi_video.out`. ``` pushd tools/c_ver make ``` 2. Runs the build command `rpi_video.out` to record a sample video. ``` ./rpi_video.out ``` ### Rust Simple Example You could run the Rust simple example as below. ``` cargo run --example simple ``` ## TODO 1. Integrates with a CI for testing successful compilation.