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 Ros and GitHub
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 Ros and GitHub
a4ad182e4e
format imports ( #6041 )
2026-08-04 22:13:15 +00: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
7e576d077f
rtsp: use ServerStream.ReloadDesc to propagate description changes to RTSP servers ( #5856 )
2026-06-10 23:46:02 +02:00
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 Ros and GitHub
2795962d8e
hls: support reading and publishing FLAC ( #5778 ) ( #5791 )
2026-05-21 17:00:59 +02:00
Alessandro Ros and GitHub
0edc3dbe86
rtmp: support reading and writing FLAC ( #5778 ) ( #5789 )
2026-05-21 14:50:06 +02:00
Alessandro Ros and GitHub
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 Ros and GitHub
ddaafd4ef3
rtmp: prevent legacy clients from reading multiple video/audio tracks ( #5478 )
2026-02-18 11:02:58 +01:00
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 Ros and GitHub
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 Ros and GitHub
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
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
Alessandro Ros and GitHub
ff187b6d8a
update golangci-lint configuration ( #5182 )
2025-11-11 23:57:52 +01:00
Alessandro Ros and GitHub
0cdae40fe3
estimate absolute timestamp more precisely ( #5078 )
...
When the absolute timestamp of incoming frames was not available, it
was filled with the current timestamp, which is influenced by latency
over time.
This mechanism is replaced by an algorithm that detects when latency is
the lowest, stores the current timestamp and uses it as reference
throughout the rest of the stream.
2025-10-12 11:02:14 +02:00
Alessandro Ros and GitHub
f5f03562d3
rewrite Unit definition ( #5079 )
...
Stream units now share the same struct, with a specialized payload.
2025-10-11 12:18:51 +02:00
Alessandro Ros and GitHub
cd80814009
do not include recorder and HLS muxer in sent bytes ( #4380 ) ( #5039 )
...
in API (/paths/list, /paths/get) and metrics (paths_bytes_sent), the
amount of sent bytes was increased even in case of writes to the
recorder and HLS muxer, which are not generating network traffic. This
fixes the issue.
2025-09-29 09:28:04 +02:00
253df883c2
build(deps): bump github.com/bluenviron/mediacommon/v2 ( #4990 )
...
Bumps [github.com/bluenviron/mediacommon/v2](https://github.com/bluenviron/mediacommon ) from 2.4.2 to 2.4.3.
- [Commits](https://github.com/bluenviron/mediacommon/compare/v2.4.2...v2.4.3 )
---
updated-dependencies:
- dependency-name: github.com/bluenviron/mediacommon/v2
dependency-version: 2.4.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-18 13:10:42 +02:00
Alessandro Ros and GitHub
e3b8af8933
switch to gortsplib/v5 ( #4978 )
2025-09-16 13:10:34 +02:00
ebd9eb6665
build(deps): bump github.com/bluenviron/mediacommon/v2 ( #4975 )
...
Bumps [github.com/bluenviron/mediacommon/v2](https://github.com/bluenviron/mediacommon ) from 2.4.2-0.20250909112826-017d0bbe41db to 2.4.2.
- [Commits](https://github.com/bluenviron/mediacommon/commits/v2.4.2 )
---
updated-dependencies:
- dependency-name: github.com/bluenviron/mediacommon/v2
dependency-version: 2.4.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 22:56:28 +02:00
Alessandro Ros and GitHub
1b8897d30d
rtmp: move implementation to gortmplib ( #4968 )
2025-09-13 11:50:36 +02:00
Alessandro Ros and GitHub
57021467e9
rename formatprocessor into codecprocessor ( #4962 )
2025-09-12 10:24:11 +02:00
Alessandro Ros and GitHub
9318107779
rtmp: support additional enhanced RTMP features ( #4168 ) ( #4321 ) ( #4954 )
...
* support reading AV1, VP9, H265, Opus, AC-3, G711, LPCM
* support reading multiple video or audio tracks at once
2025-09-11 23:18:46 +02:00
cb16f68432
rtmp: improve control message compatibility with non-standard cameras ( #4909 )
...
* feat: improve RTMP control message compatibility with non-standard cameras
- Add flexible chunk stream ID validation for control messages
- Support common non-standard chunk stream IDs (2,3,4,5,6) used by various cameras
- Maintain backward compatibility with standard RTMP clients
- Fix connection issues with PTZ cameras using chunk stream ID 4
This resolves compatibility issues with IP cameras that don't strictly follow
RTMP spec while maintaining full support for standard RTMP implementations.
Previously, cameras using non-standard chunk stream IDs would fail with
'unexpected chunk stream ID' errors. Now MediaMTX provides nginx-rtmp level
compatibility with real-world camera implementations."
* add tests
* entirely remove control chunk stream ID validation
---------
Co-authored-by: Hyesung.Kim <hyesung.kim@xcath.com >
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com >
2025-09-03 15:11:32 +02:00
alex9long and GitHub
262ce82d58
refactor: use the built-in max/min to simplify the code ( #4867 )
...
Signed-off-by: alex9long <alex9long@outlook.com >
2025-08-14 10:32:24 +02:00
Alessandro Ros and GitHub
d423a71aaa
update linter settings ( #4790 )
2025-07-26 16:44:32 +02:00
Alessandro Ros and GitHub
cc27cf6563
mpegts, srt: support MPEG-4 Audio LATM tracks ( #4403 ) ( #4759 )
2025-07-21 10:02:40 +02:00
d0a97e47ff
build(deps): bump github.com/bluenviron/gohlslib/v2 from 2.2.1 to 2.2.2 ( #4763 )
...
Bumps [github.com/bluenviron/gohlslib/v2](https://github.com/bluenviron/gohlslib ) from 2.2.1 to 2.2.2.
- [Commits](https://github.com/bluenviron/gohlslib/compare/v2.2.1...v2.2.2 )
---
updated-dependencies:
- dependency-name: github.com/bluenviron/gohlslib/v2
dependency-version: 2.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 09:55:10 +02:00
Alessandro Ros and GitHub
82956a4abb
rtmp: fix compatibility with GStreamer rtmp2src / rtmp2sink ( #1433 ) ( #4718 )
2025-07-12 14:17:04 +02:00
Alessandro Ros and GitHub
1083eea307
make RTP packet size compatible with RTSP/SRTP ( #4692 )
...
when RTSP encryption is enabled, maximum RTP packet size is slightly
decreased to make room for SRTP.
2025-07-05 15:42:58 +02:00
Alessandro Ros and GitHub
c21c969a8c
revert #4583 ( #4606 )
...
This reverts commit 500d18b6c6 .
2025-06-03 20:27:53 +02:00
Alessandro Ros and GitHub
500d18b6c6
rtmp: fix timeout when publishing with GLive T80 ( #4002 ) ( #4583 )
2025-06-03 18:26:00 +02:00
Alessandro Ros and GitHub
fad64a87bd
bump golangci-lint ( #4550 )
2025-05-23 15:10:21 +02:00
Alessandro Ros and GitHub
1b9dfbd367
rtmp: support connecting to sources that require standard credentials ( #4530 )
2025-05-15 14:23:03 +02:00
Alessandro Ros and GitHub
3b3b898358
fix error message ( #4522 )
2025-05-12 22:10:13 +02:00
Alessandro Ros and GitHub
a85d8f1391
rtmp: fix connect command when reading ( #4512 )
...
when reading, the "connect" command should not contain fpad,
capabilities, audioCodecs, videoCodecs, videoFunction.
2025-05-10 15:26:48 +02:00
Alessandro Ros and GitHub
15fff95246
ensure unmarshaled entities can be marshaled back ( #4484 )
2025-05-04 11:34:05 +02:00
Alessandro Ros and GitHub
986e270862
count and log all discarded frames, decode errors, lost packets ( #4363 )
...
Discarded frames, decode errors and lost packets were logged
individually, then there was a mechanism that prevented more than 1 log
entry per second from being printed, resulting in inaccurate reports.
Now discarded frames, decode errors and lost packets are accurately
counted, and their count is printed once every second.
2025-03-25 21:59:58 +01:00
Alessandro Ros and GitHub
416ac1357e
bump mediacommon and gortsplib ( #4364 )
2025-03-24 17:25:18 +01:00
Alessandro Ros and GitHub
b329c4bbe8
replace New* with Initialize() ( #4345 )
2025-03-16 15:34:53 +01:00
Alessandro Ros and GitHub
244da930a1
switch to mediacommon/v2 ( #4259 )
2025-02-17 14:54:58 +01:00
b66efd66da
build(deps): bump github.com/bluenviron/gortsplib/v4 ( #4236 )
...
Bumps [github.com/bluenviron/gortsplib/v4](https://github.com/bluenviron/gortsplib ) from 4.12.2 to 4.12.3.
- [Commits](https://github.com/bluenviron/gortsplib/compare/v4.12.2...v4.12.3 )
---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-07 20:19:14 +01:00
Alessandro Ros and GitHub
5bb751a4c8
hls: fix reading AV1 from OBS+WHIP ( #3886 ) ( #4177 )
2025-01-19 18:40:18 +01:00
Alessandro Ros and GitHub
070ea5fc19
rtmp: fix compatibility with DJI Osmo Action 4 ( #3802 ) ( #4116 )
2025-01-07 17:36:31 +01:00
Alessandro Ros and GitHub
6d7d0e6e21
fix documentation ( #4110 )
2025-01-05 12:02:04 +01:00
Alessandro Ros and GitHub
8cbbbc05c3
rtmp: support additional Enhanced-RTMP features ( #3685 ) ( #4088 )
...
new features:
* support publishing Opus and AC-3 tracks
* support publishing more than 2 tracks. This is compatible with OBS multitrack video and OBS VOD audio track
2025-01-02 12:44:01 +01:00
Alessandro Ros and GitHub
770d72b638
rtmp: support Extended Metadata Frames ( #4006 ) ( #4014 ) ( #4018 )
2024-12-04 23:29:16 +01:00
Alessandro Ros and GitHub
23002d9f5f
route original timestamps without converting to durations ( #3839 )
...
This improves timestamp precision.
2024-10-07 17:59:32 +02:00
Alessandro Ros and GitHub
2586782031
fix race condition in tests ( #3834 )
2024-10-05 21:54:11 +02:00