luigifcruz / kimera

Low-latency hardware accelerated codec based video streaming utility.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ™ Kimera (Alpha Work-in-Progress)

Low-latency hardware-accelerated codec-based video streaming utility.

Features

  • ⚑ Low-latency (~35ms).
  • πŸ¦‘ Multi-Platform (Linux, macOS, Windows).
  • πŸ”‹ Low-overhead with Hardware Acceleration.
  • πŸ–ΌοΈ Works with any codec (HEVC, AVC, VP9, VP8, AV1).
  • 🧳 Supports multiple transport streams (UDP, TCP, UNIX, GNURadio).
  • πŸ”‘ Encrypted tunnel between TCP peers (TLS v1.3).

Compatibility

Interfacing

OS Display Screen-Capture Native Video Source Native Video Sink
Linux βœ… (GLFW) βœ… (XCB) βœ… (V4L2) βœ… (V4L2)
macOS βœ… (GLFW) βœ… (AVFoundation) βœ… (AVFoundation) ❌
Windows βœ… (GLFW) ❌ ❌ ❌

Hardware Acceleration

Technology Encode Decode Description
VideoToolBox βœ… βœ… Apple Devices (macOS & iOS)
NVENC/CUVID βœ… βœ… Modern Nvidia GPUs
OMX βœ… βœ… Broadcom SoC (Raspberry Pi)
VAAPI ❌ ❌ Modern Intel CPUs

Installation

Pre-compiled binary packages will be available once this app reaches beta. For now, if you want to try the pre-release version of the app, you should compile it yourself by following the instructions below.

Dependencies

  • C++17 Compiler
  • GLFW
  • OpenGL ES >3.0 or OpenGL >3.3
  • LibAV >12.3
  • CMake >3.13
  • XCB (For Linux)
  • Xcode Toolchain (For macOS)

Linux-Debian

This list will be reduced once Meson is implemented in the next version.

$ sudo apt install libavcodec-dev libavfilter-dev libavutil-dev libavformat-dev libglfw3-dev libyaml-dev libssl-dev build-essential cmake git pkg-config python3 python3-pybind11 python3-dev libwebsocketpp-dev libboost-all-dev

macOS

You will need to compile Google's ANGLE OpenGL ES 3.0 for this to work on macOS. Thank Apple.

Compilation

$ git clone --recursive https://github.com/luigifreitas/kimera.git
$ cd kimera
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j
$ sudo make install

Usage

Create a server with the /dev/video0 as input and localhost TCP as output.

$ kimera tx ../examples/linux.yml

Receive the video from the TCP server and display it on the screen.

$ kimera rx ../examples/linux.yml

License

This module is distributed under a GPL-2.0 License.

Roadmap

This is a list of unfinished tasks that I pretend to pursue soon. Pull requests are more than welcome!

  • Replace current render with librender.
  • Replace CMake with Meson.
  • Better WebCodecs support.
  • Add WebTransport module.

About

Low-latency hardware accelerated codec based video streaming utility.

License:GNU General Public License v2.0


Languages

Language:C 70.9%Language:C++ 24.4%Language:Objective-C 1.4%Language:CMake 1.3%Language:Python 0.8%Language:GLSL 0.6%Language:HTML 0.4%Language:Objective-C++ 0.2%