Commit Graph
100 Commits
Author SHA1 Message Date
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
Alessandro RosandGitHub a0745e1220 emit structured logs with nanosecond precision (#4924) (#5404) 2026-02-05 16:31:23 +01:00
Alessandro RosandGitHub 74eaa11d3a rtsp: add rtspUDPSourcePortRange param (#5363) (#5397) 2026-01-31 16:21:53 +01:00
Alessandro RosandGitHub 92f9ee7b78 deprecate fallback (#5388)
The fallback feature worked with RTSP only and did not allow readers to
resume the original stream. It has been replaced by alwaysAvailable.
2026-01-31 15:29:24 +01:00
Alessandro RosandGitHub 115dab1533 api: add available, availableTime, online, onlineTime properties (#5391)
these replace ready and readyTime and allow to monitor the new
"always-available" feature.
2026-01-31 14:54:10 +01:00
Alessandro RosandGitHub a56408db19 add always available streams (#5335)
When the publisher or source of a stream is offline, the server can be
configured to fill gaps in the stream with a video that is played on
repeat until a publisher comes back online. This allows readers to stay
connected regardless of the state of the stream. The offline video and
any future online stream are concatenated without decoding or
re-encoding packets, using the original codec.
2026-01-31 14:44:58 +01:00
Alessandro RosandGitHub 06c7cc3d7f fix race condition when closing HTTP servers (#5390)
when a HTTP server is closed, open connections are now immediately
closed and open routines are waited before the server is considered
closed.
2026-01-31 14:09:10 +01:00
Alessandro RosandGitHub 69fdd18d86 docs: update (#5308) 2026-01-28 11:52:42 +01:00
Alessandro RosandGitHub 8a4f2f5f3f simplify configuration definitions (#5376) 2026-01-25 20:24:41 +01:00
Alessandro RosandGitHub a4561a8339 prevent setting slices to null (#5375)
In Golang, slices can be set to nil, while in most other languages they
cannot. This causes compatibility issues, especially because the
OpenAPI definition of the API does not allow slices to be nil. This
prevents slices from being set to nil through JSON/YAML, and
also sets default slices to an empty list instead of nil.
2026-01-25 19:49:39 +01:00
Alessandro RosandGitHub 46b4293e35 api: improve openapi definition (#5380)
add uint64, uint, uuid, move WebRTCICEServer into dedicated schema
2026-01-25 19:35:43 +01:00
Alessandro RosandGitHub 1a53e40bdc switch to reflect.Pointer (#5377) 2026-01-25 13:51:49 +01:00
Alessandro RosandGitHub 719ca2ae39 fix panic with environment variables (#5374)
this happened when loading deprecated slices of structs with
environment variables.
2026-01-25 10:27:36 +01:00
Alessandro RosandGitHub 40cb857dd9 prevent setting empty usernames with environment variables (#5373) 2026-01-24 19:44:17 +01:00
Alessandro RosandGitHub 0d95459f7b fix overriding default user with environment variables (#5371)
MTX_AUTHINTERNALUSERS_0_USER and MTX_AUTHINTERNALUSERS_0_PASS are now working even when the configuration file is present.
2026-01-24 19:38:59 +01:00
Alessandro RosandGitHub f4f795a2a6 simplify configuration parsing (#5372)
work around golang/go#21092 globally
2026-01-24 19:33:47 +01:00
Alessandro RosandGitHub e2ac32177b prevent several configuration errors (#5368) 2026-01-22 19:35:44 +01:00
Alessandro RosandGitHub a9bc4f90c2 rtsp: fix log labels of RTSPS listeners (#5367)
use "TCP/RTSPS", "UDP/SRTP", "UDP/SRTCP" to refer to secure listeners
2026-01-22 19:13:54 +01:00
Alessandro RosandGitHub 3998ceb88f webrtc: print incoming data channel messages (#5357) 2026-01-20 16:18:13 +01:00
Alessandro RosandGitHub 02fe2e2b42 tests: fix race condition (#5354) 2026-01-17 23:21:34 +01:00
Alessandro RosandGitHub 653d10fb75 use the same filtering process for every codec (#5324)
this allows to apply features that were previously implemented for
single codecs (like RTP packet resizing), to any codec, and simplifies
future development.
2026-01-16 14:03:13 +01:00
Alessandro RosandGitHub 2109ade5b4 improve readability of issues with config (#5353) 2026-01-16 13:20:07 +01:00
Alessandro RosandGitHub e4c60e1e62 tests: fix race condition (#5338) 2026-01-12 21:46:48 +01:00
Alessandro RosandGitHub bac9060368 link Github Actions badges to the main branch (#5337) 2026-01-12 20:27:38 +01:00
Alessandro RosandGitHub eba3b828a6 print last processing error (#5323) 2026-01-06 21:48:36 +01:00
Alessandro RosandGitHub cd34de8770 print last decode error (#5319)
decode errors are still grouped together, but the last one is now
printed.
2026-01-05 15:28:24 +01:00
Alessandro RosandGitHub 1d9b2ff7ea tests: fix race condition (#5316) 2026-01-04 16:27:12 +01:00
Alessandro RosandGitHub 9cb64d98ac print OS and Arch in first log line (#5315) 2026-01-01 22:59:39 +01:00
Alessandro RosandGitHub 0a01bf4ec8 rpi: advertise support for Raspberry Pi OS Trixie (#5312) 2026-01-01 22:58:47 +01:00
Alessandro RosandGitHub 099a1829dd move away from balenalib Docker images (#5313) 2026-01-01 22:52:39 +01:00
Alessandro RosandGitHub a148f5a546 simplify code (#5314) 2026-01-01 22:47:59 +01:00
Alessandro RosandGitHub b9adbc3e09 remove redundant check (#5311) 2026-01-01 22:47:03 +01:00
Alessandro RosandGitHub 19d3a9c80d remove redundant code (#5310) 2026-01-01 20:51:40 +01:00
Alessandro RosandGitHub b2af5defd0 tests: fix race condition (#5309) 2026-01-01 20:00:27 +01:00
Alessandro RosandGitHub 5c67b2f08b tests: fix race condition (#5301) 2025-12-28 16:36:54 +01:00
Alessandro RosandGitHub 3692b2448a set syslog priority and do not write level and date to syslog (#4923) (#5296)
When writing log entries to syslog, pass the level (WARN, INFO, etc)
directly to syslog. Avoid writing level and date. This provides a
better integration and allows to use syslog search tools.
2025-12-27 14:06:26 +01:00
Alessandro RosandGitHub ea4c4f1fbb disable syslog logging on macOS (#5005) (#5295) 2025-12-27 13:59:33 +01:00
Alessandro RosandGitHub 20e7f1db75 docs: improve (#5277) 2025-12-27 13:55:13 +01:00
Alessandro RosandGitHub cd2aed3fa3 srt: fix broken connections in case of high latency (#3756) (#5282)
When listening and accepting an incoming connection request, the
response might be received by the peer with some delay due to latency.
This causes the peer to send a second connection request, that is not
detected as duplicate because the first connection request has already
been removed from the map that is used to check for duplicates
(connReqs), so it is treated as a brand new connection request,
breaking the first connection.

This patch fixes the issue by introducing another map (connByPeer) that
is used to check whether a connection request is associated to an
already-accepted connection.
2025-12-24 20:51:01 +01:00
Alessandro RosandGitHub 1704fba5e9 rtsp: avoid setupping back channels (#5074) (#5289) 2025-12-24 20:44:56 +01:00
Alessandro RosandGitHub 55f93eddde rtsp: call rtsp.ToStream before advertising the stream (#5288) 2025-12-24 20:37:01 +01:00
Alessandro RosandGitHub 9e82b5233d fix 1-minute offset when recording a H264 WebRTC track (#5275) (#5278) 2025-12-19 13:32:14 +01:00
Alessandro RosandGitHub 834b079b78 rtsp: fix crash when setupping tracks between stream changes (#5253) (#5257) 2025-12-07 11:38:52 +01:00
Alessandro RosandGitHub fc8012d3c7 bump mediacommon (#5258) 2025-12-07 11:38:37 +01:00