Seeking Alternatives to x264 for Low-Latency Streaming: License and Performance Benchmarks

Hello,

I’ve been testing a low-latency streaming app using the x264 encoder in GStreamer. It works great and hits all the marks for performance and quality, but the GPL license is kind of a dealbreaker for commercial deployment. So now I’m looking for other options that can give me similar performance without the licensing problems.

First up, I’ve heard good things about VP8 and VP9. They’re open and royalty-free, which is awesome, but I haven’t had a chance to test them for low-latency streaming yet. Has anyone tried them? How do they compare to x264 in terms of latency and quality? I’m also especially afraid of pitfalls with WebRTC for example.

Then there’s OpenMAX (OMX). GStreamer has support for OpenMAX-based encoding with avenc_h264_omx , and from what I understand, it doesn’t necessarily need hardware acceleration. I’m curious if anyone has used it in a software-only setup and how it performs against x264 for things like latency and quality.

I’ve also been looking into NVIDIA Jetson plugins. I’ve heard that the hardware-accelerated encoders, like nvv4l2h264enc , are pretty solid for low-latency streaming, but I’m not sure about the licensing situation for commercial use. I’ve tried asking for pointers on the nvidia forum, regarding licensing a few months ago, and still don’t have any kind of answer.

Lastly, there’s Dav1d for AV1. AV1 seems to be picking up steam, and Dav1d looks like a decent option. That said, I’m not sure how it holds up for real-time, low-latency streaming compared to x264 or VP9. Anyone have insights on this?

Honestly, I’m open to any suggestions—whether it’s codecs, plugins, or something else entirely. I just want something that works well and avoids licensing pitfalls.

Thanks in advance for any tips, benchmarks, or experiences you can share!

I believe it’s possible to obtain libx264 under a commercial license for use cases where the GPL is undesirable. The x264enc GStreamer plugin code itself is LGPL licensed, so if you get the lib under a commercial license there’s no problem.

Forget about OpenMAX, it’s dead and unsupported (unless you have a xilinx board perhaps).

dav1d is an AV1 decoder library. It’s great and very performant, but it does not encode. There are software encoders (rav1e for which we have a plugin in gst-plugins-rs) and svt-av1, but for performance sensitive applications you might want/need hardware encoders, since the software encoders tend to be quite slow.

1 Like

I forgot to add: you could also check out openh264enc which is not even remotely on par with libx264 but it might work just fine / well enough for your particular use case. It was made primarily for real-time communication use cases.

You may or may not need a patent license if you use that (your lawyers will have to figure that one out), but at least the software license aspect should be no problem. I believe openh264 only supports constrained baseline profile anyway, patents for which may have expired by now in the jurisdictions of interests. There’s also no royalties on the first 100k units or so if I remember correctly. If you download the (free) openh264 library binaries from cisco they come with a patent license included, for what it’s worth.

If you are on Intel architecture, you can use vah264enc.

Good luck!

thank you for the help !