Commit Graph
165 Commits
Author SHA1 Message Date
Alessandro RosandGitHub 92f9ee7b78 deprecate fallback (#5388)
The fallback feature worked with RTSP only and did not allow readers to
resume the original stream. It has been replaced by alwaysAvailable.
2026-01-31 15:29:24 +01:00
Alessandro RosandGitHub 115dab1533 api: add available, availableTime, online, onlineTime properties (#5391)
these replace ready and readyTime and allow to monitor the new
"always-available" feature.
2026-01-31 14:54:10 +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 46b4293e35 api: improve openapi definition (#5380)
add uint64, uint, uuid, move WebRTCICEServer into dedicated schema
2026-01-25 19:35:43 +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
bluenviron-botandGitHub 320bd3f4ae bump golangci-lint to 2.8.0 (#5350) 2026-01-15 22:43:32 +01:00
Alessandro RosandGitHub b9adbc3e09 remove redundant check (#5311) 2026-01-01 22:47:03 +01:00
Alessandro RosandGitHub ff187b6d8a update golangci-lint configuration (#5182) 2025-11-11 23:57:52 +01:00
Alessandro RosandGitHub adc4a6ceb6 add udpReadBufferSize parameter (#5129)
this allows to set a global UDP read buffer, applied to every UDP socket.
2025-10-29 11:28:22 +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 e1f5d06612 allow changing record parameters without disconnecting readers (#4663) (#5018) 2025-09-23 10:31:05 +02:00
Alessandro RosandGitHub e3b8af8933 switch to gortsplib/v5 (#4978) 2025-09-16 13:10:34 +02:00
Alessandro RosandGitHub d423a71aaa update linter settings (#4790) 2025-07-26 16:44:32 +02:00
Alessandro RosandGitHub 0b901ade3e remove PathManager.StartPublisher and StopPublisher (#4766)
simplify path manager usage.
2025-07-21 13:52:55 +02:00
Alessandro RosandGitHub 9ddcbf5c97 recorder: limit maximum part size (#4674) (#4760)
this prevents RAM exhaustion.
2025-07-20 19:16:33 +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 bf9cd328a9 rpi: fix RTP packet size (#4691)
UDP max payload size was not applied.
2025-07-05 15:31:28 +02:00
Alessandro RosandGitHub defee1eed9 hls: fix toggling hlsAlwaysRemux after server is started (#4503)
When hlsAlwaysRemux was switched from false to true, through API or hot
reloading, muxers of existing paths were not created. This fixes the
issue.
2025-05-09 22:50:11 +02:00
Alessandro RosandGitHub 8ce49727d6 rpi: support exposing a secondary stream from the same camera (#4426) 2025-04-14 11:56:08 +02:00
Alessandro RosandGitHub 14f1daa02a move static source handler into dedicated package (#4427) 2025-04-13 21:35:12 +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 b329c4bbe8 replace New* with Initialize() (#4345) 2025-03-16 15:34:53 +01:00
Alessandro RosandGitHub 371b9585a6 change error message when stream is not found (#4301)
Switch from 'no one is publishing to path' to 'no stream is available
on path' since the stream might be provided from a static source too.
2025-03-03 18:09:22 +01:00
Alessandro RosandGitHub d822c2a200 rtsp: support using relative URLs in sourceRedirect (#4260) 2025-02-18 15:23:07 +01:00
Alessandro RosandGitHub b49acb1e00 accept durations expressed as days (i.e. '1d') (#4094) 2025-01-02 12:44:15 +01: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 73a300afd0 fix cleaning of recordings in case of multiple recordDeleteAfter values (#3557) (#3741) 2024-09-08 20:33:18 +02:00
Alessandro RosandGitHub 65d90f7cc6 allow using MTX_QUERY inside source (#3486)
this allows to pass query parameters to sources, for instance:

source: rtsp://my_host/my_path?$MTX_QUERY
sourceOnDemand: true
2024-06-18 22:10:26 +02:00
Alessandro RosandGitHub 3eabe6ac54 expose MTX_SEGMENT_DURATION to runOnRecordSegmentComplete (#3440) (#2983) (#3456)
* improve tests

* add duration to OnSegmentComplete

* expose MTX_SEGMENT_DURATION to runOnRecordSegmentComplete

* add tests
2024-06-11 18:30:40 +02:00
Alessandro RosandGitHub 95f1f79b35 api: fix crash when changing settings of an on-demand source that is idle (#3246) (#3249) 2024-04-15 17:44:54 +02:00
Alessandro RosandGitHub 1ae3240b91 hls: fix crash when muxer is being recreated, improve performance (#3017) 2024-02-13 23:32:15 +01:00
Alessandro RosandGitHub b6eaa6bc18 move test utilities into 'test' (#3016)
* move test utilities into 'test'

* rename newEmptyTimer into emptyTimer
2024-02-13 18:49:27 +01:00
Alessandro RosandGitHub 57c2d5aecb add playback server (#2452) (#2906)
* add playback server

* add playback switch

* update readme
2024-01-23 20:52:05 +01:00
Alessandro RosandGitHub 514036d41a treat different RTSP formats as different tracks in logs and API (#2907) 2024-01-15 12:08:14 +01:00
Alessandro RosandGitHub 7437ee7a09 update golangci-lint (#2868) 2024-01-03 21:13:20 +01:00
Alessandro RosandGitHub 1341421412 move api, metrics and pprof into dedicated packages (#2843) 2023-12-26 13:41:15 +01:00
Alessandro RosandGitHub 0c131a2e92 rpi: pass log level to libcamera (#2617) (#2811) 2023-12-15 12:10:16 +01:00
Alessandro RosandGitHub d261bfe773 support static sources in paths with regular expressions (#824) (#2799)
This allows to proxy requests to other servers by using regular
expressions.
2023-12-10 21:23:41 +01:00
Alessandro RosandGitHub 11988249df move servers into internal/servers (#2792) 2023-12-08 19:17:17 +01:00
Alessandro RosandGitHub 20123fd5b9 record: rename segmentPath into path (#2777) 2023-12-02 15:35:21 +01:00
Alessandro RosandGitHub 7c8e593b0b record: normalize decoding and encoding of segment paths (#2775) 2023-12-02 15:15:17 +01:00
Alessandro RosandGitHub ce45498769 move hooks into dedicated package (#2746) 2023-11-26 22:06:07 +01:00
Alessandro RosandGitHub 7a1e155531 update dependencies (#2687) 2023-11-13 00:09:42 +01:00
Alessandro RosandGitHub 687d8685ef webrtc: improve connectivity mechanism (#2686) 2023-11-12 23:55:28 +01:00
4bf0d10079 metrics: add paths_bytes_sent, srt_conns, srt_conns_bytes_received, srt_conns_bytes_sent (#2620) (#2619) (#2629)
* add missing Prometheus exports (#2620, #2619):
paths_bytes_sent, srt_conns, srt_conns_bytes_received, srt_conns_bytes_sent

* protect Stream.BytesSent()

* add tests

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2023-11-08 11:20:16 +01:00
Alessandro RosandGitHub 813611057d add runOnUnDemand hook (#2645) 2023-11-04 13:07:51 +01:00
Alessandro RosandGitHub 4f876ed207 fix crash when publishing to a path with 'runOnDemand' from outside 'runOnDemand' (#2636) (#2637) 2023-11-03 16:54:25 +01:00
Alessandro RosandGitHub 43d41c070b move static sources into dedicated package (#2616) 2023-10-31 14:19:04 +01:00
Alessandro RosandGitHub 3ebc585539 restart recordings in case of errors (#2439) (#2571) 2023-10-26 21:40:44 +02:00
Alessandro RosandGitHub 3a5bb06e26 add environment variable MTX_QUERY to some hooks (#2483) (#2522) 2023-10-18 11:50:26 +02:00