Draft: net/quinn: Add Media over QUIC subscriber
This adds a moqdemux
element which acts as a MoQ subscriber. With quinnquicsrc
(requires !1634 (merged)) upstream to moqdemux
, we can receive MoQ tracks via QUIC. With !1867 (merged) and !1966, we can receive MoQ tracks via WebTransport with quinnwtclientsrc
upstream to moqdemux
.
Tested with moq-rs for MoQ draft version 05. moq-rs
publisher example only sends two tracks packaged in CMAF as of now, which is what has been tested. We primarily use the type definitions and serializing/deserializing support of those types from moq-rs
. MoQ messages on bidirectional stream and QUIC transport itself is completely handled within GStreamer. We do not rely on moq-rs
in any way for this.
To test with moxygen we will need Low Overhead Container de-packetizer (yet to be implemented).
Testing with vanilla QUIC, needs a small change in moq-rs/dev/pub
. Scheme needs to be changed to moqt
to use vanilla QUIC. MoQ specification supports both WebTransport and QUIC. No change needed for WebTransport.
SCHEME="${SCHEME:-moqt}"
Run the MoQ relay and publisher as below in two separate terminals.
RUST_LOG=moq_relay=trace dev/relay
RUST_LOG=moq_pub=trace dev/pub
For testing with QUIC, run the example code as
GST_PLUGIN_PATH=target/debug cargo run -p gst-plugin-quinn --example moq_sub
For testing with WebTransport, run the example code as
GST_PLUGIN_PATH=target/debug cargo run -p gst-plugin-quinn --example moq_sub -- --webtransport
MoQ specification is not finalized and is still undergoing changes. This is an experimental implementation as per the current state of the specification and will keep changing till the specification is finalized.