Commit graph

69 commits

Author SHA1 Message Date
dependabot[bot]
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 Ros
3de05c1330
api: always reply with JSON in case of success or failure (#5252)
Reply with "status": "ok" in case of success, and with "status":
"error" in case of error. This makes the API more accessible and user
friendly.
2025-12-07 10:37:55 +01:00
Alessandro Ros
0139105583
playback: fix crash (#5240) (#5250)
when requesting a recording with the mp4 format, if there are two
tracks and the second track has no sample, the server crashed. This
fixes the issue.
2025-12-06 22:45:50 +01:00
Alessandro Ros
9c5930464f
playback: support concatenating segments with long gaps (#5172)
Some checks are pending
code_lint / go (push) Waiting to run
code_lint / go_mod (push) Waiting to run
code_lint / docs (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_e2e (push) Waiting to run
Thanks to the new mtxi MP4 box, it's possible to check whether two
segments are consecutive without involving dates or timestamps.

When the new mtxi box is present in both segments, do not check if
the end of the first segment corresponds to the start of the
second segment.
2025-12-01 21:27:08 +01:00
KHuynh
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 Ros
ff187b6d8a
update golangci-lint configuration (#5182) 2025-11-11 23:57:52 +01:00
Alessandro Ros
f126a7e7d6
playback: improve segment merging algorithm (#5084)
* merge segments only if they belong to the same stream and are
consecutive. * compute DTS without using NTP timestamp, increasing
robustness against NTP fluctuations.
2025-10-13 17:00:21 +02:00
Alessandro Ros
7634370818
add read and write timeouts in HTTP servers (#5056)
Some checks failed
code_lint / go (push) Has been cancelled
code_lint / go_mod (push) Has been cancelled
code_lint / docs (push) Has been cancelled
code_lint / api_docs (push) Has been cancelled
code_test / test_64 (push) Has been cancelled
code_test / test_32 (push) Has been cancelled
code_test / test_e2e (push) Has been cancelled
this prevents zombie connections from piling up.
2025-10-04 10:01:21 +02:00
Alessandro Ros
2690ef8e71
api: add /info endpoint (#945) (#5045) 2025-09-30 10:39:27 +02:00
Alessandro Ros
f987695d9d
rtsp: log authentication failure reason (#4641) (#5017) 2025-09-23 10:18:13 +02:00
Alessandro Ros
5240bcb8ff
log authentication errors of API, metrics, pprof (#4641) (#5015) 2025-09-23 09:51:22 +02:00
Alessandro Ros
b517631b8f
fix authentication failure reason not being displayed (#5007) 2025-09-22 09:48:51 +02:00
Alessandro Ros
0c801564fd
playback: fix crash during authentication errors (#4960) (#4966) 2025-09-12 15:24:51 +02:00
krystiancha
6ffa07e8e8
Add support for HTTP over unix sockets (#4241)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_e2e (push) Waiting to run
This adds support for using unix scheme in xxxAddress config options.
For example `hlsAddress: "unix://hls.sock"`.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-08-03 12:30:26 +02:00
Alessandro Ros
d423a71aaa
update linter settings (#4790) 2025-07-26 16:44:32 +02:00
dependabot[bot]
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
402b8ff9c9
recorder, playback: support changing codec parameters without switching segment (#4262) (#4582) 2025-05-29 20:37:12 +02:00
Tarık Erkan
e6a7a87c7f
Fix: gracefully handle fMP4 segments with missing or partial moof/mdat (#4538)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_e2e (push) Waiting to run
2025-05-25 21:29:53 +02:00
Alessandro Ros
fff3b9b315
record: fix loss of audio samples during segment switch (#4556) 2025-05-25 21:29:33 +02:00
Alessandro Ros
01e6fedc36
playback: fix jerky video (#4555)
this happened when recording has B-frames, playback format is fmp4 and starting position doesn't correspond to a IDR frame.
2025-05-25 21:09:23 +02:00
Alessandro Ros
9a3bbda8f8
playback: fix error 404 when seeking before start of segment (#4276) (#4533) (#4539)
Fixes #4276
Replaces #4533
2025-05-25 18:50:19 +02:00
Alessandro Ros
e707a9237d
improve tests, documentation (#4549) 2025-05-23 13:25:17 +02:00
Alessandro Ros
f97213ae6e
support passing JWTs through the password field (#4516)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_e2e (push) Waiting to run
This is safer than passing JWTs through query parameters, unfortunately support is limited.
2025-05-10 22:54:24 +02:00
Alessandro Ros
386be42784
rtsp: rewrite authentication around ServerConn.VerifyCredentials (#4267)
Some checks failed
code_lint / golangci_lint (push) Has been cancelled
code_lint / mod_tidy (push) Has been cancelled
code_lint / api_docs (push) Has been cancelled
code_test / test_64 (push) Has been cancelled
code_test / test_32 (push) Has been cancelled
code_test / test_highlevel (push) Has been cancelled
2025-02-18 17:54:13 +01:00
Alessandro Ros
244da930a1
switch to mediacommon/v2 (#4259)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_highlevel (push) Waiting to run
2025-02-17 14:54:58 +01:00
ijessen-mitll
35e858c6e7
playback: fix filtering when start date is earlier than first segment (#4173)
* bugfix in recordstore: no segments returned when given a start time earlier than all available segments

* add tests

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-01-19 10:23:03 +01:00
Alessandro Ros
8f04264fe5
webrtxc: fix MTX_QUERY not set when reading or publishing (#4138) (#3937) (#4141) 2025-01-11 17:29:48 +01:00
Alessandro Ros
38f3662f7a
playback: in /list, always return 404 when there are no timespans (#4131) 2025-01-10 16:53:28 +01:00
ijessen-mitll
c7595a5cd8
playback: fix extraneous list entry when start time is specified (#4129)
* fix extraneous playback list entry when start time is specified

* add comment and test

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-01-10 16:20:25 +01:00
Alessandro Ros
21b5031d6b
playback: improve /list performance (#3663) (#4102)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_highlevel (push) Waiting to run
Segments are now parsed in parallel.
2025-01-03 13:59:49 +01:00
Alessandro Ros
ac0ddc9e8a
playback: improve /list response time (#3637) (#4096)
Response times of the /list endpoint were slow because the duration of
each segment was computed from scratch by summing the duration of each
of its parts.

This is improved by storing the duration of the overall segment in the
header and using that, if available.
2025-01-03 13:08:46 +01:00
dependabot[bot]
0f74cee372
build(deps): bump github.com/bluenviron/gohlslib/v2 from 2.1.0 to 2.1.1 (#4099)
* build(deps): bump github.com/bluenviron/gohlslib/v2 from 2.1.0 to 2.1.1

Bumps [github.com/bluenviron/gohlslib/v2](https://github.com/bluenviron/gohlslib) from 2.1.0 to 2.1.1.
- [Commits](https://github.com/bluenviron/gohlslib/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gohlslib/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix tests

---------

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>
2025-01-02 13:10:57 +01:00
Alessandro Ros
b49acb1e00
accept durations expressed as days (i.e. '1d') (#4094) 2025-01-02 12:44:15 +01:00
Alessandro Ros
d38b7e95fc
playback: allow filtering timespans by start and end date (#3637) (#3489) (#4085) 2025-01-02 12:43:18 +01:00
Alessandro Ros
d13dc1074a
make better use of Gin middleware system (#3849) 2024-10-08 17:02:16 +02:00
Alessandro Ros
534b637bc7
support using JWT in Authorization header with API, Metrics, PProf (#3630) (#3795) 2024-10-05 21:15:21 +02:00
Alessandro Ros
73a300afd0
fix cleaning of recordings in case of multiple recordDeleteAfter values (#3557) (#3741) 2024-09-08 20:33:18 +02:00
Alessandro Ros
6da35c8041
playback: add "url" field to recording timespans in /list (#3619)
Some checks are pending
code_lint / golangci_lint (push) Waiting to run
code_lint / mod_tidy (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_highlevel (push) Waiting to run
2024-08-25 23:04:36 +02:00
Alessandro Ros
3f1d182d2c
fix support for HTTP preflight requests (#1792) (#3535) 2024-07-06 21:45:15 +02:00
Alessandro Ros
f4b7f147a5
api, playback: add CORS headers on non-existing pages too (#1792) (#3410) 2024-05-30 14:29:05 +02:00
Alessandro Ros
425b7fa4fb
move pmp4 package into mediacommon (#3367) 2024-05-18 11:27:39 +02:00
Alessandro Ros
0c86dca71a
fix 'no segments found' error message (#3323) 2024-05-05 11:43:41 +02:00
Alessandro Ros
1204f76eb7
update golangci-lint (#3300) 2024-04-28 18:20:08 +02:00
Alessandro Ros
85dd81698b
support HTTPS, Allow-Origin and trusted proxies in API, playback server, metrics server and pprof server (#2658) (#2491) (#3235) (#3280) 2024-04-21 17:10:35 +02:00
Rafael Scheidt
2bd8ac7e19
fix support for JWT authentication in API, metrics, playback, pprof (#3253)
Co-authored-by: Rafael Scheidt <rafaelscheidt@Rafaels-MacBook-Air.local>
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2024-04-18 23:55:48 +02:00
Alessandro Ros
3a968118db
playback: improve precision when splitting fMP4 parts (#3250) 2024-04-15 17:45:11 +02:00
Alessandro Ros
1c135fb62e
test: add MP4 playback tests (#3245) 2024-04-15 11:39:49 +02:00
Alessandro Ros
4157f490fa
playback: support serving streams in standard MP4 format (#3213)
* playback: support serving streams in standard MP4 format

* sort samples by DTS

* update readme
2024-04-14 19:29:29 +02:00
Alessandro Ros
0b5519d30c
deprecate path.playback parameter (#3217)
this has become useless after the introduction of the new
authentication system, that already allows to select which paths are
available for playback
2024-04-09 10:04:12 +02:00
Alessandro Ros
a50642c669
improve record tests (#3216) 2024-04-09 09:36:38 +02:00