AV1 Video¶
AV1 royalty-free video codec for next-generation streaming.
Overview¶
AV1 is a modern, open-source video codec offering:
- Better compression than H.265
- Royalty-free licensing
- Growing hardware support
- HDR and wide color gamut support
Trade-offs¶
| Aspect | H.264 | H.265 | AV1 |
|---|---|---|---|
| Compression | Good | Better | Best |
| Encoding Speed | Fast | Medium | Slow |
| Royalties | Yes | Yes | No |
| Hardware Support | Universal | Common | Emerging |
GStreamer Backend¶
MediaX uses GStreamer for AV1 encoding and decoding:
- Software: SVT-AV1, dav1d
- Hardware: Intel AV1 (12th gen+), AMD (RDNA3+)
Transmitting AV1 Video¶
#include "av1/gst/rtp_av1_payloader.h"
mediax::rtp::av1::gst::RtpAv1GstPayloader payloader;
mediax::rtp::StreamInformation stream_info;
stream_info.session_name = "av1-stream";
stream_info.hostname = "239.192.1.1";
stream_info.port = 5004;
stream_info.width = 3840;
stream_info.height = 2160;
stream_info.framerate = 30;
stream_info.encoding = mediax::rtp::ColourspaceType::kColourspaceAv1;
payloader.SetStreamInfo(stream_info);
payloader.Open();
// Send RGB24 frames - encoder handles conversion and compression
std::vector<uint8_t> rgb_buffer(3840 * 2160 * 3);
// Fill buffer with video frame...
payloader.Transmit(rgb_buffer.data(), true);
payloader.Close();
Receiving AV1 Video¶
#include "av1/gst/rtp_av1_depayloader.h"
mediax::rtp::av1::gst::RtpAv1GstDepayloader depayloader;
mediax::rtp::StreamInformation stream_info;
stream_info.hostname = "239.192.1.1";
stream_info.port = 5004;
stream_info.width = 3840;
stream_info.height = 2160;
stream_info.encoding = mediax::rtp::ColourspaceType::kColourspaceAv1;
depayloader.SetStreamInfo(stream_info);
depayloader.Open();
depayloader.Start();
// Receive decoded RGB frames
std::vector<uint8_t> rgb_buffer(3840 * 2160 * 3);
depayloader.Receive(rgb_buffer.data(), 1000);
depayloader.Stop();
depayloader.Close();
Bandwidth Requirements¶
AV1 provides excellent compression:
| Resolution | Quality | H.265 Bitrate | AV1 Bitrate |
|---|---|---|---|
| 1920x1080 | Good | 4 Mbps | 2-3 Mbps |
| 1920x1080 | High | 10 Mbps | 6-8 Mbps |
| 3840x2160 | Good | 15 Mbps | 10-12 Mbps |
| 3840x2160 | High | 30 Mbps | 20-25 Mbps |
Software Encoder Setup¶
SVT-AV1¶
# Ubuntu 24.04+
sudo apt install gstreamer1.0-plugins-bad svt-av1
# Verify
gst-inspect-1.0 svtav1enc
dav1d Decoder¶
# Fast AV1 decoder
sudo apt install gstreamer1.0-plugins-bad libdav1d-dev
# Verify
gst-inspect-1.0 dav1ddec
Hardware Acceleration¶
Intel Arc (12th gen+)¶
# Intel media drivers with AV1 support
sudo apt install intel-media-va-driver-non-free
# Verify AV1 support
vainfo 2>&1 | grep -i av1
AMD RDNA3+¶
AMD Radeon RX 7000 series supports AV1 encoding:
# AMD drivers
sudo apt install mesa-va-drivers
# Verify
vainfo 2>&1 | grep -i av1
Use Cases¶
AV1 is ideal for:
- 4K/8K streaming: Best compression for ultra-high resolution
- Cloud gaming: Low bandwidth, high quality
- Archival: Royalty-free long-term storage
- WebRTC: Browser-native support
Limitations¶
- Encoding is computationally intensive
- Hardware support is limited to newer devices
- Higher latency than H.264/H.265
For real-time, low-latency applications, consider H.264 or uncompressed video.
Support¶
- Website: https://astutesys.com/support
- Email: [email protected]