Commit Graph
100 Commits
Author SHA1 Message Date
Alessandro RosandGitHub ef6a74455b hls: prefer hls.js on iOS too (#6090)
In the embedded HLS reader, use hls.js on iOS, that was previously
disabled due to compatibility issues that should have been solved.
2026-08-16 11:57:13 +02:00
Alessandro RosandGitHub 337acacd60 moq: limit maximum amount of published tracks (#6087)
this prevents clients from consuming an excessive amount of memory.
2026-08-15 21:10:53 +00:00
Alessandro RosandGitHub 679b2b9532 impose a minimum value to clock rate of always-available tracks (#6086)
Clock rates below 10 caused the emission of empty samples. Fix the
issue by imposing a minimum value of 8khz, that rises to 22khz in case
of AAC.
2026-08-15 17:08:49 +00:00
Alessandro RosandGitHub f29816fe50 moq: do not accept empty payloads (#6085) 2026-08-15 16:56:35 +00:00
Alessandro RosandGitHub 02e060721d remove useless JPEG checks from recorder (#6083)
MJPEG frames are already validated before reaching the recorder,
there's no need to validate them twice.
2026-08-15 17:38:01 +02:00
Alessandro RosandGitHub 78081d71d5 rpi: prevent invalid MJPEG sizes (#6080)
width and height of MJPEG frames must be multiple of 8 and less than
2048, otherwise they cannot be routed with RTP/RTSP.
2026-08-15 16:27:41 +02:00
Alessandro RosandGitHub 145381e81d rtmp: inform about authentication failures (#5657) (#6072)
Reply with NetStream.Play.Failed or NetStream.Publish.Unauthorized when
a client is not authorized to play or publish. This makes clients like
OBS to stop recreating the connection in case of authentication
failures.
2026-08-13 09:05:39 +00:00
Alessandro RosandGitHub b86f02c227 restore datarhei/gosrt (#6068) 2026-08-12 10:10:23 +00:00
Alessandro RosandGitHub a146e55978 webrtc: improve performance by ignoring mDNS candidates (#4963) (#6064)
mDNS candidates sometimes require a large CPU portion, they are not
involved in any connectivity method mentioned in the documentation, they work in
local networks only.
2026-08-10 12:00:23 +00:00
Alessandro RosandGitHub 8e46f37ba7 rpi: fix crash when secondary stream is enabled (#6060) (#6061) 2026-08-08 19:41:26 +02:00
Alessandro RosandGitHub b615b7312c prevent spamming of 'stream is closed' error during shutdown (#6062) 2026-08-08 19:41:06 +02:00
Alessandro RosandGitHub 6f0faa49d1 webrtc: fix warning when IPv6 is disabled (#5733) (#6048) 2026-08-07 10:05:05 +02:00
Alessandro RosandGitHub 1b943637a4 moq: support draft-16 (#6045) 2026-08-05 12:16:07 +02:00
Alessandro RosandGitHub f0d2f11525 moq: link primitives to draft-17 sections (#6044) 2026-08-05 09:33:39 +00:00
Alessandro RosandGitHub c48b0b8fee moq: increase max namespace field count to 32 (#6043) 2026-08-05 09:20:59 +00:00
Alessandro RosandGitHub 241892220b bump dependencies (#6042) 2026-08-05 10:59:53 +02:00
Alessandro RosandGitHub a4ad182e4e format imports (#6041) 2026-08-04 22:13:15 +00:00
Alessandro RosandGitHub a65bdc1c5a moq: support draft-17 (#6040) 2026-08-04 23:57:27 +02:00
Alessandro RosandGitHub e0ed9885fc moq: support publishing and reading through native QUIC (#6039) 2026-08-04 23:47:59 +02:00
Alessandro RosandGitHub dcd4b38838 srt: close sources immediately when path is closed (#6038) 2026-08-04 22:48:57 +02:00
Alessandro RosandGitHub f36c41d90a webrtc: fix "packet lost" error when routing streams from WebRTC (#6034)
Chrome sometimes sends empty packets, that are discarded by the server,
but the sequence number of following packets is not recomputed,
leading downstream packet loss detectors to emit errors. This is fixed.
2026-08-04 21:00:11 +02:00
Alessandro RosandGitHub 543dbc9eb8 fix support for regexp groups greater than 10 (#6033) 2026-08-04 18:50:38 +00:00
Alessandro RosandGitHub d8b2e4b6fc add more black-box tests (#6032) 2026-08-04 18:44:17 +00:00
Alessandro RosandGitHub 021f84428d bump Ubuntu in E2E tests (#6035) 2026-08-04 18:38:27 +00:00
Alessandro RosandGitHub 9d8f894c46 srt: show stream ID in logs (#6018) 2026-08-04 17:57:01 +02:00
Alessandro RosandGitHub c8d0e47488 fix some CodeQL warnings (#6029) 2026-08-03 17:23:08 +00:00
Alessandro RosandGitHub 1c7bc95cdd prevent some CodeQL warnings (#6027) 2026-08-03 16:47:25 +00:00
Alessandro RosandGitHub 62c119f0a4 hls: prevent some CodeQL warnings (#6024) 2026-08-03 16:23:08 +00:00
Alessandro RosandGitHub 3d5039607c metrics: fix race condition in tests (#6026) 2026-08-03 18:14:20 +02:00
Alessandro RosandGitHub 35990a38c3 webrtc: fix race condition in tests (#6025) 2026-08-03 18:11:24 +02:00
Alessandro RosandGitHub 168c5900b1 docs: update (#6022) 2026-08-03 11:43:33 +00:00
Alessandro RosandGitHub 3c77704ccf rtsp: log write errors (#6023) 2026-08-02 16:48:13 +00:00
Alessandro RosandGitHub 4bb896afe0 webrtc: reset recomputed audio PTS if it drifts too much (#6021) 2026-08-01 16:24:53 +00:00
Alessandro RosandGitHub 24dd8f44a5 sync golangci-lint settings (#6020) 2026-08-01 08:30:58 +00:00
Alessandro RosandGitHub ef93aee083 use black-box testing where possible (#6016) 2026-08-01 08:06:27 +00:00
Alessandro RosandGitHub 817c22cc6c fix inability to read some AV1 streams with RTSP (#6001) (#6006)
Since v1.16.0, temporal unit delimiters were not stripped from AV1 streams
anymore. This has been restored, healing AV1 streams read with
RTSP.
2026-07-29 14:36:23 +02:00
Alessandro RosandGitHub a0482f937f webrtc: sort tracks in a deterministic way (#5988) (#5989)
When ingesting tracks with WebRTC, track order was randomized,
preventing multi-track always-available streams from working reliably,
since they require tracks to be ordered in a precise way.

WebRTC tracks are not ordered by MID, RID, trackID and streamID
respectively.
2026-07-25 19:44:45 +02:00
Alessandro RosandGitHub fc47d9e6ed srt: improve log clarity (#5990)
use message 'passphrase not provided by client' when clients do not
provide passphrases.
2026-07-25 19:44:31 +02:00
Alessandro RosandGitHub 83e04d8255 improve documentation (#5985) 2026-07-24 15:43:06 +02:00
Alessandro RosandGitHub 519a04e490 docs: add missing MoQ ports (#5983) 2026-07-24 09:12:48 +02:00
Alessandro RosandGitHub 4c5f558006 hls, webrtc: prevent cross-origin unauthorized access (#5975)
when a user had previously inserted credentials into a MediaMTX
instance through a browser, and AllowOrigins was set to a wildcard,
third-party websites visited by the user were allowed to read streams
without restrictions. This is now prevented by returning "*" in
Access-Control-Allow-Origins when AllowOrigins is a wildcard, a
behavior that prevents browsers from sharing credentials with
third-party websites.
2026-07-23 23:06:15 +02:00
c23bdf2924 rtsp: use session ID in requests to the external authentication server (#5977)
Co-authored-by: Cycle1337 <Cycle1337@outlook.com>
2026-07-23 23:04:29 +02:00
Alessandro RosandGitHub 5d0ba43667 moq: prevent excessive CPU consumption in reorderer (#5976)
do not iterate by maxGroupID (passed by user) but iterate by internal
pending packets (uncontrolled by user).
2026-07-23 23:01:05 +02:00
Alessandro RosandGitHub 2183d37d32 add comment to prevent security scan false positives (#5973) 2026-07-23 22:59:23 +02:00
Alessandro RosandGitHub 6da35dc389 moq: support draft-19 of the specification (#5968)
* support draft-19 of the specification

* support subscribing the same track multiple times
2026-07-21 00:24:03 +02:00
Alessandro RosandGitHub be610a6a04 docs: add fail2ban integration (#5016) (#5967) 2026-07-19 17:03:57 +02:00
Alessandro RosandGitHub 58c6099e50 ask for credentials only in case of protocols that support it (#5966)
When clients connect with some protocols (SRT, RTMP), they are unable
to provide credentials even if they are asked to. In this case, it's
useless to wait for credentials, and it's better to immediately log
authentication errors and apply the anti-brute force algorithm.
2026-07-19 16:52:14 +02:00
Alessandro RosandGitHub 363ac206f7 moq: fix several panics and OOM errors (#5964)
Check for limits before allocating memory by using sizes passed from
the remote peer. Also add fuzzing to all MoQ primitives.
2026-07-19 12:13:45 +02:00
Alessandro RosandGitHub 83cc54418c moq: fix race condition during startup (#5965)
allocate the HTTP server only after the MoQ server has been initialized.
2026-07-19 11:29:04 +02:00
Alessandro RosandGitHub 0e6426c648 adjust code to prevent security scan false positives (#5963)
... about string escaping.
2026-07-19 10:20:37 +02:00
Alessandro RosandGitHub e14ada6f4b normalize authentication error messages (#5421) (#5959)
Log authentication errors as soon as possible, use the "warn" level,
use the same message whatever the author or protocol.
2026-07-19 10:04:17 +02:00
d15c14ec6a avoid potential timing attack when validating SHA256 credentials (#5961)
The == operator is vulnerable to timing attacks as it short-circuits on a mismatch. Use
ConstantTimeCompare to avoid this vector.

Co-authored-by: Tristan Matthews <tmatth@videolan.org>
2026-07-19 09:46:34 +02:00
Alessandro RosandGitHub 0378876293 fix wrong PTS and wrong playback of alwaysAvailableFile (#5436) (#5960)
PTS offset of samples was not properly considered, and sleep between
samples was PTS-based instead of being DTS-based.
2026-07-18 22:39:28 +02:00
Alessandro RosandGitHub fa7a89f840 rtsp: restrict UDP port range to 32768-60999 (#5398) (#5958)
this is the default Linux ephemeral port range.
2026-07-18 20:59:33 +02:00
Alessandro RosandGitHub d6e765976c srt: fix compatibility with StreamToStudio app (#5414) (#5928) 2026-07-18 17:59:05 +02:00
Alessandro RosandGitHub 96aeb1e603 rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable (#5957) 2026-07-18 17:58:16 +02:00
Alessandro RosandGitHub 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 RosandGitHub 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 RosandGitHub e98b727277 fix error message (#5922)
'all' is a synonym for 'all_others'
2026-07-05 11:00:09 +02:00
Alessandro RosandGitHub 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 RosandGitHub f4decfd41b docs: fix MoQ read URL (#5904) 2026-06-28 16:29:24 +02:00
Alessandro RosandGitHub ce00edb92f docs: change suggested hls.js CDN (#5903) 2026-06-28 16:29:12 +02:00
Alessandro RosandGitHub 7eb5d30075 prevent truncation of 64-bit values on 32-bit platforms (#5902) 2026-06-28 11:37:14 +02:00
Alessandro RosandGitHub bf098c7eb5 support encoding secondary stream with H264 (2/2) (#4485) (#5898) 2026-06-28 11:19:23 +02:00
Alessandro RosandGitHub 1a7c10af1e rpicamera: support encoding primary stream with MJPEG (2/2) (#5892) 2026-06-27 19:19:36 +02:00
Alessandro RosandGitHub 07d0e232b2 rpi: add unified rpiCameraH264Profile, rpiCameraH264Level params (#5894)
These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
2026-06-25 22:07:36 +02:00
Alessandro RosandGitHub b91affa054 rpi: exclude additional code from non-arm builds (#5893) 2026-06-25 19:37:28 +02:00
Alessandro RosandGitHub 90b8d5c943 improve HTTP server performance (#5886)
log incoming requests without cloning.
2026-06-20 12:03:35 +02:00
Alessandro RosandGitHub 28d648da37 move Content-Types to log in a map (#5875) 2026-06-20 09:35:55 +02:00
Alessandro RosandGitHub 0996186cdf restore quic-go/webtransport-go (#5876) 2026-06-16 15:09:00 +02:00
Alessandro RosandGitHub 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 RosandGitHub d0cf294637 print body of selected HTTP responses when log level is debug (#5859) 2026-06-11 00:53:52 +02:00
Alessandro RosandGitHub 959f58cee9 limit size of HTTP requests shown in debug logs (#5858) 2026-06-11 00:31:10 +02:00
Alessandro RosandGitHub 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 RosandGitHub 7e576d077f rtsp: use ServerStream.ReloadDesc to propagate description changes to RTSP servers (#5856) 2026-06-10 23:46:02 +02:00
Alessandro RosandGitHub 51f826057a moq: rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (#5841) 2026-06-07 16:34:37 +02:00
Alessandro RosandGitHub 17fadee594 restrict GitHub Actions workflow permissions (#5840) 2026-06-07 16:32:22 +02:00
Alessandro RosandGitHub c8eabc0307 hls: fix race condition in tests (#5842) 2026-06-07 16:28:27 +02:00
Alessandro RosandGitHub 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 RosandGitHub 5b9b6afcb8 replace errors.As with modern errors.AsType (#5834) 2026-06-05 09:56:06 +02:00
Alessandro RosandGitHub de7b4d5a29 restore pion/ice (#5837) 2026-06-05 09:16:33 +02:00
Alessandro RosandGitHub 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 RosandGitHub 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 RosandGitHub 640ddde51b webrtc: fix connectivity after network changes (#5097) (#5818) 2026-06-02 21:40:00 +02:00
Alessandro RosandGitHub 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 RosandGitHub 7ab03cdc58 webrtc: rename incoming/outgoing into inbound/outbound (#5816) 2026-06-02 09:15:49 +02:00
Alessandro RosandGitHub 0f5a76e253 modernize code (#5814) 2026-05-31 20:33:48 +02:00
Alessandro RosandGitHub 903627ffed apply prettier to the entire repository (#5799) 2026-05-26 11:35:14 +02:00
Alessandro RosandGitHub e63dd7132a hls: remove redundant JavaScript argument (#5806) 2026-05-26 11:22:19 +02:00
Alessandro RosandGitHub 66a824d3f1 webrtc: make handleError accept strings only (#5805) 2026-05-26 11:13:01 +02:00
Alessandro RosandGitHub 17efb211a9 webrtc: make JavaScript internal variables private (#5804) 2026-05-26 11:09:05 +02:00
Alessandro RosandGitHub 2795962d8e hls: support reading and publishing FLAC (#5778) (#5791) 2026-05-21 17:00:59 +02:00
Alessandro RosandGitHub 0edc3dbe86 rtmp: support reading and writing FLAC (#5778) (#5789) 2026-05-21 14:50:06 +02:00
Alessandro RosandGitHub 111302f9e3 use file name suffix for OS-specific code wherever possible (#5787) 2026-05-19 11:48:05 +02:00
Alessandro RosandGitHub 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 RosandGitHub c05c14d9af webrtc: support WHIP ICE restarts (#5183) (#5770) 2026-05-15 19:15:42 +02:00
Alessandro RosandGitHub aaa4a5dbc6 docs: update (#5756) 2026-05-14 21:22:17 +02:00
Alessandro RosandGitHub a439fd7e0d bump Ubuntu to 24.04 (#5769) 2026-05-14 19:32:37 +02:00
Alessandro RosandGitHub 09a733e5ce rpi: support changing text overlay dynamically (#5270) (#5748) 2026-05-13 18:13:59 +02:00
Alessandro RosandGitHub cdea2dc167 webrtc: support interacting with servers with no trickle ICE (#5273) (#5757) 2026-05-12 21:07:16 +02:00