Commit Graph
64 Commits
Author SHA1 Message Date
Alessandro RosandGitHub ddaafd4ef3 rtmp: prevent legacy clients from reading multiple video/audio tracks (#5478) 2026-02-18 11:02:58 +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 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
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
Alessandro RosandGitHub ff187b6d8a update golangci-lint configuration (#5182) 2025-11-11 23:57:52 +01:00
Alessandro RosandGitHub 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 RosandGitHub 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 RosandGitHub 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
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 RosandGitHub e3b8af8933 switch to gortsplib/v5 (#4978) 2025-09-16 13:10:34 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 RosandGitHub 1b8897d30d rtmp: move implementation to gortmplib (#4968) 2025-09-13 11:50:36 +02:00
Alessandro RosandGitHub 57021467e9 rename formatprocessor into codecprocessor (#4962) 2025-09-12 10:24:11 +02:00
Alessandro RosandGitHub 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
alex9longandGitHub 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 RosandGitHub d423a71aaa update linter settings (#4790) 2025-07-26 16:44:32 +02:00
Alessandro RosandGitHub cc27cf6563 mpegts, srt: support MPEG-4 Audio LATM tracks (#4403) (#4759) 2025-07-21 10:02:40 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 RosandGitHub 82956a4abb rtmp: fix compatibility with GStreamer rtmp2src / rtmp2sink (#1433) (#4718) 2025-07-12 14:17:04 +02:00
Alessandro RosandGitHub 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 RosandGitHub c21c969a8c revert #4583 (#4606)
This reverts commit 500d18b6c6.
2025-06-03 20:27:53 +02:00
Alessandro RosandGitHub 500d18b6c6 rtmp: fix timeout when publishing with GLive T80 (#4002) (#4583) 2025-06-03 18:26:00 +02:00
Alessandro RosandGitHub fad64a87bd bump golangci-lint (#4550) 2025-05-23 15:10:21 +02:00
Alessandro RosandGitHub 1b9dfbd367 rtmp: support connecting to sources that require standard credentials (#4530) 2025-05-15 14:23:03 +02:00
Alessandro RosandGitHub 3b3b898358 fix error message (#4522) 2025-05-12 22:10:13 +02:00
Alessandro RosandGitHub 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 RosandGitHub 15fff95246 ensure unmarshaled entities can be marshaled back (#4484) 2025-05-04 11:34:05 +02:00
Alessandro RosandGitHub 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 RosandGitHub 416ac1357e bump mediacommon and gortsplib (#4364) 2025-03-24 17:25:18 +01:00
Alessandro RosandGitHub b329c4bbe8 replace New* with Initialize() (#4345) 2025-03-16 15:34:53 +01:00
Alessandro RosandGitHub 244da930a1 switch to mediacommon/v2 (#4259) 2025-02-17 14:54:58 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 RosandGitHub 5bb751a4c8 hls: fix reading AV1 from OBS+WHIP (#3886) (#4177) 2025-01-19 18:40:18 +01:00
Alessandro RosandGitHub 070ea5fc19 rtmp: fix compatibility with DJI Osmo Action 4 (#3802) (#4116) 2025-01-07 17:36:31 +01:00
Alessandro RosandGitHub 6d7d0e6e21 fix documentation (#4110) 2025-01-05 12:02:04 +01:00
Alessandro RosandGitHub 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 RosandGitHub 770d72b638 rtmp: support Extended Metadata Frames (#4006) (#4014) (#4018) 2024-12-04 23:29:16 +01:00
Alessandro RosandGitHub 23002d9f5f route original timestamps without converting to durations (#3839)
This improves timestamp precision.
2024-10-07 17:59:32 +02:00
Alessandro RosandGitHub 2586782031 fix race condition in tests (#3834) 2024-10-05 21:54:11 +02:00
Alessandro RosandGitHub 4c3ac34425 fix memory leak in case of errors during initialization of a reader (#3831) 2024-10-05 00:49:44 +02:00
Alessandro RosandGitHub 658848f8c8 log track ID when skipping tracks (#3798) 2024-09-26 14:42:48 +02:00
Alessandro RosandGitHub 783fede2cb remove debug lines (#3771) 2024-09-15 22:52:55 +02:00
Alessandro RosandGitHub 471019f606 warn users about skipped tracks when reading or publishing (#3753) 2024-09-15 19:28:05 +02:00
Alessandro RosandGitHub e6653857aa rtmp: support ingesting AV1, VP9, H265, MP3, PCM from other servers (#3751) 2024-09-09 12:26:35 +02:00
Alessandro RosandGitHub c9a938a501 improve fuzz tests (#3596) 2024-08-01 17:01:56 +02:00
Alessandro RosandGitHub afec0cd86c rtmp: fix publishing from DJI FlightHub Sync (#3301) (#3504) 2024-07-01 16:03:12 +02:00
3a2594d610 rtmp: fix error when publishing AAC audio tracks (#3414)
* fix single aac file rtmp publish error.

* add tests

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2024-06-11 13:26:45 +02:00
xjr20042andGitHub 8b51ca9c8b rtmp: fix error when reading metadata (#3302)
some rtmp client will send set chunk size after publish stream
2024-04-29 21:49:38 +02:00