Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luigifcruz/kimera
Low-latency hardware accelerated codec based video streaming utility.
https://github.com/luigifcruz/kimera
hevc libav nvenc opengl opengl-es raspberry-pi
Last synced: 2 months ago
JSON representation
Low-latency hardware accelerated codec based video streaming utility.
- Host: GitHub
- URL: https://github.com/luigifcruz/kimera
- Owner: luigifcruz
- License: gpl-2.0
- Created: 2020-04-23T18:07:51.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-06-15T01:47:03.000Z (over 3 years ago)
- Last Synced: 2024-08-02T15:30:42.916Z (5 months ago)
- Topics: hevc, libav, nvenc, opengl, opengl-es, raspberry-pi
- Language: C
- Homepage:
- Size: 1.99 MB
- Stars: 151
- Watchers: 10
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 🐙 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.
```shell
$ 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
```shell
$ 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.
```shell
$ kimera tx ../examples/linux.yml
```Receive the video from the TCP server and display it on the screen.
```shell
$ kimera rx ../examples/linux.yml
```## License
This module is distributed under a [GPL-2.0 License](https://raw.githubusercontent.com/luigifreitas/kimera/master/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.