Go to file
Mathis Logemann 8a976f07a9 include cstdint for gcc13 compability 2024-01-12 15:43:37 +01:00
.circleci Release 2.1.0 2022-09-21 14:28:13 +03:00
cmake Find cmake threads even when the test are excluded. 2024-01-12 15:43:08 +01:00
docs doc: Clarify the reception report field usage 2023-05-02 13:28:00 +03:00
examples v3c: Add documentation to v3c_receiver 2024-01-12 13:15:03 +02:00
include/uvgrtp include cstdint for gcc13 compability 2024-01-12 15:43:37 +01:00
packaging doc: Update readme and packaging info 2022-09-21 08:40:08 +03:00
src include cstdint for gcc13 compability 2024-01-12 15:43:37 +01:00
test v3c: Add documentation to the examples 2024-01-12 13:15:01 +02:00
.gitignore rtcp: update gitignore file to exclude "out" folder 2023-02-13 10:52:33 +02:00
.gitlab-ci.yml multiplex: Run GitLab CI tests in debug mode 2023-06-26 08:54:05 +03:00
BUILDING.md doc: Update Werror flag instructions 2023-05-04 10:32:35 +03:00
CMakeLists.txt v3c: Move V3C utility files to examples folder 2024-01-12 13:15:01 +02:00
CONTRIBUTING.md build: Set default CMake options so werror is disabled 2023-05-03 12:45:52 +03:00
COPYING Update copyright 2021-03-23 01:16:42 +02:00
README.md docs: Minor improvements to readme 2022-10-28 16:19:20 +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. uvgRTP has been designed to minimize memory operations to reduce its CPU usage and latency.

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 also supported, but the support relies on community contributions. For SRTP/ZRTP support, uvgRTP uses the Crypto++ library.

Currently supported specifications:

Notable features

  • AVC/HEVC/VVC video streaming, including packetization
  • Ready support for many formats which don't need packetization, including Opus
  • Delivery encryption with SRTP
  • Encryption key negotiation with ZRTP
  • UDP firewall hole punching
  • Simple to use API
  • Working examples
  • Permissive license

Building and linking

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

Learning to use uvgRTP

The examples folder contains working examples and a basic tutorial on uvgRTP usage. For a more detailed description, check the documentation where you can find info on advanced topics and descriptions of all uvgRTP flags.

Furthermore, we also provide a Doxygen documentation of the public API on Github.

Contributing

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

Papers

If you use uvgRTP in your research, please cite one of the following papers:

Open-Source RTP Library for High-Speed 4K HEVC Video Streaming

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.

UVGRTP 2.0: Open-Source RTP Library For Real-Time VVC/HEVC Streaming

A. Altonen, J. Räsänen, A. Mercat, and J. Vanne, “uvgRTP 2.0: open-source RTP library for real-time VVC/HEVC streaming,” in Proc. IEEE Int. Conf. Multimedia Expo, Shenzhen, China, July 2021.

Open-source RTP Library for End-to-End Encrypted Real-Time Video Streaming Applications

J. Räsänen, A. Altonen, A. Mercat, and J. Vanne, “Open-source RTP library for end-to-end encrypted real-time video streaming applications,” in Proc. IEEE Int. Symp. Multimedia, Naples, Italy, Nov.-Dec. 2021.

Test framework

We also have an easy to use performance test framework for benchmarking uvgRTP against FFmpeg and Live555 on Linux OS. The framework can be found here.

Origin

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