328 Commits
Author SHA1 Message Date
Alessandro RosandGitHub 04a133290b test: convert more tests to black-box style (#6139) 2026-08-27 10:15:31 +00:00
cf5cd38cf9 webrtc: fix deprecated webrtcICEServers parser for IPv6 hosts; (#5932)
strings.Split produces wrong part count when the host contains colons
(IPv6). SplitN(s, ";", 4) keeps the hostport token intact.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-25 06:55:05 +00:00
3e09466c18 bump golangci-lint to 2.13.1 (#6129)
* bump golangci-lint to 2.13.1

* additional changes

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-22 16:57:28 +00:00
Alessandro RosandGitHub 8ac6ba64c8 moq: support pulling streams from other servers (#6111) 2026-08-18 13:23:40 +02:00
Alessandro RosandGitHub b80737c122 add destFingerprint parameter (#6106)
this allows to validate self-signed certificates of forward
destinations.
2026-08-18 09:35:37 +02:00
Alessandro RosandGitHub cca0f5a0cb change default value of authHTTPExclude (#6103)
by default, do not exclude any action from HTTP authentication. Old
value triggered several security warnings.
2026-08-17 18:30:48 +02:00
Alessandro RosandGitHub 831ed9564b webrtc: support forwarding streams (#6099) 2026-08-16 21:09:59 +02: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 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 a4ad182e4e format imports (#6041) 2026-08-04 22:13:15 +00:00
Alessandro RosandGitHub e0ed9885fc moq: support publishing and reading through native QUIC (#6039) 2026-08-04 23:47:59 +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
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 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 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 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
d31c0b3900 rtsp: add rtspScale parameter to inject Scale header on PLAY (#5800)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-20 12:08:15 +02:00
Alessandro RosandGitHub 51f826057a moq: rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (#5841) 2026-06-07 16:34:37 +02:00
b2dc62e13c rtmp, rtsp: support PROXY protocol (#5754)
Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP
listeners so real client IPs are visible when running behind L4 proxies
(nginx stream, HAProxy, AWS NLB).

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-05 21:37:53 +02:00
6d1f152cc2 support using regexp groups in every part of a source URL (#5766) (#5779)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-03 23:40:22 +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 0f5a76e253 modernize code (#5814) 2026-05-31 20:33:48 +02:00
bluenviron-botandGitHub b83d5ac4b3 bump golangci-lint to 2.12.2 (#5727) 2026-05-10 17:54:18 +02:00
bluenviron-botandGitHub dc979a0be8 bump Golang to 1.26 (#5721) 2026-04-30 16:23:45 +02:00
Alessandro RosandGitHub 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 RosandGitHub 66a67188fe tests: use testing.T.TempDir rather than os.TempDir (#5709) 2026-04-29 22:47:47 +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 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
f98c9c59ca rtsp: support unwrapping MPEG-TS tracks (#5476)
this allows to use MPEG-TS tracks with other protocols and with the recording system.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-03-17 19:14:04 +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
Roman SirokovandGitHub 9b36d50b8d optionally validate JWT iss and aud claims (#5569) 2026-03-13 22:38:40 +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 549300cbd4 prevent using alwaysAvailableFile and alwaysAvailableTracks together (#5529) 2026-02-28 18:31:41 +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 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
bluenviron-botandGitHub a07526d57c bump Golang to 1.26 (#5460) 2026-02-21 14:48:53 +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 3c46bfd337 warn when alwaysAvailableFile is not MP4 (#5483) 2026-02-18 21:29:42 +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 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 a0bbdd9655 replace YAML parser (#5461)
switch from the unmaintained gopkg.in/yaml to goccy/go-yaml
2026-02-12 15:51:14 +01:00
4a559338ae improve JSON error message (#5412) (#5433)
Co-authored-by: Zaphkiel <duambi123@gmail.com>
2026-02-07 19:52:27 +01:00