782 Commits
Author SHA1 Message Date
Alessandro RosandGitHub b80737c122 add destFingerprint parameter (#6106)
this allows to validate self-signed certificates of forward
destinations.
2026-08-18 09:35:37 +02:00
Alessandro RosandGitHub a56c635f8e fix deadlock when changing configuration through file and API (#6077) (#6101)
When changing configuration in parallel by editing the configuration
file and calling the API, the server could get into a deadlock that
prevented any further action. This is fixed.
2026-08-17 11:14:01 +00:00
Alessandro RosandGitHub 831ed9564b webrtc: support forwarding streams (#6099) 2026-08-16 21:09:59 +02:00
6a40b29538 srt: apply UDP read buffer size from configuration (#6069)
Use upstream datarhei/gosrt's ListenerControl config field
(datarhei/gosrt#144) to set SO_RCVBUF on the SRT listener's UDP socket.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-16 13:27:57 +00:00
Alessandro RosandGitHub 145381e81d rtmp: inform about authentication failures (#5657) (#6072)
Reply with NetStream.Play.Failed or NetStream.Publish.Unauthorized when
a client is not authorized to play or publish. This makes clients like
OBS to stop recreating the connection in case of authentication
failures.
2026-08-13 09:05:39 +00:00
Alessandro RosandGitHub b615b7312c prevent spamming of 'stream is closed' error during shutdown (#6062) 2026-08-08 19:41:06 +02:00
Alessandro RosandGitHub 6f0faa49d1 webrtc: fix warning when IPv6 is disabled (#5733) (#6048) 2026-08-07 10:05:05 +02:00
Alessandro RosandGitHub a4ad182e4e format imports (#6041) 2026-08-04 22:13:15 +00:00
Alessandro RosandGitHub e0ed9885fc moq: support publishing and reading through native QUIC (#6039) 2026-08-04 23:47:59 +02:00
98ab3009ea support forwarding streams natively (#5558)
It is now possible to define forward destinations for each path configuration. For each destination, the server will create a client that will forward the stream to the intended destination. Supported protocols are RTSP, RTMP, SRT. API and metrics have also been improved to allow monitoring the new forwarding system.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-04 21:57:15 +02:00
Alessandro RosandGitHub 3d5039607c metrics: fix race condition in tests (#6026) 2026-08-03 18:14:20 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
5ccc80ad7b build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.6.1 to 5.6.2 (#5981)
* build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.6.1 to 5.6.2

Bumps [github.com/bluenviron/gortsplib/v5](https://github.com/bluenviron/gortsplib) from 5.6.1 to 5.6.2.
- [Commits](https://github.com/bluenviron/gortsplib/compare/v5.6.1...v5.6.2)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v5
  dependency-version: 5.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* additional changes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-07-23 23:49:31 +02:00
Alessandro RosandGitHub 58c6099e50 ask for credentials only in case of protocols that support it (#5966)
When clients connect with some protocols (SRT, RTMP), they are unable
to provide credentials even if they are asked to. In this case, it's
useless to wait for credentials, and it's better to immediately log
authentication errors and apply the anti-brute force algorithm.
2026-07-19 16:52:14 +02:00
Alessandro RosandGitHub e14ada6f4b normalize authentication error messages (#5421) (#5959)
Log authentication errors as soon as possible, use the "warn" level,
use the same message whatever the author or protocol.
2026-07-19 10:04:17 +02:00
Alessandro RosandGitHub 96aeb1e603 rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable (#5957) 2026-07-18 17:58:16 +02:00
Alessandro RosandGitHub 8909e35a17 add runOnOnline / runOnOffline hooks (#5399) (#5956)
These are triggered and a stream is online (i.e. not just provided by
an offline segment).
2026-07-18 17:41:38 +02:00
Alessandro RosandGitHub e98b727277 fix error message (#5922)
'all' is a synonym for 'all_others'
2026-07-05 11:00:09 +02:00
Alessandro RosandGitHub 7e576d077f rtsp: use ServerStream.ReloadDesc to propagate description changes to RTSP servers (#5856) 2026-06-10 23:46:02 +02:00
Alessandro RosandGitHub 51f826057a moq: rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (#5841) 2026-06-07 16:34:37 +02:00
b2dc62e13c rtmp, rtsp: support PROXY protocol (#5754)
Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP
listeners so real client IPs are visible when running behind L4 proxies
(nginx stream, HAProxy, AWS NLB).

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-05 21:37:53 +02:00
Alessandro RosandGitHub f5d7ed3138 improve anti-brute force mechanism (#5835)
delay authentication failure responses by a random amount of time, use
the same anti-brute force mechanism with all users.
2026-06-05 17:01:36 +02:00
Alessandro RosandGitHub b5b63d02fc support reading and publishing with Media-over-QUIC (#5815)
Media-over-QUIC is a streaming protocol built upon cutting edge
protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs).
It's slightly faster than WebRTC, has an advanced data recovery
mechanism (placed at the frame level and not at the packet level), it
supports additional codecs (FLAC) and is less complicated to route.
2026-06-02 23:04:24 +02:00
5decbb4a3d Add user agent field to RTMP, RTSP, WebRTC, and HLS (#5753)
Surface user agent in the auth HTTP webhook payload as "userAgent"
and in the API structs for RTMP, RTSP, WebRTC and HLS connections.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-02 20:29:07 +02:00
Alessandro RosandGitHub 0d7cbd6df8 fix two hot reloading cases (#5817)
* reload SRT server when metrics server is reloaded
* reload API server when RTMPS server is reloaded
2026-06-02 10:06:24 +02:00
Alessandro RosandGitHub 7ab03cdc58 webrtc: rename incoming/outgoing into inbound/outbound (#5816) 2026-06-02 09:15:49 +02:00
Alessandro RosandGitHub e7b811fdc0 add --check-version command line flag (#5786)
this allows to check whether a new version is available without upgrading.
2026-05-19 11:42:32 +02:00
Alessandro RosandGitHub 09a733e5ce rpi: support changing text overlay dynamically (#5270) (#5748) 2026-05-13 18:13:59 +02:00
Alessandro RosandGitHub ddb5f7212f hls: add hlsCDNSecret (#5716)
this allows to serve HLS streams behind a CDN in a simplified way, compatible with the new HLS session system.
2026-04-30 15:52:11 +02:00
Alessandro RosandGitHub e6c20adf28 prevent code injection in case of MTX_QUERY in hooks (#5707)
When MTX_QUERY is used explicitly in hooks, for instance "curl
http://something/?$MTX_QUERY", it can be used to inject arbitrary
commands. MTX_QUERY is now url-encoded to prevent any abuse regardless
of the configuration.
2026-04-29 22:59:40 +02:00
Alessandro RosandGitHub 66a67188fe tests: use testing.T.TempDir rather than os.TempDir (#5709) 2026-04-29 22:47:47 +02:00
Alessandro RosandGitHub 679925484f use cmd.Start instead of NewCmd (#5706) 2026-04-29 13:29:33 +02:00
Alessandro RosandGitHub c4fdd7c23a use cmd.Start instead of NewCmd (#5705) 2026-04-29 12:53:27 +02:00
Alessandro RosandGitHub f87d9e659e hls: track sessions (#962) (#5683)
sessions are now tracked through cookies or query parameters.

This provides the ability to inspect sessions through logs, metrics and
API, allows more precise tracking of outbound bytes, decreases load on
external HTTP authentication URLs since they are now called once per
session and not once per request.
2026-04-25 21:10:34 +02:00
Alessandro RosandGitHub 68821502ce api: sort path readers (#5691) 2026-04-25 10:20:02 +02:00
Alessandro RosandGitHub 87543f91dd metrics: add labels to the output (#5687)
group metrics under visible, distinct labels.
2026-04-24 23:20:49 +02:00
Alessandro RosandGitHub f1c919b429 docs: merge 'embed streams' and 'web browsers' pages (#5684) 2026-04-24 17:37:20 +02:00
Alessandro RosandGitHub 6d6ebee80d deprecate authJWTInHTTPQuery and disable JWTs in query parameters (#5648)
This fixes a long standing security flaw. Even though it's a breaking
change, few users should be impacted since this feature has been discouraged
for some time.
2026-04-06 18:03:22 +02:00
Alessandro RosandGitHub d4c6f95291 dump unencrypted TLS sessions (#5624)
when dumpPackets is true, embed TLS master keys into the dump, in a
format which is natively compatible with Wireshark.
2026-04-04 14:46:43 +02:00
Alessandro RosandGitHub 0eb7089ed6 use safer atomic structs instead of atomic functions (#5622) 2026-03-31 11:30:50 +02:00
Alessandro RosandGitHub 3381b196fb solve codec labels internally (#5603)
stop using gortsplib format.Format.Codec() for getting codec names.
2026-03-21 18:22:49 +01:00
Alessandro RosandGitHub 2b302e7940 api: provide track details (#5307) (#5333) (#1726) (#5585) 2026-03-18 00:01:43 +01:00
Alessandro RosandGitHub c8e07b55d5 api: add new stats (#5582)
- RTSPSession.outboundRTPPacketsDiscarded
- Path.inboundFramesInError
- SRTConn.outboundFramesDiscarded
- WebRTCSession.outboundFramesDiscarded
- RTMPConn.outboundFramesDiscarded
- HLSMuxer.outboundFramesDiscarded
2026-03-17 17:22:15 +01:00
Alessandro RosandGitHub adf45596a3 api: rename WebRTC stats to match RTSP ones (#5581) 2026-03-16 23:29:25 +01:00
Alessandro RosandGitHub 02e05f1f16 metrics: add two missing SRT stats (#5580) 2026-03-16 22:18:16 +01:00
Alessandro RosandGitHub dfce20fefa api: add RTSP reported lost packets (#5198) (#5579)
The new outboundRtpPacketsReportedLost property allows to track RTP
packets that have been reported lost by readers. Furthermore, stats now
have a "inbound" or "outbound" prefix to improve readability.
2026-03-16 22:10:18 +01:00
Alessandro RosandGitHub 3bad7045c1 api: add missing enums and move all enums in dedicated components (#5576) 2026-03-15 22:09:00 +01:00
Alessandro RosandGitHub d1fd3df27c api: add user field to RTSP, RTMP, SRT, WebRTC conns and sessions (#5104) (#5565) 2026-03-14 00:03:58 +01:00
Roman SirokovandGitHub 9b36d50b8d optionally validate JWT iss and aud claims (#5569) 2026-03-13 22:38:40 +01:00
Alessandro RosandGitHub 16fdb71ee9 fix alwaysAvailableFile restarting when a publisher fails (#5536)
when a publisher try to start an online stream and there's an error,
alwaysAvailableFile restarted without any reason.
2026-02-28 22:43:15 +01:00
Alessandro RosandGitHub 549300cbd4 prevent using alwaysAvailableFile and alwaysAvailableTracks together (#5529) 2026-02-28 18:31:41 +01:00