This repository provides source code to encode images in I420 format that are accessible via a shared memory area into VP8 or VP9 frames for the OpenDLV software ecosystem.
You need a C++14-compliant compiler to compile this project.
The following dependency is part of the source distribution:
- libcluon -
The following dependencies are downloaded and installed during the Docker-ized build:
To run this microservice using docker-compose
, you can simply add the following
section to your docker-compose.yml
:
version: '2' # Must be present exactly once at the beginning of the docker-compose.yml file
services: # Must be present exactly once at the beginning of the docker-compose.yml file
video-vpx-encoder:
image: chalmersrevere/opendlv-video-vpx-encoder-multi:v0.0.7
restart: on-failure
network_mode: "host"
ipc: "host"
volumes:
- /tmp:/tmp
command: "--cid=111 --name=video0.i420 --width=640 --height=480 --vp8"
As this microservice is connecting to another video frame-providing microservice
via a shared memory area using SysV IPC, the docker-compose.yml
file specifies
the use of ipc:host
. The parameter network_mode: "host"
is necessary to
broadcast the resulting frames into an OD4Session
for OpenDLV. The folder
/tmp
is shared into the Docker container to attach to the shared memory area.
The parameters to the application are:
--cid=111
: Identifier of the OD4Session to broadcast the VP8 or VP9 frames to--id=2
: Optional identifier to set the senderStamp in broadcasted VP8 or VP9 frames in case of multiple instances of this microservice--name=XYZ
: Name of the shared memory area to attach to--width=W
: Width of the image in the shared memory area--height=H
: Height of the image in the shared memory area--bitrate=B
: desired bitrate (default: 800,000)--gop=G
: desired length of group of pictures (default: 10)--vp8
: use VP8 for encoding the frames--vp9
: use VP8 for encoding the frames
To build this software, you need cmake, C++14 or newer, libyuv, libvpx, and make.
Having these preconditions, just run cmake
and make
as follows:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release ..
make && make test && make install
- This project is released under the terms of the GNU GPLv3 License