Commit Graph
118 Commits
Author SHA1 Message Date
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 168c5900b1 docs: update (#6022) 2026-08-03 11:43:33 +00:00
Alessandro RosandGitHub 83e04d8255 improve documentation (#5985) 2026-07-24 15:43:06 +02:00
Alessandro RosandGitHub 519a04e490 docs: add missing MoQ ports (#5983) 2026-07-24 09:12:48 +02:00
Alessandro RosandGitHub 4c5f558006 hls, webrtc: prevent cross-origin unauthorized access (#5975)
when a user had previously inserted credentials into a MediaMTX
instance through a browser, and AllowOrigins was set to a wildcard,
third-party websites visited by the user were allowed to read streams
without restrictions. This is now prevented by returning "*" in
Access-Control-Allow-Origins when AllowOrigins is a wildcard, a
behavior that prevents browsers from sharing credentials with
third-party websites.
2026-07-23 23:06:15 +02:00
Alessandro RosandGitHub 6da35dc389 moq: support draft-19 of the specification (#5968)
* support draft-19 of the specification

* support subscribing the same track multiple times
2026-07-21 00:24:03 +02:00
Alessandro RosandGitHub be610a6a04 docs: add fail2ban integration (#5016) (#5967) 2026-07-19 17:03:57 +02:00
Alessandro RosandGitHub 0378876293 fix wrong PTS and wrong playback of alwaysAvailableFile (#5436) (#5960)
PTS offset of samples was not properly considered, and sleep between
samples was PTS-based instead of being DTS-based.
2026-07-18 22:39:28 +02:00
Alessandro RosandGitHub fa7a89f840 rtsp: restrict UDP port range to 32768-60999 (#5398) (#5958)
this is the default Linux ephemeral port range.
2026-07-18 20:59:33 +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 f4decfd41b docs: fix MoQ read URL (#5904) 2026-06-28 16:29:24 +02:00
Alessandro RosandGitHub ce00edb92f docs: change suggested hls.js CDN (#5903) 2026-06-28 16:29:12 +02:00
Alessandro RosandGitHub 28d648da37 move Content-Types to log in a map (#5875) 2026-06-20 09:35:55 +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 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
6d1f152cc2 support using regexp groups in every part of a source URL (#5766) (#5779)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-03 23:40:22 +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 2795962d8e hls: support reading and publishing FLAC (#5778) (#5791) 2026-05-21 17:00:59 +02:00
Alessandro RosandGitHub 0edc3dbe86 rtmp: support reading and writing FLAC (#5778) (#5789) 2026-05-21 14:50:06 +02:00
Alessandro RosandGitHub aaa4a5dbc6 docs: update (#5756) 2026-05-14 21:22:17 +02:00
Alessandro RosandGitHub 37c3d0d627 docs: update (#5747) 2026-05-10 20:40:09 +02:00
bluenviron-botandGitHub dc979a0be8 bump Golang to 1.26 (#5721) 2026-04-30 16:23:45 +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 585b17375e docs: remove the "variants" column from publish and read pages (#5717) 2026-04-30 13:19:50 +02:00
Alessandro RosandGitHub a9d4b2051e docs: format (#5715) 2026-04-30 12:34:22 +02:00
Alessandro RosandGitHub 57afd4e0f4 docs: move codecs in specific protocol pages (#5713) 2026-04-30 12:22:57 +02:00
ehandGitHub fcf5eb092d hls: support reading and writing KLV (#5604) 2026-04-30 12:14:00 +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 5412d71e3d docs: fix CDN tutorial (#5701) 2026-04-27 11:40:06 +02:00
Alessandro RosandGitHub 8107f7cc96 docs: update (#5699) 2026-04-26 20:48:23 +02:00
Alessandro RosandGitHub 2815930529 hls: support serving streams with a CDN (#5696) 2026-04-26 20:24:02 +02:00
Alessandro RosandGitHub 450fa3fa41 docs: add scaling page (#5695) 2026-04-26 16:33:14 +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 57671a3913 metrics: add readerType attribute to the path_readers metric (#5690)
this allows to filter path readers by type.
2026-04-25 10:12:24 +02:00
Alessandro RosandGitHub 91aa6d9c6d docs: remove redundant instructions (#5688) 2026-04-24 19:01:54 +02:00
Alessandro RosandGitHub 4c10d7e7c8 metrics: improve tests (#5686) 2026-04-24 18:26:54 +02:00
Alessandro RosandGitHub 43d649d791 docs: add missing metrics (#5685) 2026-04-24 17:39:34 +02:00
Alessandro RosandGitHub f1c919b429 docs: merge 'embed streams' and 'web browsers' pages (#5684) 2026-04-24 17:37:20 +02:00
Alessandro RosandGitHub 4472bcfc4b use "token" as query parameter key to pass tokens (#5647)
the legacy "jwt" query parameter key is still supported.
2026-04-06 17:51:59 +02:00
Alessandro RosandGitHub 141b789fa9 docs: further decrease Keycloak JWT length (#5646)
this helps a lot in using JWTs with players with URL limitations.
2026-04-06 17:23:10 +02:00
Alessandro RosandGitHub dc7bd9a096 docs: update (#5645) 2026-04-05 11:36:51 +02:00
Alessandro RosandGitHub b133a18c42 docs: update (#5644) 2026-04-05 11:33:17 +02:00
Alessandro RosandGitHub 08466b0d95 docs: update links (#5641) 2026-04-05 09:55:26 +02:00
Alessandro RosandGitHub 79cf43644d docs: update (#5640) 2026-04-05 09:51:17 +02:00
Alessandro RosandGitHub d44413a5ba docs: reorganize documentation (#5639) 2026-04-04 22:37:19 +02:00
Alessandro RosandGitHub d7a0111aa6 docs: add architecture page (#5638) 2026-04-04 22:13:54 +02:00
Alessandro RosandGitHub 6a2bccd25b add docsorder linter (#5637) 2026-04-04 17:01:15 +02:00
Alessandro RosandGitHub f52a63858c docs: add instructions on how to use encryption with OBS Studio (#5636) 2026-04-03 22:04:20 +02:00