- Fix consistent DASH adaptation set ID generation to incorporate all relevant properties (#272)
- This means different adaptation set IDs compared to previous versions, which may cause DASH playback to fail when upgrading. If the player does not handle this gracefully, restarting the stream should resolve it.
- Experimental Feature: support frame accurate media conditioning using an external Media Processing Unit (#275)
- Optimize database for performance, and add migration function to automatically upgrade older database versions (#268)
- Improve housekeeping performance by bulk deleting transitions (#266)
- Significantly improve performance for channels with many transitions (#264)
- Only trigger transition check tasks on successful channels (#274)
- Fix API error when attempting to update an already running live SMIL (#262)
- Fix inefficiencies in channel and transition delete API (#258)
- Fix rare case where HLS media sequence counter could lose track of transitions (#259)
- Add force DELETE for channels API (#256)
- Add access time to API and manifest proxy access logs (#250)
- Allow HEAD requests to manifest proxy (#246)
- Fix gaps in DASH multi-period output (#248)
- Clean up manifest proxy debug logging (#241)
- Enable full Manifest Edit functionality (#245)
- Improve handling of errors in HLS media sequence counting when a transition to a live source does not work as expected (#243)
- Change transition worker to continuously check manifests to ensure correct state is maintained (#238)
- Fix DASH incorrect period ID and start time when producing multi-period output on base channel (#240)
- Correctly set MPD@minimumUpdatePeriod and MPD@timeShiftBufferDepth in dynamic manifests (#236)
- Fix creation of check transition task for live transitions (#234)
- Output separate DASH periods for ad breaks (#203)
- Database changes related to this feature may break DASH output for existing channels and they will need to be recreated.
- Add MANIFEST_PROXY_HOST option for transition worker to connect to remote manifest proxy (#225)
- Properly handle request with vend in the future by capping it to current wallclock time (#229)
- Set correct Expires and Cache-Control: max-age headers when serving a live manifest, based on the expected next segment time (#226)
- Fix HLS keyframe playlist segment URLs (#224)
- Update HLS media sequence to account for extra segments added for ad insertion or playlist looping (#223)
- Allow custom RabbitMQ connection string for Celery by setting CELERY_BROKER environment variable (#221)
- Support optional hls_minimum_fragment_length configuration in live source SMIL head (#217)
- Correctly set start and end times on EXT-X-DATERANGE tags not attached to an EXT-INF (#222)
- Set correct timeShiftBufferDepth on dynamic DASH manifests with fixed vbegin (#219)
- Give more informative error message when requesting manifest with invalid vbegin, vend, or t query parameter (#218)
- Fix #EXT-X-MEDIA-SEQUENCE for streams with variable EXTINF durations (#216)
- Allow configuration of external Redis and RabbitMQ (#211)
- Fix incorrect headers set on manifest proxy response (#206)
- Fixed issue preventing transition creation when maximum number of channel is reached (#201)
- Fix DASH BaseURL calculation for transitions (#199)
- Error out on transition if base channel does not exists (#185)
- Reuse ismls as much as possible to improve cache efficiency of multiple channels with shared playlists (#147)
- Error out on transition creation if transition time is < vod2live start time (#186)
- Transitions are aborted if not ready before the scheduled transition time (#62)
- Automatic deletion of old playlists (configurable, defaults to 7 days retention) (#50)
- LOG_LEVEL values "warn" and "alert" now work correctly (#190)
- Improve SMIL parsing to properly handle optional attributes on EventStream and Event elements (#184)
- API Manifest Edit endpoints path renamed from .../pipelines/formats/{format} to .../pipelines/{format} (#174)
- API log endpoints path renamed from .../{channel}/log to .../{channel}/logs (#173)
- API transition endpoints path renamed from .../{channel}/{transition_time} to .../{channel}/transitions/{transition_time} (#172)
- API endpoints paths (all) renamed from /channel to /channels (#171)
- Switch uvicorn event loop to use uvloop (#176)
- Switch from Alpine Linux to Ubuntu 22.04 (#175)
- Remix timeout is now handled correctly and configurable (#170)
- Added working Manifest Edit example in Swagger UI (#164)
- Adaptation Set IDs in DASH manifests are now unsigned integers instead of strings (#159)
- A single env file now collects all Virtual Channel environmental variables used for configuration (#150)
- DASH manifest publishTime is now wallclock-based instead of starting from zero (#168)
- Fix HLS key change signalling on transition (#162)
- Add option to delay VOD2Live outputs to align media timeline with Live sources (#163)
- Manifest Proxy now integrates Manifest Edit functionalities (#154)
- Add support for DRM paramGroups and HLS variantSets to SMIL parser (#149)
- Reduced README content, now uses rst format and links to Unified doc pages (#145)
- Code obfuscation (#132)
- A license with Virtual Channel specific flags is now required (#126)
- Transitions are now refused if channel creation was not successful (#152)
- Fixed version number tag in /version endpoint and API doc page (#144)
- #84: The response of GET /channel/{channel}/transitions endpoint has changed in a non-backwards compatible way. It now returns a dictionary including details on status and related smil. Filtering on status is supported.
- #124: Test if playback works when transitioning across playlist with different encryption/drm settings
- #120: The GET /channel/{channel}/transitions endpoint now support time-based queries using the "begin" and "end" query parameters.
- #119: Improve delete API and file tracking
- #83: The GET /channel endpoint now only reports channels created with PUT /channel/{channel_name} requests.
- #73: If a job is submitted that can reuse existing remix mp4, then reuse it instead of running remix again
- #57: API Authorization through API Key can now be enabled. Disabled by default.
- #36: RabbitMQ default credentials are not used anymore. Users can change them to the desired values using .env file.
- #137: HLS: missing time adjustments for EXT-X-DATERANGE and EXT-X-PROGRAM-DATE-TIME when not first segment
- #123: Test encrypted sources
First private beta