Commit Graph
100 Commits
Author SHA1 Message Date
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
Alessandro RosandGitHub 0f42f087ab test: add docslinks linter (#5601)
this checks links in the documentation.
2026-03-21 13:04:14 +01:00
Alessandro RosandGitHub a82e0c7a9d rpi: restore Docker compatibility with armv6 devices (#5590) (#5595) 2026-03-19 21:21:27 +01:00
Alessandro RosandGitHub 12687e5abb improve documentation (#5586) 2026-03-18 09:47:46 +01:00
Alessandro RosandGitHub 2b302e7940 api: provide track details (#5307) (#5333) (#1726) (#5585) 2026-03-18 00:01:43 +01:00
Alessandro RosandGitHub 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 RosandGitHub adf45596a3 api: rename WebRTC stats to match RTSP ones (#5581) 2026-03-16 23:29:25 +01:00
Alessandro RosandGitHub 02e05f1f16 metrics: add two missing SRT stats (#5580) 2026-03-16 22:18:16 +01:00
Alessandro RosandGitHub 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 RosandGitHub 3bad7045c1 api: add missing enums and move all enums in dedicated components (#5576) 2026-03-15 22:09:00 +01:00
Alessandro RosandGitHub c6bb332664 api: add deprecated fields to the OpenAPI definition (#5575) 2026-03-15 19:28:06 +01:00
Alessandro RosandGitHub 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 RosandGitHub d1fd3df27c api: add user field to RTSP, RTMP, SRT, WebRTC conns and sessions (#5104) (#5565) 2026-03-14 00:03:58 +01:00
Alessandro RosandGitHub a6856e9e58 tests: fix race conditions (#5571) 2026-03-13 22:32:06 +01:00
Alessandro RosandGitHub 7c9023f139 docs: update (#5570) 2026-03-13 14:13:42 +01:00
Alessandro RosandGitHub e59fbd4590 docs: update (#5567) 2026-03-12 13:48:35 +01:00
Alessandro RosandGitHub 979ddaf81d webrtc: fix panic with WHIP POST authentication failures (#5566) 2026-03-12 12:14:49 +01:00
Alessandro RosandGitHub daec21324f rtsp: fix rtsps scheme not being used in requests (#5236) (#5544) 2026-03-07 18:30:40 +01:00
Alessandro RosandGitHub 72832369f6 inherit MPEG-4 audio type from alwaysAvailableFile (#5539) 2026-03-01 10:12:35 +01:00
Alessandro RosandGitHub 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 RosandGitHub 05ab631996 refactor alwaysAvailable tests (#5537) 2026-03-01 00:20:20 +01:00
Alessandro RosandGitHub 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 RosandGitHub 2f91c8198c fix audio from alwaysAvailableFile not being streamed (#5535) 2026-02-28 21:46:25 +01:00
Alessandro RosandGitHub 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 RosandGitHub 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 RosandGitHub 5e80554d20 improve playback precision of alwaysAvailable offline segment (#5530) 2026-02-28 18:39:52 +01:00
Alessandro RosandGitHub 549300cbd4 prevent using alwaysAvailableFile and alwaysAvailableTracks together (#5529) 2026-02-28 18:31:41 +01:00
Alessandro RosandGitHub 2fcefb7093 switch to actions/attest (#5528) 2026-02-28 13:38:03 +01:00
Alessandro RosandGitHub 13551f0d98 fix panic when setting writeQueueSize to zero (#5360) (#5527) 2026-02-28 09:18:42 +01:00
Alessandro RosandGitHub 3568c54a02 improve JSON decoder performance (#5526)
avoid decoding JSON twice.
2026-02-27 23:25:04 +01:00
Alessandro RosandGitHub e0a5e3c08c fill product version of Windows executable (#5167) (#5511) 2026-02-27 23:24:03 +01:00
Alessandro RosandGitHub 580bfe86d3 refactor documentation (#5509)
expand "publish" and "read" pages into several subpages.
2026-02-25 22:37:50 +01:00
Alessandro RosandGitHub 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 RosandGitHub 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 RosandGitHub a93f75cdc3 remove double check (#5457) (#5503) 2026-02-22 13:28:54 +01:00
Alessandro RosandGitHub 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 RosandGitHub 48ab09fcaf docs: make links work in GitHub too (#5501) 2026-02-21 19:01:39 +01:00
Alessandro RosandGitHub e968b88a9f add redirects file (#5500)
this allows to map old documentation files to new ones.
2026-02-21 18:58:39 +01:00
Alessandro RosandGitHub 951848e10e bump pion/webrtc (#5499) 2026-02-21 18:19:46 +01:00
Alessandro RosandGitHub 96d6dbae12 rpi: fix kernel warning when closing camera (#4988) (#5474) 2026-02-21 14:37:37 +01:00
Alessandro RosandGitHub 85999fbd4d temporarily replace pion/webrtc due to pion/webrtc#3383 (#5498) 2026-02-21 14:32:06 +01:00
Alessandro RosandGitHub 98a9cf8238 improve tests (#5497) 2026-02-21 14:25:32 +01:00
Alessandro RosandGitHub 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
Alessandro RosandGitHub fd3018de75 restore datarhei/gosrt (#5490) 2026-02-20 22:13:08 +01:00
Alessandro RosandGitHub 87fbfebf06 webrtc: add whepBearerTokenParameter (#3796) (#5486)
this allows to pass Authorization: Bearer to servers that require it.
2026-02-19 11:57:39 +01:00
Alessandro RosandGitHub d492db6114 docs: update (#5471) 2026-02-19 11:57:07 +01:00
Alessandro RosandGitHub 3c46bfd337 warn when alwaysAvailableFile is not MP4 (#5483) 2026-02-18 21:29:42 +01:00
Alessandro RosandGitHub 336714157f fix codec parameters not being loaded from alwaysAvailableFile (#5484) 2026-02-18 21:29:24 +01:00
Alessandro RosandGitHub f991821a5f webrtc: allow tuning WHEP timeouts (#5027) (#5479)
add whepHandshakeTimeout, whepTrackGatherTimeout, whepSTUNGatherTimeout
2026-02-18 16:29:25 +01:00
Alessandro RosandGitHub ddaafd4ef3 rtmp: prevent legacy clients from reading multiple video/audio tracks (#5478) 2026-02-18 11:02:58 +01:00
Alessandro RosandGitHub cb69d64fac deprecate unix+rtp (#5318) (#4999) (#5351) (#5470)
Unix socket are stream-based connections, while RTP requires
packet-based connections. While packet-based Unix sockets exist
(unixgram), no client supports them. Consequently we are forced to
deprecate unix+rtp.
2026-02-15 13:02:18 +01:00
Alessandro RosandGitHub bbefa5bc8b improve tests (#5469) 2026-02-15 12:50:26 +01:00
Alessandro RosandGitHub a0bbdd9655 replace YAML parser (#5461)
switch from the unmaintained gopkg.in/yaml to goccy/go-yaml
2026-02-12 15:51:14 +01:00
Alessandro RosandGitHub 9793f90453 make config file YAML 1.2 compliant (#5345) (#5456) 2026-02-12 15:46:06 +01:00
Alessandro RosandGitHub 832cc05f39 api: add conns to RTSP Sessions (#5454)
this allows to find connections associated with a RTSP session.
2026-02-12 15:45:34 +01:00
Alessandro RosandGitHub c250e34075 support X-Forwarded-Proto in playback server (#4970) (#5445)
allow reverse proxies to change the schema of URLs returned by the
server through the X-Forwarded-Proto header.
2026-02-11 21:47:02 +01:00
Alessandro RosandGitHub f907e19b08 hls: in client, support storing and sending cookies (#5444) 2026-02-10 15:17:15 +01:00
4a559338ae improve JSON error message (#5412) (#5433)
Co-authored-by: Zaphkiel <duambi123@gmail.com>
2026-02-07 19:52:27 +01:00
Alessandro RosandGitHub 2c93262635 update documentation (#5418) 2026-02-07 19:41:43 +01:00
Alessandro RosandGitHub 325d00dfb8 move go <-> api check in linters (#5425) 2026-02-06 16:12:57 +01:00
Alessandro RosandGitHub ae21240c76 add additional checks on always-available streams (#5408)
make sure that published streams match MPEG-4 audio, G711 and LPCM
parameters declared in configuration or used by the offline file.
2026-02-06 16:06:24 +01:00
Alessandro RosandGitHub 4f859fb40b add authHTTPFingerprint (#5413) (#5422) 2026-02-05 16:51:29 +01:00
Alessandro RosandGitHub 4dc09e1d51 set default udpMaxPayloadSize to an IPv6 compatible value (#4882) (#5402)
When using IPv6, there are 20 bytes less available for UDP payload,
which has been adjusted accordingly.
2026-02-05 16:32:02 +01:00