Release Notes
Added
- Channel stream selector: add zero-based culture-specific
day_of_weektocontent_condition, for example:- en-US can match sunday using
day_of_week = 0 - fr-FR can match sunday using
day_of_week = 6 - As a complete example, to match Saturday from 9pm (inclusive) to 11pm (exclusive), based on content start time
content_condition: day_of_week = 6 and (time_of_day_seconds >= 75600 and time_of_day_seconds < 82800)
- en-US can match sunday using
- Add
Pad Modeto ffmpeg profile. Options are:Hardware If Possible- default/existing behavior when hardware acceleration is properly configuredSoftware- force software padding- This can be used to work around buggy GPU driver behavior where padding is green instead of black
- This is most often seen with VAAPI acceleration (radeonsi or i965 drivers)
- Add API endpoint to clean artwork cache folder (on demand)
- POST
/api/maintenance/clean_artwork
- POST
- Add health check to warn about unsupported empty (classic) schedules
- Add health check to warn about incompatible ffmpeg due to missing filters
- This is directly applicable to homebrew
ffmpegon MacOS, which is no longer compatible with ErsatzTVffmpeg@7orffmpeg-fullshould be used instead
- This is directly applicable to homebrew
- Add
Marathon Group ByoptionDirector- This groups the first director on Movies, Episodes, Music Videos and Other Videos
- This is supported in classic schedules and sequential schedules
- Add FFmpeg Profile options:
Normalize Audio(default: true) - normalizes audio streams, or stream copies when disabledNormalize Video(default: true) - normalizes video streams, or stream copies when disabledNormalize Colors(default: true) - normalizes color parameters when enabled- Disabling any of these options may have a significant performance benefit at the expense of stream stability
- Add chapter
titleto filler expression- This can be used to include or exclude chapters with specific (case-insensitive) titles
- E.g.
title == 'here',title != 'not here',title like '%here%'
- Local movie libraries: load fanart from
backdropfiles (created by Jellyfin)
Changed
- Disable automatic artwork database cleanup
- This will be re-enabled at some point in the future (after more testing)
- For now, the API should be used to clean as needed
- Classic Schedules: make multiple
countan expression- The following parameters can be used:
count: the total number of items in the collectionrandom: a random number between zero and (count - 1)
- For example:
count / 2will play half of the items in the collectionrandom % 4 + 1will play between 1 and 4 items2(similar to before this change) will play exactly two items
- The following parameters can be used:
Fixed
- Use code signing on all Windows executables (
ErsatzTV-Windows.exe,ErsatzTV.exe,ErsatzTV.Scanner.exe) - Graphics engine:
- Respect
z_index(draw order) on all graphics element types - Fix bug with
z_indexsorting
- Respect
- Restore default UI font that was erroneously removed in v26.1.1
- Classic schedules: fix building playouts when
Fill With Group Modeschedule items also have graphics elements - Use configured searching log level on startup, instead of the default log level of
Information - MySql: fix searching for shows and seasons in schedule items editor
- Fix 500 errors when serving XMLTV due to concurrent file reads and writes
- Fix playback of AC3 audio when targeting stereo output and input layout changes mid-stream
- Use other video artwork in XMLTV template
- Properly update (add or remove) artwork for all local media libraries when files have changed
- Sync Plex library name changes
- Sync Plex episode title, plot, year, date added, release date, episode number changes
- Sync Jellyfin and Emby library name and type changes
- Library type (movies, shows) can only be changed when synchronization is disabled for the library in ETV
- Fix some sequential and scripted playout build failures when using playlists or marathons
- Fix erasing playout items and history so all related data is also erased
- This includes rerun history, unscheduled gaps, build status
- Fix indexing collections when using Elasticsearch backend