imquic is an open source QUIC library designed and developed by Meetecho for the specific purpose of experimenting with QUIC-based multimedia applications. While it can be used as a generic QUIC (and WebTransport) library, it also comes with experimental native RTP Over QUIC (RoQ) and Media Over QUIC (MoQ) support. At the time of writing, there's no support for HTTP/3 beyond the simple establishment of WebTransport connections.
For more information and documentations, make sure you pay the project website a visit!
Note well: in its current stage, the library should be considered at an alpha stage, and very experimental due to its lack of support for some QUIC stack functionality. It is currently being used by Meetecho for prototyping RoQ and MoQ demos in local and controlled environments, and will probably not always work as expected in more challenging network scenarios.
To compile imquic, you'll need to satisfy the following dependencies:
- GLib
- pkg-config
- quictls (QUIC TLS)
Should you be interested in building the imquic documentation as well (public and internal), you'll need some additional tools too:
Notice that, at the time of writing, only Linux is supported as a target, but the library should compile on macOS as well. Both macOS and Windows, as well as other platforms, are planned as a target in future releases.
Once you have installed all the dependencies, just use:
sh autogen.sh
to generate the configure file. After that, configure and compile as usual to start the whole compilation process:
./configure --prefix=/usr
make
make install
Note that the configure script uses pkg-config
to look for quictls by using the openssl+quictls
name, which is how it's packaged in some repositories to avoid conflicts with OpenSSL. In case that doesn't work for you, you use the QUICTLS_CFLAGS
and QUICTLS_LIBS
environment variables to specify the include and lib directory of the library when launching the configure script, e.g.
QUICTLS_CFLAGS="-I/opt/quictls/include/" \
QUICTLS_LIBS="-L/opt/quictls/lib64/ -lssl -lcrypto" \
./configure [..]
You can build some demo applications by adding --enable-echo-examples
(basic QUIC/WebTransport client/server demos), --enable-roq-examples
(RoQ demos) and --enable-moq-examples
(MoQ demos).
To build the documentation, add --enable-docs
.
To learn more about the demo examples, refer to the related README.md.
Any thought, feedback or (hopefully not!) insult is welcome!
Developed by @meetecho