Commit Graph
207 Commits
Author SHA1 Message Date
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
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
c11810c2fc build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.5.3 to 5.5.4 (#5822)
* build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.5.3 to 5.5.4

Bumps [github.com/bluenviron/gortsplib/v5](https://github.com/bluenviron/gortsplib) from 5.5.3 to 5.5.4.
- [Commits](https://github.com/bluenviron/gortsplib/compare/v5.5.3...v5.5.4)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v5
  dependency-version: 5.5.4
  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-06-02 21:50:15 +02:00
Alessandro RosandGitHub 640ddde51b webrtc: fix connectivity after network changes (#5097) (#5818) 2026-06-02 21:40:00 +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 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 c05c14d9af webrtc: support WHIP ICE restarts (#5183) (#5770) 2026-05-15 19:15:42 +02:00
Alessandro RosandGitHub cdea2dc167 webrtc: support interacting with servers with no trickle ICE (#5273) (#5757) 2026-05-12 21:07:16 +02:00
Alessandro RosandGitHub f542ccaf19 webrtc: fix checking POST responses (#5758) 2026-05-12 19:06:08 +02:00
ehandGitHub fcf5eb092d hls: support reading and writing KLV (#5604) 2026-04-30 12:14:00 +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 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 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 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 0eb7089ed6 use safer atomic structs instead of atomic functions (#5622) 2026-03-31 11:30:50 +02: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
8568d8c57c webrtc: fix random absolute timestamps with Opus, G711 and LPCM (#5597)
When rewriting audio RTP timestamps in WebRTC egress, NTP was
derived using regenerated packet timestamps minus the incoming
RTP base timestamp.

That mixed timestamp domains and could shift absolute time by an
arbitrary offset while still exposing mapping as available.

Fix by using a consistent outgoing RTP domain in rewritten audio
paths:
- snapshot outgoing base timestamp before rewriting each unit
- compute NTP from (outgoing packet timestamp - outgoing base
  timestamp)

This keeps RTP<->NTP mapping coherent for sender reports and prevents
random absolute-time offsets in WebRTC loopback with
useAbsoluteTimestamp.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-03-21 19:46:39 +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 adf45596a3 api: rename WebRTC stats to match RTSP ones (#5581) 2026-03-16 23:29:25 +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 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 a6856e9e58 tests: fix race conditions (#5571) 2026-03-13 22:32:06 +01:00
JulienCossecandGitHub 184899dfab fix: avoid buffering HTTP response body in loggerWriter (#5552)
loggerWriter was shadow-copying every response byte into a bytes.Buffer
to report the body size, causing the entire response to be accumulated
in memory for the lifetime of each request. Replace the buffer with a
plain int counter since dump() only ever reported the byte count anyway.
2026-03-07 18:36:10 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
0f46e4982d build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.3.2-0.20260222121945-18b06189ef23 to 5.3.2 (#5504)
* build(deps): bump github.com/bluenviron/gortsplib/v5

Bumps [github.com/bluenviron/gortsplib/v5](https://github.com/bluenviron/gortsplib) from 5.3.2-0.20260222121945-18b06189ef23 to 5.3.2.
- [Commits](https://github.com/bluenviron/gortsplib/commits/v5.3.2)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v5
  dependency-version: 5.3.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-02-22 17:14:02 +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 98a9cf8238 improve tests (#5497) 2026-02-21 14:25:32 +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 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 bbefa5bc8b improve tests (#5469) 2026-02-15 12:50:26 +01:00
bluenviron-botandGitHub ea6977d918 bump golangci-lint to 2.9.0 (#5459) 2026-02-12 15:18:02 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
88a15c7654 build(deps): bump github.com/bluenviron/gortmplib from 0.2.0 to 0.2.1 (#5394)
* build(deps): bump github.com/bluenviron/gortmplib from 0.2.0 to 0.2.1

Bumps [github.com/bluenviron/gortmplib](https://github.com/bluenviron/gortmplib) from 0.2.0 to 0.2.1.
- [Commits](https://github.com/bluenviron/gortmplib/compare/v0.2.0...v0.2.1)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortmplib
  dependency-version: 0.2.1
  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-01-31 15:57:00 +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
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
aa6dc4ea9f build(deps): bump github.com/pion/webrtc/v4 from 4.2.1 to 4.2.3 (#5341)
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-01-20 18:21:05 +01:00
8901ac4e9c webrtc: support reading KLV tracks (#4722)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-01-16 23:40:21 +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 e4c60e1e62 tests: fix race condition (#5338) 2026-01-12 21:46:48 +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
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
62effa79ef build(deps): bump github.com/bluenviron/gortmplib from 0.1.2 to 0.2.0 (#5300)
Bumps [github.com/bluenviron/gortmplib](https://github.com/bluenviron/gortmplib) from 0.1.2 to 0.2.0.
- [Commits](https://github.com/bluenviron/gortmplib/compare/v0.1.2...v0.2.0)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortmplib
  dependency-version: 0.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-28 17:29:27 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f843df4ab8 build(deps): bump github.com/bluenviron/mediacommon/v2 (#5297)
Bumps [github.com/bluenviron/mediacommon/v2](https://github.com/bluenviron/mediacommon) from 2.5.3 to 2.6.0.
- [Commits](https://github.com/bluenviron/mediacommon/compare/v2.5.3...v2.6.0)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/mediacommon/v2
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-28 15:44:36 +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
ade0cddeb3 support multiple CORS origins (#5150)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-11-21 02:00:46 +01:00
Alessandro RosandGitHub 2d02ca0df7 webrtc: use rtpReceiver and rtpSender to count packets (#5193) 2025-11-14 17:10:50 +01:00
Alessandro RosandGitHub d02fb4ed8e move constant (#5190) 2025-11-12 18:09:53 +01:00
Alessandro RosandGitHub ff187b6d8a update golangci-lint configuration (#5182) 2025-11-11 23:57:52 +01:00