Release Notes
Added
- Graphics Engine:
- Add
scriptgraphics element type- Supported in playback troubleshooting and all scheduling types
- Supports arbitrary scripts or executables that output graphics to ETV via stdout
- Supports EPG and Media Item replacement in entire template
- EPG data is sourced from XMLTV for the current time
- EPG data can also load a configurable number of subsequent (up next) entries
- Media Item data is sourced from the currently playing media item
- EPG data is sourced from XMLTV for the current time
- All template data will also be passed as JSON to the stdin stream of the command
- Template supports:
- Script and arguments (
commandandargs) - Draw order (
z_index) - Timing (
start_secondsandduration_seconds) - Data format (
format)rawformat means full frames of BGRA data to stdoutpacketformat means ETV graphics packets to stdout
- Script and arguments (
- Add framerate template data
RFrameRate- the real content framerate (or channel normalized framerate) as reported by ffmpeg, e.g.30000/1001FrameRate- the decimal representation ofRFrameRate, e.g.29.97002997
- Add
Channel_StartTimetemplate data- This indicates the time that the transcode session started for the current channel
- Add
- Add remote stream metadata
- Remote stream definitions (yaml files) can now contain
title,plot,yearandcontent_ratingfields - Remote streams can now have thumbnails (same name as yaml file but with image extension)
- This metadata will be used in generated XMLTV entries, using a template that can be customized like other media kinds
- Remote stream definitions (yaml files) can now contain
- Add
Download Media Samplebutton to playback troubleshooting- This button will extract up to 30 seconds of the media item and zip it
- Add
Target Loudness(LUFS/LKFS) to ffmpeg profile when loudness normalization is enabled- Default value is
-16; some sources normalize to a quieter value, e.g.-24
- Default value is
- Add environment variables to help troubleshoot performance
ETV_SLOW_DB_MS- milliseconds threshold for logging slow database queries (at DEBUG level)- e.g. if this is set to
1000, queries taking longer than 1 second will be logged
- e.g. if this is set to
ETV_SLOW_API_MS- milliseconds threshold for logging slow API calls (at DEBUG level)- This is currently limited to Jellyfin
ETV_JF_PAGE_SIZE- page size for library scan API calls to Jellyfin; default value is 10ETV_JF_ENABLE_STATS- enables logging timing information related to Jellyfin show library scans
- Add
Select Allbutton to media pages by @Erotemic
Fixed
- Fix startup on systems unsupported by NvEncSharp
- Fix detection of Plex Other Video libraries using
Plex Personal Mediaagent- If the library is already detected as a Movies library in ETV, synchronization must be disabled for the library to change it to an Other Videos library
- A warning will be logged when this scenario is detected
- Graphics Engine:
- Optimize graphics engine to generate element frames in parallel and to eliminate redundant frame copies
- Match graphics engine framerate with source content (or channel normalized) framerate
- Fix loading requested number of epg entries for motion graphics elements
- Fix bug with mirror channels where seemingly random content would be played every ~40 seconds
- Fix chronological sorting for Other Videos that have release date metadata
- Fix playout sorting after using channel number editor
- VAAPI: Only include
-sei a53_ccflags when misc packed headers are supported by the encoder- This should fix playback in some cases, e.g. AMD VAAPI h264 encoder
- AMD VAAPI:
- work around buggy ffmpeg behavior where hevc_vaapi encoder with RadeonSI driver incorrectly outputs height of 1088 instead of 1080
- fix green padding when encoding h264 using main profile
- Automatically kill playback troubleshooting ffmpeg process if it hasn't completed after two minutes
- Fix playback of certain BT.2020 content
- Use playlist item count when using a playlist as filler (instead of a fixed count of 1 for each playlist item)
- NVIDIA:
- Fix stream failure with certain content that should decode in hardware but falls back to software
- Fix stream failure with content that changes color metadata mid-stream
- Fix stream failure when configured fallback filler collection is empty
- Fix high CPU when errors are displayed; errors will now work ahead before throttling to realtime, similar to primary content
- Fix startup error caused by duplicate smart collection names (and no longer allow duplicate smart collection names)
- Fix erroneous downgrade health check failure with some installations that use MariaDB
- Sequential schedules: fix
countinstruction validation to accept integer (constant) or string (expression) - Fix multi-part episode grouping logic so that it does NOT require release date metadata for episodes within a single show
- When Treat Collections As Shows is enabled (i.e. for crossover episodes) release date metadata is required for proper grouping
- Fix many cases of duplicate names; enforce case-insensitive unique names at the db schema level
- Fix playback when using
ETV_BASE_URLby @JamesDearlove
Changed
- No longer round framerate to nearest integer when normalizing framerate
- Allow playlists to have no items included in EPG
- Change how fallback filler works
- Items will no longer loop; instead, a sequence of random items will be selected from the collection
- Items may still be cut as needed
- Hardware acceleration will now be used
- Items can "work ahead" (transcode faster than realtime) when less than 3 minutes in duration
- Optimize Jellyfin database fields and indexes
- Optimize Jellyfin show library scans by only requesting
People(actors, directors, writers) when etags don't match- This should significantly speed up periodic library scans, particularly against Jellyfin 10.11.x
- Lazy load media item images in UI
- Align alternate schedule and template handling (between classic schedules and block schedules)
- Both systems now support limiting to a date range
- This date range can be repeating (when year is not specified for start or end dates)
- This date range can be exact (when year is specified for start and end dates)