MediaX¶
Real-Time Protocol (RTP) Video Streaming Library for C++
Overview¶
MediaX is a high-performance C++ library implementing RFC 4421 RTP (Real Time Protocol) Payload Format for Uncompressed Video and RFC 3984 for H.264 video. It is compliant with DEF STAN 00-082 (VIVOE) for real-time video streaming in defence and industrial applications.
Key Features¶
- Uncompressed Video Streaming - RGB24, YUV422, Mono8, Mono16
- H.264/H.265 Hardware Acceleration - Intel VAAPI, NVIDIA NVENC
- SAP/SDP Announcements - Automatic stream discovery (RFC 2974, RFC 4566)
- Cross-Platform - Linux x86_64, ARM64 (Jetson, Raspberry Pi)
- Multiple Language Bindings - C++, Python, Qt6
Supported Standards¶
| Standard | Description |
|---|---|
| RFC 4421 | RTP Payload Format for Uncompressed Video |
| RFC 3984 | RTP Payload Format for H.264 Video |
| RFC 2974 | Session Announcement Protocol (SAP) |
| RFC 4566 | Session Description Protocol (SDP) |
| DEF STAN 00-082 | VIVOE - Video and Imagery over Ethernet for Defence |
Supported Platforms¶
| Platform | Architecture | Status |
|---|---|---|
| Ubuntu 22.04 | amd64 | ✅ Supported |
| Ubuntu 24.04 | amd64 | ✅ Supported |
| Raspbian 12 | arm64 | ✅ Supported |
| NVIDIA Jetson | arm64 | ✅ Supported |
Quick Example¶
#include "rtp/rtp.h"
int main() {
mediax::RtpSapTransmit<mediax::rtp::uncompressed::RtpUncompressedPayloader> rtp(
"239.192.1.1", 5004, "my-stream", 640, 480, 30, "RGB24");
std::vector<uint8_t> &data = rtp.GetBufferTestPattern();
for (int i = 0; i < 1000; i++) {
rtp.Transmit(data.data(), false);
}
return 0;
}
License¶
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
Commercial licenses are available. Visit astutesys.com for more information.
Getting Help¶
- Documentation: You're reading it!
- Support: https://astutesys.com/support
- Email: [email protected]
- GitHub Issues: Report a bug