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
Alessandro Ros and GitHub
2f91c8198c
fix audio from alwaysAvailableFile not being streamed ( #5535 )
2026-02-28 21:46:25 +01:00
Alessandro Ros and GitHub
10e0271755
fix corrupted video with alwaysAvailableFile ( #5534 )
...
when alwaysAvailableFile points to a file with a H265 or H264 track,
server is started, an online stream is published and then closed, video
was getting corrupted since the online video was overriding the
parameters of the offline video.
2026-02-28 21:06:07 +01:00
Alessandro Ros and GitHub
4ebfcde8e2
fix MPEG-4 audio configuration not matching error ( #5468 ) ( #5533 )
...
This happened when using alwaysAvailableFile and a MPEG-4 audio track.
2026-02-28 20:17:44 +01:00
Alessandro Ros and GitHub
5e80554d20
improve playback precision of alwaysAvailable offline segment ( #5530 )
2026-02-28 18:39:52 +01:00
Alessandro Ros and GitHub
549300cbd4
prevent using alwaysAvailableFile and alwaysAvailableTracks together ( #5529 )
2026-02-28 18:31:41 +01:00
Alessandro Ros and GitHub
2fcefb7093
switch to actions/attest ( #5528 )
2026-02-28 13:38:03 +01:00
Alessandro Ros and GitHub
13551f0d98
fix panic when setting writeQueueSize to zero ( #5360 ) ( #5527 )
2026-02-28 09:18:42 +01:00
Alessandro Ros and GitHub
3568c54a02
improve JSON decoder performance ( #5526 )
...
avoid decoding JSON twice.
2026-02-27 23:25:04 +01:00
Alessandro Ros and GitHub
e0a5e3c08c
fill product version of Windows executable ( #5167 ) ( #5511 )
2026-02-27 23:24:03 +01:00
Alessandro Ros and GitHub
580bfe86d3
refactor documentation ( #5509 )
...
expand "publish" and "read" pages into several subpages.
2026-02-25 22:37:50 +01:00
Alessandro Ros and GitHub
4974cacb94
improve video/audio sync of alwaysAvailable ( #5443 ) ( #5508 )
...
store elapsed time once for the entire stream and start PTS of sub
streams from there.
2026-02-22 18:25:32 +01:00
Alessandro Ros and GitHub
35e1f486c9
add integrated packet dumper ( #5488 )
...
this allows to dump any incoming and outgoing packet, to disk, in
pcapng format.
2026-02-22 13:34:05 +01:00
Alessandro Ros and GitHub
a93f75cdc3
remove double check ( #5457 ) ( #5503 )
2026-02-22 13:28:54 +01:00
Alessandro Ros and GitHub
52d14ba47c
fix error 400 with parallel describe and publish requests ( #5095 ) ( #5502 )
...
When a path is dynamic, and the path receives multiple describe and
publish requests in parallel, describe requests might cause the path to
be deleted, and this might cause pending publish requests to fail,
since the path has been deleted.
This patch improves the situation by checking for pending requests
before deleting a path.
2026-02-22 00:00:41 +01:00
Alessandro Ros and GitHub
48ab09fcaf
docs: make links work in GitHub too ( #5501 )
2026-02-21 19:01:39 +01:00
Alessandro Ros and GitHub
e968b88a9f
add redirects file ( #5500 )
...
this allows to map old documentation files to new ones.
2026-02-21 18:58:39 +01:00
Alessandro Ros and GitHub
951848e10e
bump pion/webrtc ( #5499 )
2026-02-21 18:19:46 +01:00
Alessandro Ros and GitHub
96d6dbae12
rpi: fix kernel warning when closing camera ( #4988 ) ( #5474 )
2026-02-21 14:37:37 +01:00
Alessandro Ros and GitHub
85999fbd4d
temporarily replace pion/webrtc due to pion/webrtc#3383 ( #5498 )
2026-02-21 14:32:06 +01:00
Alessandro Ros and GitHub
98a9cf8238
improve tests ( #5497 )
2026-02-21 14:25:32 +01:00
Alessandro Ros and GitHub
28b0e21910
suggest using JWTs in query parameters for RTSP and RTMP ( #5267 ) ( #5493 )
...
In case of RTSP and RTMP, JWTs cannot be used as passwords since
there's a size limit. Therefore, documentation is updated to suggest
passing JWT through query parameters, and authJWTInHTTPQuery is updated
to act on HTTP requests only.
2026-02-20 22:16:56 +01:00