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:
- RFC 3350: RTP: A Transport Protocol for Real-Time Applications
- RFC 7798: RTP Payload Format for High Efficiency Video Coding (HEVC)
- RFC 6184: RTP Payload Format for H.264 Video
- RFC 7587: RTP Payload Format for the Opus Speech and Audio Codec
- RFC 3711: The Secure Real-time Transport Protocol (SRTP)
- RFC 6189: ZRTP: Media Path Key Agreement for Unicast Secure RTP
- Draft: RTP Payload Format for Versatile Video Coding (VVC)
The original version of uvgRTP is based on Marko Viitanen's fRTPlib library.
- 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
See BUILDING.md for instructions on how to build and use uvgRTP
See documentation and examples to get a better understanding of uvgRTP
We warmly welcome any contributions to the project. If you are thinking about submitting a pull request, please read CONTRIBUTING.md before proceeding.
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.