Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mpromonet/v4l2tools

V4L2 tools using V4L2 C++ wrapper
https://github.com/mpromonet/v4l2tools

c-plus-plus v4l2 v4l2-device

Last synced: 8 days ago
JSON representation

V4L2 tools using V4L2 C++ wrapper

Awesome Lists containing this project

README

        

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/0c2b3215b77a4a6f82d977986bca7842)](https://www.codacy.com/app/michelpromonet_2643/v4l2tools?utm_source=github.com&utm_medium=referral&utm_content=mpromonet/v4l2tools&utm_campaign=badger)
[![Build status](https://travis-ci.org/mpromonet/v4l2tools.png)](https://travis-ci.org/mpromonet/v4l2tools)
[![CircleCI](https://circleci.com/gh/mpromonet/v4l2tools.svg?style=shield)](https://circleci.com/gh/mpromonet/v4l2tools)
[![CirusCI](https://api.cirrus-ci.com/github/mpromonet/v4l2tools.svg?branch=master)](https://cirrus-ci.com/github/mpromonet/v4l2tools)
[![Snap Status](https://snapcraft.io//v4l2tools/badge.svg)](https://snapcraft.io/v4l2tools)
[![GithubCI](https://github.com/mpromonet/v4l2tools/workflows/C/C++%20CI/badge.svg)](https://github.com/mpromonet/v4l2tools/actions)

[![Docker Pulls](https://img.shields.io/docker/pulls/mpromonet/v4l2tools.svg)](https://hub.docker.com/r/mpromonet/v4l2tools/)

v4l2tools
====================

This is simple V4L2 tools based on libv4l2cpp

Dependencies
------------
- liblog4cpp5-dev (optional)
- libvpx-dev (for v4l2compress)
- libx264-dev (for v4l2compress)
- libx265-dev (for v4l2compress)
- libjpeg-dev (for v4l2compress)

Tools
-------

- v4l2copy :

> read from a V4L2 capture device and write to a V4L2 output device

- v4l2compress :

> read YUV from a V4L2 capture device, compress in VP8/VP9/H264/HEVC/JPEG format and write to a V4L2 output device
> read JPEG format from a V4L2 capture device, uncompress in JPEG format and write to a V4L2 output device

- v4l2dump :

> read from a V4L2 capture device and print to output frame information (work with H264 & HEVC)

- v4l2source_yuv :

> generate YUYV frames and write to a V4L2 output device

Tools for Raspberry
-------------------

- v4l2grab_h264 :

> grab raspberry pi screen, compress in H264 format using OMX and write to a V4L2 output device

- v4l2display_h264 :

> read H264 from V4L2 capture device, uncompress and display using OMX

- v4l2compress_omx :

> read YUV from a V4L2 capture device, compress in H264 format using OMX and write to a V4L2 output device
> make sure the v4l2 source supports the correct pixel format. This can be configured for device 0 using `v4l2-ctl -d 0 -v width=640,height=480,pixelformat=YUYV -V`. Then check it was applied correctly using `v4l2-ctl --all`

Build
-----

make

Install
-------

make install

Using Docker image
===============

You can expose V4L2 devices from your host using :

docker run --device=/dev/video0 --device=/dev/video1 -it mpromonet/v4l2tools

The container entry point is the v4l2tools application, then you can :

* get the help using :

docker run -it mpromonet/v4l2tools -h

* run the container specifying some paramaters :

docker run --device=/dev/video0 --device=/dev/video1 -it mpromonet/v4l2tools -fH264