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
Alessandro Ros and GitHub
0f42f087ab
test: add docslinks linter ( #5601 )
...
this checks links in the documentation.
2026-03-21 13:04:14 +01:00
Alessandro Ros and GitHub
a82e0c7a9d
rpi: restore Docker compatibility with armv6 devices ( #5590 ) ( #5595 )
2026-03-19 21:21:27 +01:00
Alessandro Ros and GitHub
12687e5abb
improve documentation ( #5586 )
2026-03-18 09:47:46 +01:00
Alessandro Ros and GitHub
2b302e7940
api: provide track details ( #5307 ) ( #5333 ) ( #1726 ) ( #5585 )
2026-03-18 00:01:43 +01:00
Alessandro Ros and GitHub
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 Ros and GitHub
adf45596a3
api: rename WebRTC stats to match RTSP ones ( #5581 )
2026-03-16 23:29:25 +01:00
Alessandro Ros and GitHub
02e05f1f16
metrics: add two missing SRT stats ( #5580 )
2026-03-16 22:18:16 +01:00
Alessandro Ros and GitHub
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 Ros and GitHub
3bad7045c1
api: add missing enums and move all enums in dedicated components ( #5576 )
2026-03-15 22:09:00 +01:00
Alessandro Ros and GitHub
c6bb332664
api: add deprecated fields to the OpenAPI definition ( #5575 )
2026-03-15 19:28:06 +01:00
Alessandro Ros and GitHub
a7290a2069
webrtc: support publishing multiple video/audio renditions ( #5573 )
...
this allows to receive multiple video tracks from OBS Studio with the
new WebRTC Simulcast feature introduced in v32.1.0.
2026-03-14 16:59:05 +01:00
Alessandro Ros and GitHub
d1fd3df27c
api: add user field to RTSP, RTMP, SRT, WebRTC conns and sessions ( #5104 ) ( #5565 )
2026-03-14 00:03:58 +01:00
Alessandro Ros and GitHub
a6856e9e58
tests: fix race conditions ( #5571 )
2026-03-13 22:32:06 +01:00
Alessandro Ros and GitHub
7c9023f139
docs: update ( #5570 )
2026-03-13 14:13:42 +01:00
Alessandro Ros and GitHub
e59fbd4590
docs: update ( #5567 )
2026-03-12 13:48:35 +01:00
Alessandro Ros and GitHub
979ddaf81d
webrtc: fix panic with WHIP POST authentication failures ( #5566 )
2026-03-12 12:14:49 +01:00
Alessandro Ros and GitHub
daec21324f
rtsp: fix rtsps scheme not being used in requests ( #5236 ) ( #5544 )
2026-03-07 18:30:40 +01:00
Alessandro Ros and GitHub
72832369f6
inherit MPEG-4 audio type from alwaysAvailableFile ( #5539 )
2026-03-01 10:12:35 +01:00
Alessandro Ros and GitHub
3f1ff994b7
revert to Go 1.25 ( #5521 ) ( #5538 )
...
It seems like Go 1.26 is causing segmentation faults, related to
channels, on Windows.
2026-03-01 10:09:11 +01:00
Alessandro Ros and GitHub
05ab631996
refactor alwaysAvailable tests ( #5537 )
2026-03-01 00:20:20 +01:00
Alessandro Ros and GitHub
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