Health Checks

Check Message

Full changelog is available on GitHub

Release Notes

Added

  • Graphics Engine:
    • Add script graphics 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
      • All template data will also be passed as JSON to the stdin stream of the command
      • Template supports:
        • Script and arguments (command and args)
        • Draw order (z_index)
        • Timing (start_seconds and duration_seconds)
        • Data format (format)
          • raw format means full frames of BGRA data to stdout
          • packet format means ETV graphics packets to stdout
    • Add framerate template data
      • RFrameRate - the real content framerate (or channel normalized framerate) as reported by ffmpeg, e.g. 30000/1001
      • FrameRate - the decimal representation of RFrameRate, e.g. 29.97002997
    • Add Channel_StartTime template data
      • This indicates the time that the transcode session started for the current channel
  • Add remote stream metadata
    • Remote stream definitions (yaml files) can now contain title, plot, year and content_rating fields
    • 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
  • Add Download Media Sample button 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
  • 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
    • 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 10
    • ETV_JF_ENABLE_STATS - enables logging timing information related to Jellyfin show library scans
  • Add Select All button to media pages by @Erotemic

Fixed

  • Fix startup on systems unsupported by NvEncSharp
  • Fix detection of Plex Other Video libraries using Plex Personal Media agent
    • 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_cc flags 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 count instruction 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_URL by @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)
An error has occurred. This application may no longer respond until reloaded. Reload 🗙