Skip to content

Releases: kt81/Spangle.Net.Transport.SRT

Release list

0.2.0

Choose a tag to compare

@kt81 kt81 released this 10 Jul 09:54

Stream ids and encryption on the managed API

The two options an SRT ingest server actually needs, mapped from their RTMP counterparts:

  • SRTClient.StreamId — the sender's streamid (srt://host:port?streamid=...), the SRT counterpart of an RTMP stream key. Use it to route streams and authorize publishes.
  • SRTListenerOptions.Passphrase — pre-shared passphrase encryption (SRTO_PASSPHRASE, 10–79 bytes). Senders presenting a different passphrase are rejected during the handshake; payloads are AES-encrypted on the wire (mbedTLS backend, PBKDF2 key derivation). Accepted connections inherit the listener's passphrase.
var listener = new SRTListener(endpoint, new SRTListenerOptions
{
    Passphrase = "correct horse battery staple",
});
listener.Start();
var client = await listener.AcceptSRTClientAsync(ct);
// e.g. "live/abc" from srt://host:9998?streamid=live/abc
Console.WriteLine(client.StreamId);

Both paths are covered by tool-free native loopback tests (streamid round-trip; wrong-passphrase rejection + decrypted payload integrity) on every RID lane.

Client-side connect remains unexposed: open an issue if you need it and it will be prioritized immediately.

0.1.0

Choose a tag to compare

@kt81 kt81 released this 10 Jul 08:41

The first release: a self-contained SRT listener/transport for .NET.

What's inside

  • SRTListener / SRTClient on System.IO.Pipelines: truly asynchronous accept (a dedicated thread drives srt_epoll into a bounded channel), backpressure-aware receive (the socket is masked out of the epoll set while the consumer catches up), and zero staging copies — srt_recvmsg writes straight into the pipe buffer.
  • Batteries included: the native library ships in the package for win-x64, win-arm64, linux-x64, linux-arm64 and osx-arm64, each built from source and tested on a native CI runner. Nothing to install.
  • Native components: libsrt v1.5.5 (MPL-2.0, unmodified) statically linked with Mbed TLS v3.6.7 (Apache-2.0) as the crypto backend — encrypted streams (SRTO_PASSPHRASE) are exercised in CI via a native loopback test. See THIRD-PARTY-NOTICES.txt.

Status

Pre-1.0. The surface is listener/receive first; passphrase options and client-side connect are not exposed on the managed API yet.

Part of the Spangle streaming media server family.