Commit Graph
100 Commits
Author SHA1 Message Date
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 75bf1af38c fix clearing lists with environment variables (#5410) (#5924)
MTX_AUTHINTERNALUSERS_0_IPS, MTX_LOGDESTINATIONS and MTX_RTSPTRANSPORTS
can now be used to clear their corresponding list by setting them to an
empty value.
2026-07-18 10:56:46 +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 99f804d733 api: generate most of OpenAPI automatically (#5918)
enums and structs are now generated automatically. This eliminates some
inconsistencies and makes development easier.
2026-07-04 17:45:43 +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 7eb5d30075 prevent truncation of 64-bit values on 32-bit platforms (#5902) 2026-06-28 11:37:14 +02:00
Alessandro RosandGitHub bf098c7eb5 support encoding secondary stream with H264 (2/2) (#4485) (#5898) 2026-06-28 11:19:23 +02:00
Alessandro RosandGitHub 1a7c10af1e rpicamera: support encoding primary stream with MJPEG (2/2) (#5892) 2026-06-27 19:19:36 +02:00
Alessandro RosandGitHub 07d0e232b2 rpi: add unified rpiCameraH264Profile, rpiCameraH264Level params (#5894)
These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
2026-06-25 22:07:36 +02:00
Alessandro RosandGitHub b91affa054 rpi: exclude additional code from non-arm builds (#5893) 2026-06-25 19:37:28 +02:00
Alessandro RosandGitHub 90b8d5c943 improve HTTP server performance (#5886)
log incoming requests without cloning.
2026-06-20 12:03:35 +02:00
Alessandro RosandGitHub 28d648da37 move Content-Types to log in a map (#5875) 2026-06-20 09:35:55 +02:00
Alessandro RosandGitHub 0996186cdf restore quic-go/webtransport-go (#5876) 2026-06-16 15:09:00 +02:00
Alessandro RosandGitHub 874b47d0b0 remove redundant copy operation (#5862)
Since #5856, OrigDesc of Streams is never changed, so there's no reason
to clone offlineDesc before putting it into OrigDesc.
2026-06-13 11:45:44 +02:00
Alessandro RosandGitHub d0cf294637 print body of selected HTTP responses when log level is debug (#5859) 2026-06-11 00:53:52 +02:00
Alessandro RosandGitHub 959f58cee9 limit size of HTTP requests shown in debug logs (#5858) 2026-06-11 00:31:10 +02:00
Alessandro RosandGitHub 3940e68415 rtsp: restore support for H264 packetization-mode 0 (#5846) (#5857)
H264 streams with packetization-mode=0 cannot be routed with UDP since
packets are too big. Inbound streams with packetization-mode=0 are
blocked by the server since v1.19.0 but this caused compatibility
issues with some cameras.

The server is now able to receive such streams with TCP, and
automatically remuxes them in streams with packetization-mode=1, which
can be routed freely.
2026-06-10 23:59:40 +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
Alessandro RosandGitHub 17fadee594 restrict GitHub Actions workflow permissions (#5840) 2026-06-07 16:32:22 +02:00
Alessandro RosandGitHub c8eabc0307 hls: fix race condition in tests (#5842) 2026-06-07 16:28:27 +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 5b9b6afcb8 replace errors.As with modern errors.AsType (#5834) 2026-06-05 09:56:06 +02:00
Alessandro RosandGitHub de7b4d5a29 restore pion/ice (#5837) 2026-06-05 09:16:33 +02:00
Alessandro RosandGitHub fa5e368341 moq: fix race condition when closing server (#5836)
some sessions were hanging if they were concurrently being closed by
the remote peer.
2026-06-04 23:27:14 +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
Alessandro RosandGitHub 640ddde51b webrtc: fix connectivity after network changes (#5097) (#5818) 2026-06-02 21:40:00 +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 0f5a76e253 modernize code (#5814) 2026-05-31 20:33:48 +02:00
Alessandro RosandGitHub 903627ffed apply prettier to the entire repository (#5799) 2026-05-26 11:35:14 +02:00
Alessandro RosandGitHub e63dd7132a hls: remove redundant JavaScript argument (#5806) 2026-05-26 11:22:19 +02:00
Alessandro RosandGitHub 66a824d3f1 webrtc: make handleError accept strings only (#5805) 2026-05-26 11:13:01 +02:00
Alessandro RosandGitHub 17efb211a9 webrtc: make JavaScript internal variables private (#5804) 2026-05-26 11:09:05 +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 111302f9e3 use file name suffix for OS-specific code wherever possible (#5787) 2026-05-19 11:48:05 +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 c05c14d9af webrtc: support WHIP ICE restarts (#5183) (#5770) 2026-05-15 19:15:42 +02:00
Alessandro RosandGitHub aaa4a5dbc6 docs: update (#5756) 2026-05-14 21:22:17 +02:00
Alessandro RosandGitHub a439fd7e0d bump Ubuntu to 24.04 (#5769) 2026-05-14 19:32:37 +02:00
Alessandro RosandGitHub 09a733e5ce rpi: support changing text overlay dynamically (#5270) (#5748) 2026-05-13 18:13:59 +02:00
Alessandro RosandGitHub cdea2dc167 webrtc: support interacting with servers with no trickle ICE (#5273) (#5757) 2026-05-12 21:07:16 +02:00
Alessandro RosandGitHub f542ccaf19 webrtc: fix checking POST responses (#5758) 2026-05-12 19:06:08 +02:00
Alessandro RosandGitHub 37c3d0d627 docs: update (#5747) 2026-05-10 20:40:09 +02:00
Alessandro RosandGitHub 0ad6897a4d fix missing permission in GitHub actions (#5722) 2026-04-30 16:43:19 +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
Alessandro RosandGitHub 9b4531364e hls, webrtc: prevent open redirect attacks (#5708) 2026-04-30 00:10:46 +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 744c35d93f use temporary redirects instead of permanent redirects (#5710)
this prevents unwanted caching.
2026-04-29 22:44:11 +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 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 c4a1ba332a metrics: fix race condition when reloading configuration (#5693) 2026-04-25 18:56:55 +02:00
Alessandro RosandGitHub 519c202546 metrics: use an enum for parsing metrics type (#5692) 2026-04-25 17:27:01 +02:00
Alessandro RosandGitHub 68821502ce api: sort path readers (#5691) 2026-04-25 10:20:02 +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 6aa494cc15 metrics: fix filtering by type=rtmp_conns and type=rtmps_conns (#5689) 2026-04-24 23:32:39 +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 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 cae9920f00 hls: improve muxer performance (#5660)
use a mutex instead of a channel to get current instance.
2026-04-21 20:16:36 +02:00
Alessandro RosandGitHub 2589c99639 return a custom error when body size limit is exceeded (#5675) 2026-04-21 19:00:30 +02:00
Alessandro RosandGitHub caeccdceff prevent out-of-memory errors (#5674)
impose a maximum size on body of incoming HTTP requests and responses.
2026-04-19 21:39:08 +02:00
Alessandro RosandGitHub 67caaea4fe playback: return errors as JSON (#5656)
this is aligned with all other HTTP-based services.
2026-04-09 17:11:03 +02:00
Alessandro RosandGitHub c7826d406b hls: return JSON with error message in case path conf is not available (#5655)
this behavior is aligned with WebRTC one.
2026-04-08 23:26:04 +02:00
Alessandro RosandGitHub 14e0a8f55b expose token passed as query parameter to HTTP authentication too (#5649)
this allows to parse tokens coming from RTSP and RTMP without additional effort.
2026-04-06 18:10:29 +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 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 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 f52a63858c docs: add instructions on how to use encryption with OBS Studio (#5636) 2026-04-03 22:04:20 +02:00
Alessandro RosandGitHub f453b59cd6 improve listener labels (#5635)
add a label after every "listener opened on :XXX" message that mentions
protocols of every listener.
2026-04-03 16:35:31 +02:00
Alessandro RosandGitHub 5addbed337 Revert "modernize make dockerhub (#5628)" (#5630)
This reverts commit d76c6b561a.
2026-03-31 23:04:24 +02:00
Alessandro RosandGitHub d76c6b561a modernize make dockerhub (#5628) 2026-03-31 22:34:46 +02:00
Alessandro RosandGitHub 0eb7089ed6 use safer atomic structs instead of atomic functions (#5622) 2026-03-31 11:30:50 +02:00
Alessandro RosandGitHub 525c020736 docs: fix typo (#5621) 2026-03-31 11:08:23 +02:00
Alessandro RosandGitHub 7418e51031 prevent directory traversal attacks (#5602)
Path names are used as part of paths in several components: in the
recorder, in the playback server and in every HTTP-based component
(WebRTC, HLS, API). Special characters that allow to escape from the
intended directory are now forbidden in order to prevent directory
traversal attacks.
2026-03-23 20:16:12 +01:00
Alessandro RosandGitHub d5d1de0bd2 webrtc: strip TWCC extension of incoming RTP packets (#5146) (#5605)
The TWCC extension is used as part of the WebRTC congestion control
algorithm placed between the publisher and the server. If this
extension is routed untouched from the server to readers, it messes
with the congestion control algorithm present between the server and
each reader. Remove it.
2026-03-23 14:14:46 +01:00
Alessandro RosandGitHub 33f12816cd docs: update (#5598) 2026-03-22 10:38:53 +01: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