1 unstable release

0.0.2 Oct 23, 2019

#254 in Video

MIT license

38KB
1K SLoC

rpi-video-rs

This project implements H264 video record on Raspberry Pi. It uses the rust-ffi binding library rpi-mmal-rs.

Usage

Add the following to your Cargo.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
  1. Activates the camera in configuration.
sudo raspi-config
  1. Follows the prompt to reboot Raspberry PI.

  2. 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
  1. 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.

Dependencies

~0–2.3MB
~45K SLoC