Vanilagy
3fc69490f5
Suppress range request warning for HLS-adjacent requests ( closes #354 )
2026-04-21 15:12:34 +02:00
Vanilagy
783cfa6fbe
Add AppendOnlyStreamSource, adjust examples to use it
2026-04-21 14:58:33 +02:00
Vanilagy
2b3e5f45c6
Remove createInputFrom, changed meaning of PathedSource, add CustomPathedSource
2026-04-21 13:22:10 +02:00
77e70f9090
Add BufferTarget.onFinalize, OutputOptions.onFinalize, ConcurrentRunner ( #349 )
...
* Add BufferTarget.onFinalize option for awaitable async action on finalize
The `finalized` event fires synchronously and its return value is ignored,
making it unsuitable for use cases where the muxer should wait (e.g.
uploading the buffer to S3, R2, or other object stores that require a
known Content-Length and therefore can't stream via StreamTarget).
Adds a new `BufferTargetOptions` type with an `onFinalize` callback that
the muxer awaits before resolving. Matches the existing callback pattern
used by `HlsOutputFormatOptions.onSegment`, `onMaster`, etc.
When used with PathedTarget, this provides proper backpressure: the next
segment won't start being produced until the previous one has finished
uploading, keeping memory bounded regardless of video length.
- Adds `BufferTargetOptions` type, exported from the package root
- `BufferTarget` constructor now accepts optional options (backward compatible)
- `_finalize()` awaits `onFinalize` before emitting the `finalized` event
- Adds runtime validation for non-function callbacks
- Updates "Upload to a server" docs in writing-hls.md with S3 pattern
- Documents `onFinalize` in writing-media-files.md BufferTarget section
- Adds tests for callback invocation, async awaiting, backward compat, and validation
* Add ConcurrentRunner, add OutputOptions.onFinalize, adjust docs accordingly, clean up tests
* give me more control baby
* forgot to tell about it
* polish guide and js docs
* vanilagy says remove this, docs will reveal it
---------
Co-authored-by: Vanilagy <[email protected] >
2026-04-17 18:42:09 +02:00
Vanilagy
9a7120f5f4
Add per-playlist "mutices" for HLS muxer
2026-04-17 18:35:33 +02:00
Vanilagy
2ab6bbe3d1
Bruh
2026-04-17 15:16:08 +02:00
Vanilagy
c8c8cf214c
Add first timestamp cache for performance
2026-04-17 15:06:18 +02:00
Vanilagy
95e9dc5210
MORE CODE REVIEW
2026-04-16 18:27:51 +02:00
Vanilagy
b85ecd3109
Code review fixes
2026-04-16 17:43:12 +02:00
Vanilagy
6dc4c2d499
More doc adjustments, some type adjustments
2026-04-16 16:19:08 +02:00
Vanilagy
5465602344
Add "Writing HLS" documentation, refine other stuff
2026-04-16 14:53:48 +02:00
Vanilagy
56b25fbdf8
Add onSegmentPopped, add more tests, improve validation, improve M3U8 grammar
2026-04-16 14:48:57 +02:00
Vanilagy
f99adf2208
Optimize media tag codec parsing, add a test for it, extract tag strings into constants
2026-04-16 11:31:43 +02:00
Vanilagy
2d0aac3208
Fix HLS demuxer parsing bug, extract HLS mime type out, add TargetRequest.mimeType
2026-04-16 10:53:36 +02:00
Vanilagy
7080b79a2a
Update docs a bunch, fix some typos
2026-04-15 14:36:53 +02:00
Vanilagy
606ee87822
Remove InputTrack[] option for ConversionOptions.tracks
2026-04-15 10:30:26 +02:00
Vanilagy
8241820a4f
Remove unnecessary sync getters
2026-04-15 09:16:40 +02:00
Vanilagy
62ac6d9dae
Change error wording
2026-04-15 08:27:34 +02:00
Vanilagy
a3767af141
Fix HLS muxer audio segmentation bug, fix conversion tests failing in CI
2026-04-14 21:40:07 +02:00
Vanilagy
6410ea9f42
Make Conversion API copy input pairability graph by default, fix HLS muxer rotation bug, remove onfinalized callback
2026-04-14 21:14:58 +02:00
Vanilagy
53f05afbd8
Add ability to group output tracks in Conversion API
2026-04-14 20:41:05 +02:00
Vanilagy
2f576aa486
Add fan-out API to Conversion API, fix erroneous track count validation
2026-04-14 16:27:02 +02:00
Vanilagy
c6e505a6fe
Make default keyFrameInterval 2 seconds to align with default HLS segment duration
2026-04-13 17:47:48 +02:00
Vanilagy
2a2b6450c9
Add better doc blocks, special deprecated logic for API doc generation, add multi-tiered SegmentedInput hydration for reducing file request count, ditch VirtualInputFormat indirection
2026-04-13 17:25:46 +02:00
Vanilagy
051578c2ca
Remove input track descriptors, add async getters on tracks for everything, deprecate old sync getters
2026-04-10 16:23:17 +02:00
Vanilagy
aa810fc433
Fix SourceRef race conditions, fix "source" and "target" getter returning unused instances, add missing validation, make "getDurationFromMetadata" only exist on tracks, fix examples, expand media player to support live playback, change the signatures of some Input APIs
2026-04-10 13:38:14 +02:00
Vanilagy
0813bcab28
Add missing doc blocks for everything, add PathedTarget and PathedSource, few other changes & fixes
2026-04-09 15:22:45 +02:00
Vanilagy
7d053ae50d
Add ConversionOptions.tracks, add better converstion start timestamp computation, optimize endPacket logic, utilize metadata duration for progress callback for better performance
2026-04-08 17:07:02 +02:00
Vanilagy
fdb5f4102f
Add new createInputFrom helper function
2026-04-08 14:52:27 +02:00
Vanilagy
bee1518100
Add TrackDescriptor concept
2026-04-08 12:21:08 +02:00
Vanilagy
b532714926
Merge branch 'main' into hls
2026-04-01 17:20:46 +02:00
Vanilagy
3c0a6fc299
Fix failing tests, add missing license headers
2026-04-01 16:39:42 +02:00
Vanilagy
5bba924ce5
Add PacketRetrievalOptions to decoded media sinks, allowing configuration of skipLiveWait ( fixes #342 )
2026-04-01 16:20:56 +02:00
Vanilagy
b86e527dc6
Add audio resampling, remixing and processing options to AudioEncodingConfig, small AudioResampler adjustments, add more tests
2026-04-01 15:46:02 +02:00
Vanilagy
1c08589021
Add "force" transform option, formalize that transformations bake in rotation
2026-04-01 14:34:05 +02:00
Vanilagy
024660773b
Add video frame preprocessing to VideoEncodingConfig & VideoEncoderWrapper
2026-04-01 13:30:34 +02:00
Vanilagy
3400b3ac12
Add maxLiveSegmentCount HLS option
2026-03-31 17:58:02 +02:00
Vanilagy
340b5eede7
Add support for writing Unix epoch-relative tracks to HLS, add proper cleanup of all Targets obtained by an Output
2026-03-31 15:12:38 +02:00
Vanilagy
b06e407d65
Add HLS live mode
2026-03-31 14:13:00 +02:00
Vanilagy
6b677291cd
Fix HLS muxer spec violations
2026-03-30 18:03:10 +02:00
Vanilagy
3bcbcc13f0
Add CMAF format and CMAF/init segment support to HLS muxer
2026-03-30 17:06:57 +02:00
Vanilagy
7b70756961
Remove superfluous end pos seeks, fix validation bug
2026-03-27 21:29:47 +01:00
Vanilagy
94678dd356
Add support for writing I-frame only tracks, fix track closing race conditions in other muxers
2026-03-27 18:48:27 +01:00
Vanilagy
e2e8aaab78
Refactor Target and Writer, add single-file HLS writing mode
2026-03-27 18:07:26 +01:00
Vanilagy
b8044cfa07
Add more segmentation tests
2026-03-27 14:27:30 +01:00
Vanilagy
17fac170c1
Add some HLS events, add configurable target duration, add public-API OutputTrack
2026-03-27 13:37:14 +01:00
Vanilagy
5bc1a31b8e
Rewrite HLS segmentation algo AGAIN, add a bunch of HLS segmentation tests, add VideoEncoder/AudioEncoder timing refinement logic, fix HLS output spec violations
2026-03-26 16:23:07 +01:00
Vanilagy
157582498f
Remove InputTrack.groupId, hide pairing mask, change HLS track merging behavior
2026-03-24 21:54:00 +01:00
Vanilagy
3e87d747e6
Add HLS master playlist generation, add multi-playlistadd output track grouping, add multi-playlist HLS files, add configurable playlist and segment names, add TrackDisposition.primary
2026-03-24 15:53:21 +01:00
Vanilagy
e03bb21c8a
Fixed missing default values in Matroska demuxer ( fixes #335 )
2026-03-23 11:02:08 +01:00