Go to file
Joni Räsänen 819d8acee8 common: Add missing memory include, fixes Linux build 2022-02-21 10:20:07 +02:00
.circleci CI: Add simple CircleCI config.yml for quick build test 2021-06-07 16:12:56 +03:00
cmake Merge pull request #78 from jheo4/fix/pkgcfg_compile 2021-10-01 08:49:42 +03:00
docs tests: Add initial unit tests 2021-09-07 12:23:40 +03:00
include common: Add missing memory include, fixes Linux build 2022-02-21 10:20:07 +02:00
packaging doc: Update contact url 2021-09-28 12:51:52 +03:00
src common: Fix pull_frame() check 2022-02-21 10:05:46 +02:00
test tests: Add check for pull_frame test that it receives frames 2022-02-21 10:05:17 +02:00
.gitignore build: Completely Redesigned CMake files (#44) 2021-08-08 22:18:40 +02:00
BUILDING.md version: Add version print to context and fine tune what is printed 2021-09-30 10:25:41 +03:00
CMakeLists.txt build: add macro to pc generation with CXX and LINKER flags 2021-10-01 03:21:08 +00:00
CONTRIBUTING.md doc: Update contributing instructions 2022-02-04 17:33:19 +02:00
COPYING Update copyright 2021-03-23 01:16:42 +02:00
Doxyfile Add Doxygen main page 2021-03-23 01:19:47 +02:00
README.md doc: Update readme with two disclaimers 2021-09-09 08:08:38 +03:00
uvgRTP.pro version: Version support for Qt project 2021-09-21 09:10:36 +03:00

README.md

uvgRTP

uvgRTP is an Real-Time Transport Protocol (RTP) library written in C++ with a focus on simple to use and high-efficiency media delivery over the Internet. It features an intuitive and easy-to-use Application Programming Interface (API), built-in support for transporting Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC) encoded video and Opus encoded audio. uvgRTP also supports End-to-End Encrypted (E2EE) media delivery using the combination of Secure RTP (SRTP) and ZRTP. According to our measurements uvgRTP is able to reach a goodput of 600 MB/s (4K at 700fps) for HEVC stream when measured in LAN. The CPU usage is relative to the goodput value, and therefore smaller streams have a very small CPU usage.

uvgRTP is licensed under the permissive BSD 2-Clause License. This cross-platform library can be run on both Linux and Windows operating systems. Mac OS is currently not supported, but contributions are welcome to help with this. For SRTP/ZRTP support, uvgRTP uses Crypto++ library.

uvgRTP is still in its beginning stages, meaning that new bugs are still being found and fixed. You can follow the progress on bug fixes here.

Currently supported specifications:

The original version of uvgRTP is based on Marko Viitanen's fRTPlib library.

Notable features

  • Built-in support for:
    • AVC/HEVC/VVC video streaming
    • Opus audio streaming
    • Delivery encryption with SRTP/ZRTP
  • Generic interface for custom media types
  • UDP hole punching
  • Simple to use API
  • Permissive license

Building and linking

See BUILDING.md for instructions on how to build and use uvgRTP

Documentation and examples

See documentation and examples to get a better understanding of uvgRTP

Contributing

We warmly welcome any contributions to the project. If you are thinking about submitting a pull request, please read CONTRIBUTING.md before proceeding.

Paper

If you use uvgRTP in your research, please cite the following paper:

A. Altonen, J. Räsänen, J. Laitinen, M. Viitanen, and J. Vanne, “Open-Source RTP Library for High-Speed 4K HEVC Video Streaming”, in Proc. IEEE Int. Workshop on Multimedia Signal Processing, Tampere, Finland, Sept. 2020.