Alessandro Ros and GitHub
96aeb1e603
rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable ( #5957 )
2026-07-18 17:58:16 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
e98b727277
fix error message ( #5922 )
...
'all' is a synonym for 'all_others'
2026-07-05 11:00:09 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
f4decfd41b
docs: fix MoQ read URL ( #5904 )
2026-06-28 16:29:24 +02:00
Alessandro Ros and GitHub
ce00edb92f
docs: change suggested hls.js CDN ( #5903 )
2026-06-28 16:29:12 +02:00
Alessandro Ros and GitHub
7eb5d30075
prevent truncation of 64-bit values on 32-bit platforms ( #5902 )
2026-06-28 11:37:14 +02:00
Alessandro Ros and GitHub
bf098c7eb5
support encoding secondary stream with H264 (2/2) ( #4485 ) ( #5898 )
2026-06-28 11:19:23 +02:00
Alessandro Ros and GitHub
1a7c10af1e
rpicamera: support encoding primary stream with MJPEG (2/2) ( #5892 )
2026-06-27 19:19:36 +02:00
Alessandro Ros and GitHub
07d0e232b2
rpi: add unified rpiCameraH264Profile, rpiCameraH264Level params ( #5894 )
...
These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
2026-06-25 22:07:36 +02:00
Alessandro Ros and GitHub
b91affa054
rpi: exclude additional code from non-arm builds ( #5893 )
2026-06-25 19:37:28 +02:00
Alessandro Ros and GitHub
90b8d5c943
improve HTTP server performance ( #5886 )
...
log incoming requests without cloning.
2026-06-20 12:03:35 +02:00
Alessandro Ros and GitHub
28d648da37
move Content-Types to log in a map ( #5875 )
2026-06-20 09:35:55 +02:00
Alessandro Ros and GitHub
0996186cdf
restore quic-go/webtransport-go ( #5876 )
2026-06-16 15:09:00 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
d0cf294637
print body of selected HTTP responses when log level is debug ( #5859 )
2026-06-11 00:53:52 +02:00
Alessandro Ros and GitHub
959f58cee9
limit size of HTTP requests shown in debug logs ( #5858 )
2026-06-11 00:31:10 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
7e576d077f
rtsp: use ServerStream.ReloadDesc to propagate description changes to RTSP servers ( #5856 )
2026-06-10 23:46:02 +02:00
Alessandro Ros and GitHub
51f826057a
moq: rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address ( #5841 )
2026-06-07 16:34:37 +02:00
Alessandro Ros and GitHub
17fadee594
restrict GitHub Actions workflow permissions ( #5840 )
2026-06-07 16:32:22 +02:00
Alessandro Ros and GitHub
c8eabc0307
hls: fix race condition in tests ( #5842 )
2026-06-07 16:28:27 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
5b9b6afcb8
replace errors.As with modern errors.AsType ( #5834 )
2026-06-05 09:56:06 +02:00
Alessandro Ros and GitHub
de7b4d5a29
restore pion/ice ( #5837 )
2026-06-05 09:16:33 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
640ddde51b
webrtc: fix connectivity after network changes ( #5097 ) ( #5818 )
2026-06-02 21:40:00 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
7ab03cdc58
webrtc: rename incoming/outgoing into inbound/outbound ( #5816 )
2026-06-02 09:15:49 +02:00
Alessandro Ros and GitHub
0f5a76e253
modernize code ( #5814 )
2026-05-31 20:33:48 +02:00
Alessandro Ros and GitHub
903627ffed
apply prettier to the entire repository ( #5799 )
2026-05-26 11:35:14 +02:00
Alessandro Ros and GitHub
e63dd7132a
hls: remove redundant JavaScript argument ( #5806 )
2026-05-26 11:22:19 +02:00
Alessandro Ros and GitHub
66a824d3f1
webrtc: make handleError accept strings only ( #5805 )
2026-05-26 11:13:01 +02:00
Alessandro Ros and GitHub
17efb211a9
webrtc: make JavaScript internal variables private ( #5804 )
2026-05-26 11:09:05 +02:00
Alessandro Ros and GitHub
2795962d8e
hls: support reading and publishing FLAC ( #5778 ) ( #5791 )
2026-05-21 17:00:59 +02:00
Alessandro Ros and GitHub
0edc3dbe86
rtmp: support reading and writing FLAC ( #5778 ) ( #5789 )
2026-05-21 14:50:06 +02:00
Alessandro Ros and GitHub
111302f9e3
use file name suffix for OS-specific code wherever possible ( #5787 )
2026-05-19 11:48:05 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
c05c14d9af
webrtc: support WHIP ICE restarts ( #5183 ) ( #5770 )
2026-05-15 19:15:42 +02:00
Alessandro Ros and GitHub
aaa4a5dbc6
docs: update ( #5756 )
2026-05-14 21:22:17 +02:00
Alessandro Ros and GitHub
a439fd7e0d
bump Ubuntu to 24.04 ( #5769 )
2026-05-14 19:32:37 +02:00
Alessandro Ros and GitHub
09a733e5ce
rpi: support changing text overlay dynamically ( #5270 ) ( #5748 )
2026-05-13 18:13:59 +02:00
Alessandro Ros and GitHub
cdea2dc167
webrtc: support interacting with servers with no trickle ICE ( #5273 ) ( #5757 )
2026-05-12 21:07:16 +02:00
Alessandro Ros and GitHub
f542ccaf19
webrtc: fix checking POST responses ( #5758 )
2026-05-12 19:06:08 +02:00
Alessandro Ros and GitHub
37c3d0d627
docs: update ( #5747 )
2026-05-10 20:40:09 +02:00
Alessandro Ros and GitHub
0ad6897a4d
fix missing permission in GitHub actions ( #5722 )
2026-04-30 16:43:19 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
585b17375e
docs: remove the "variants" column from publish and read pages ( #5717 )
2026-04-30 13:19:50 +02:00
Alessandro Ros and GitHub
a9d4b2051e
docs: format ( #5715 )
2026-04-30 12:34:22 +02:00
Alessandro Ros and GitHub
57afd4e0f4
docs: move codecs in specific protocol pages ( #5713 )
2026-04-30 12:22:57 +02:00
Alessandro Ros and GitHub
9b4531364e
hls, webrtc: prevent open redirect attacks ( #5708 )
2026-04-30 00:10:46 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
66a67188fe
tests: use testing.T.TempDir rather than os.TempDir ( #5709 )
2026-04-29 22:47:47 +02:00
Alessandro Ros and GitHub
744c35d93f
use temporary redirects instead of permanent redirects ( #5710 )
...
this prevents unwanted caching.
2026-04-29 22:44:11 +02:00
Alessandro Ros and GitHub
679925484f
use cmd.Start instead of NewCmd ( #5706 )
2026-04-29 13:29:33 +02:00
Alessandro Ros and GitHub
c4fdd7c23a
use cmd.Start instead of NewCmd ( #5705 )
2026-04-29 12:53:27 +02:00
Alessandro Ros and GitHub
5412d71e3d
docs: fix CDN tutorial ( #5701 )
2026-04-27 11:40:06 +02:00
Alessandro Ros and GitHub
8107f7cc96
docs: update ( #5699 )
2026-04-26 20:48:23 +02:00
Alessandro Ros and GitHub
2815930529
hls: support serving streams with a CDN ( #5696 )
2026-04-26 20:24:02 +02:00
Alessandro Ros and GitHub
450fa3fa41
docs: add scaling page ( #5695 )
2026-04-26 16:33:14 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
c4a1ba332a
metrics: fix race condition when reloading configuration ( #5693 )
2026-04-25 18:56:55 +02:00
Alessandro Ros and GitHub
519c202546
metrics: use an enum for parsing metrics type ( #5692 )
2026-04-25 17:27:01 +02:00
Alessandro Ros and GitHub
68821502ce
api: sort path readers ( #5691 )
2026-04-25 10:20:02 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
6aa494cc15
metrics: fix filtering by type=rtmp_conns and type=rtmps_conns ( #5689 )
2026-04-24 23:32:39 +02:00
Alessandro Ros and GitHub
87543f91dd
metrics: add labels to the output ( #5687 )
...
group metrics under visible, distinct labels.
2026-04-24 23:20:49 +02:00
Alessandro Ros and GitHub
91aa6d9c6d
docs: remove redundant instructions ( #5688 )
2026-04-24 19:01:54 +02:00
Alessandro Ros and GitHub
4c10d7e7c8
metrics: improve tests ( #5686 )
2026-04-24 18:26:54 +02:00
Alessandro Ros and GitHub
43d649d791
docs: add missing metrics ( #5685 )
2026-04-24 17:39:34 +02:00
Alessandro Ros and GitHub
f1c919b429
docs: merge 'embed streams' and 'web browsers' pages ( #5684 )
2026-04-24 17:37:20 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
2589c99639
return a custom error when body size limit is exceeded ( #5675 )
2026-04-21 19:00:30 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
dc7bd9a096
docs: update ( #5645 )
2026-04-05 11:36:51 +02:00
Alessandro Ros and GitHub
b133a18c42
docs: update ( #5644 )
2026-04-05 11:33:17 +02:00
Alessandro Ros and GitHub
08466b0d95
docs: update links ( #5641 )
2026-04-05 09:55:26 +02:00
Alessandro Ros and GitHub
79cf43644d
docs: update ( #5640 )
2026-04-05 09:51:17 +02:00
Alessandro Ros and GitHub
d44413a5ba
docs: reorganize documentation ( #5639 )
2026-04-04 22:37:19 +02:00
Alessandro Ros and GitHub
d7a0111aa6
docs: add architecture page ( #5638 )
2026-04-04 22:13:54 +02:00
Alessandro Ros and GitHub
6a2bccd25b
add docsorder linter ( #5637 )
2026-04-04 17:01:15 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
f52a63858c
docs: add instructions on how to use encryption with OBS Studio ( #5636 )
2026-04-03 22:04:20 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
5addbed337
Revert "modernize make dockerhub ( #5628 )" ( #5630 )
...
This reverts commit d76c6b561a .
2026-03-31 23:04:24 +02:00
Alessandro Ros and GitHub
d76c6b561a
modernize make dockerhub ( #5628 )
2026-03-31 22:34:46 +02:00
Alessandro Ros and GitHub
0eb7089ed6
use safer atomic structs instead of atomic functions ( #5622 )
2026-03-31 11:30:50 +02:00
Alessandro Ros and GitHub
525c020736
docs: fix typo ( #5621 )
2026-03-31 11:08:23 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
33f12816cd
docs: update ( #5598 )
2026-03-22 10:38:53 +01:00
Alessandro Ros and GitHub
3381b196fb
solve codec labels internally ( #5603 )
...
stop using gortsplib format.Format.Codec() for getting codec names.
2026-03-21 18:22:49 +01:00