Alessandro Ros and GitHub
a4ad182e4e
format imports ( #6041 )
2026-08-04 22:13:15 +00:00
Alessandro Ros and GitHub
a65bdc1c5a
moq: support draft-17 ( #6040 )
2026-08-04 23:57:27 +02:00
Alessandro Ros and GitHub
e0ed9885fc
moq: support publishing and reading through native QUIC ( #6039 )
2026-08-04 23:47:59 +02:00
Alessandro Ros and GitHub
dcd4b38838
srt: close sources immediately when path is closed ( #6038 )
2026-08-04 22:48:57 +02:00
98ab3009ea
support forwarding streams natively ( #5558 )
...
It is now possible to define forward destinations for each path configuration. For each destination, the server will create a client that will forward the stream to the intended destination. Supported protocols are RTSP, RTMP, SRT. API and metrics have also been improved to allow monitoring the new forwarding system.
---------
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com >
2026-08-04 21:57:15 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
543dbc9eb8
fix support for regexp groups greater than 10 ( #6033 )
2026-08-04 18:50:38 +00:00
Alessandro Ros and GitHub
d8b2e4b6fc
add more black-box tests ( #6032 )
2026-08-04 18:44:17 +00:00
Alessandro Ros and GitHub
021f84428d
bump Ubuntu in E2E tests ( #6035 )
2026-08-04 18:38:27 +00:00
Alessandro Ros and GitHub
9d8f894c46
srt: show stream ID in logs ( #6018 )
2026-08-04 17:57:01 +02:00
Alessandro Ros and GitHub
c8d0e47488
fix some CodeQL warnings ( #6029 )
2026-08-03 17:23:08 +00:00
Alessandro Ros and GitHub
1c7bc95cdd
prevent some CodeQL warnings ( #6027 )
2026-08-03 16:47:25 +00:00
Alessandro Ros and GitHub
62c119f0a4
hls: prevent some CodeQL warnings ( #6024 )
2026-08-03 16:23:08 +00:00
Alessandro Ros and GitHub
3d5039607c
metrics: fix race condition in tests ( #6026 )
2026-08-03 18:14:20 +02:00
Alessandro Ros and GitHub
35990a38c3
webrtc: fix race condition in tests ( #6025 )
2026-08-03 18:11:24 +02:00
Alessandro Ros and GitHub
3c77704ccf
rtsp: log write errors ( #6023 )
2026-08-02 16:48:13 +00:00
Alessandro Ros and GitHub
4bb896afe0
webrtc: reset recomputed audio PTS if it drifts too much ( #6021 )
2026-08-01 16:24:53 +00:00
Alessandro Ros and GitHub
24dd8f44a5
sync golangci-lint settings ( #6020 )
2026-08-01 08:30:58 +00:00
Alessandro Ros and GitHub
ef93aee083
use black-box testing where possible ( #6016 )
2026-08-01 08:06:27 +00:00
fa9cd4fbed
build(deps): bump github.com/quic-go/webtransport-go from 0.11.1 to 0.12.0 ( #6011 )
...
* build(deps): bump github.com/quic-go/webtransport-go
Bumps [github.com/quic-go/webtransport-go](https://github.com/quic-go/webtransport-go ) from 0.11.1 to 0.12.0.
- [Release notes](https://github.com/quic-go/webtransport-go/releases )
- [Commits](https://github.com/quic-go/webtransport-go/compare/v0.11.1...v0.12.0 )
---
updated-dependencies:
- dependency-name: github.com/quic-go/webtransport-go
dependency-version: 0.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* additional changes
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com >
2026-07-29 18:40:36 +02:00
Alessandro Ros and GitHub
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
d843a0bf21
webrtc: fix packet corruption when reading G722 ( #6000 )
...
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com >
2026-07-29 13:31:02 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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
5ccc80ad7b
build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.6.1 to 5.6.2 ( #5981 )
...
* build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.6.1 to 5.6.2
Bumps [github.com/bluenviron/gortsplib/v5](https://github.com/bluenviron/gortsplib ) from 5.6.1 to 5.6.2.
- [Commits](https://github.com/bluenviron/gortsplib/compare/v5.6.1...v5.6.2 )
---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v5
dependency-version: 5.6.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
* additional changes
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com >
2026-07-23 23:49:31 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
2183d37d32
add comment to prevent security scan false positives ( #5973 )
2026-07-23 22:59:23 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
0e6426c648
adjust code to prevent security scan false positives ( #5963 )
...
... about string escaping.
2026-07-19 10:20:37 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
d6e765976c
srt: fix compatibility with StreamToStudio app ( #5414 ) ( #5928 )
2026-07-18 17:59:05 +02:00
Alessandro Ros and GitHub
96aeb1e603
rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable ( #5957 )
2026-07-18 17:58:16 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
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 Ros and GitHub
e98b727277
fix error message ( #5922 )
...
'all' is a synonym for 'all_others'
2026-07-05 11:00:09 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
7eb5d30075
prevent truncation of 64-bit values on 32-bit platforms ( #5902 )
2026-06-28 11:37:14 +02:00
Alessandro Ros and GitHub
bf098c7eb5
support encoding secondary stream with H264 (2/2) ( #4485 ) ( #5898 )
2026-06-28 11:19:23 +02:00
Alessandro Ros and GitHub
1a7c10af1e
rpicamera: support encoding primary stream with MJPEG (2/2) ( #5892 )
2026-06-27 19:19:36 +02:00
Alessandro Ros and GitHub
07d0e232b2
rpi: add unified rpiCameraH264Profile, rpiCameraH264Level params ( #5894 )
...
These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
2026-06-25 22:07:36 +02:00
Alessandro Ros and GitHub
b91affa054
rpi: exclude additional code from non-arm builds ( #5893 )
2026-06-25 19:37:28 +02:00
suMin and GitHub
8fcbd0a796
webrtc: skip unresolvable webrtcAdditionalHosts entries instead of aborting ( #5845 )
...
Since #4866 , hostnames in webrtcAdditionalHosts are resolved server-side via
net.LookupIP, and a resolution failure aborts the entire WHEP/WHIP session.
A single entry that can't be resolved on the server (e.g. air-gapped networks
without DNS, or a name that only resolves on the client) therefore takes down
all WebRTC playback, even when the other entries are valid.
Log a warning and skip the unresolvable entry instead of returning an error,
so the remaining valid candidates are still offered.
Signed-off-by: suMin <sumin77123@gmail.com >
2026-06-22 21:14:04 +02:00