github ErsatzTV/legacy v25.5.0

latest releases: v26.5.1, v26.5.0, v26.4.0...
8 months ago

Release Notes

Added

  • Add experimental graphics engine
    • All watermarks will use new graphics engine
  • Add Opacity Expression watermark mode
    • This allows specifying an expression that returns an opacity between 0.0 and 1.0
    • The expression can use:
      • content_seconds - the total number of seconds the frame is into the content
      • content_total_seconds - the total number of seconds in the content
      • channel_seconds - the total number of seconds the frame is from when the channel started/activated
      • time_of_day_seconds - the total number of seconds the frame is since midnight
    • The expression can also use functions:
      • LinearFadeDuration(time, start, fadeSeconds, peakSeconds)
      • LinearFadePoints(time, start, peakStart, peakEnd, end)
  • Add Z-Index to watermark editor
    • The graphics engine will order by z-index when overlaying watermarks
  • Add experimental Graphics Element template system
    • Graphics elements are defined in YAML files inside ETV config folder / templates / graphics-elements subfolder
    • Add text graphics element type
      • Supported in playback troubleshooting and YAML playouts
      • Displays multi-line text in a specified font, color, location, z-index
      • Supports constant opacity and opacity expression
      • Supports EPG and Media Item variable replacement
        • 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
    • Add image graphics element type
      • Supported in playback troubleshooting and YAML playouts
      • Displays an image, similar to a watermark
      • Supports constant opacity and opacity expression
    • Add subtitle graphics element type
      • Supported in playback troubleshooting and YAML playouts
      • Supports SRT and SSA/ASS subtitle formats
      • Supports EPG and Media Item variable replacement
        • 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
  • YAML playout: add graphics_on and graphics_off instructions to control graphics elements
    • graphics_on requires the name of a graphics element template, e.g. text/cool_element.yml
      • The variables property can be used to dynamically replace text from the template
    • graphics_off will turn off a specific element, or all elements if none are specified
  • Add Seek Seconds to playback troubleshooting to support capturing timing-related issues
  • Custom stream selector: add content_condition to allow channel and time-of-day based decisions
    • content_condition expression can use
      • channel_number
      • channel_name
      • time_of_day_seconds - the start time for the current item, represented in seconds since midnight
  • Add support for external chapter files next to video files
    • Currently supports Matroska Chapter XML format
      • Chapter files have .xml or .chapters extension
  • Add targeted (single-show) library scanning
    • Supports quick and deep scans
    • Can be triggered from the Scan button on show pages
    • Can be triggered by API call to /api/libraries/{library-id}/scan-show
  • Add XMLTV setting XMLTV Block Behavior to control how block schedules appear in the EPG
    • Split Time Evenly - default (existing) behavior; block time is split among all items that are visible in the EPG
    • Use Actual Times - actual times are used for all items that are visible in the EPG
      • This will introduce EPG gaps when filler is used, or when items are hidden from the EPG
  • Add experimental Scripted Schedule playout system
    • This system uses python scripts to support the highest degree of customization
    • The goal is to expose methods equivalent to all sequential schedule (YAML) instructions
  • YAML and Scripted schedules: add offline_tail and stop_before_end to pad_to_next instruction
    • Both parameters default to true

Fix

  • Fix database operations that were slowing down playout builds
    • YAML playouts in particular should build significantly faster
  • Fix channel playout mode On Demand for Block and YAML schedules
  • Fix QSV transitions when remote streaming from a media server
  • Fix green output when padding with VAAPI accel and i965 driver
  • Fix watermark custom image validation
  • Fix playback when using any watermarks that were saved with invalid state (no image)
  • Fix overlapping block playout items caused by Stop scheduling block items value After Duration End
    • Existing overlapping items will not be removed, but no new overlapping items will be created
    • Until these existing items age out, there will be warnings logged after each playout build/extension
  • Fix playback of anamorphic content from Jellyfin
    • This fix requires a manual deep scan of any affected Jellyfin library
  • Fix bug where multiple Plex servers would mix their episodes
  • Fix incorrect media item counts after removing paths from local libraries
  • Fix song playback in playback troubleshooting
  • Fix seeking into extracted text subtitles
  • Fix error when changing default (lowest priority) alternate schedule
  • Fix remote library editing, tv shows, artists with MySql/MariaDB
  • Classic schedules: fix alternate schedule transitions (some edge cases would cause days to be skipped completely)
  • Classic schedules: always start new alternate schedules with the first schedule item
  • Classic Schedules: log offline gaps longer than 1 hour due to strict fixed start times
  • Fix HLS Segmenter V2 streaming mode with AMF acceleration
  • Fix HLS Segmenter V2 streaming mode with VideoToolbox acceleration
  • Fix startup process for database and search index initialization
    • Redirect all pages to home page when initializing to prevent errors
    • Clear stale sqlite migration lock on startup to prevent getting stuck on database initialization
  • Fix display of long season placeholder text (when season posters are unavailable)

Changed

  • Rename some schedule and playout terms for clarity
    • Schedules are used to build playouts and are what actually differs
    • The playout is the end result, and is the same no matter what schedule kind is used
    • Supported schedule kinds:
      • Classic Schedules
      • Block Schedules
      • Sequential Schedules (formerly YAML Schedules or YAML Playouts)
      • Scripted Schedules
      • JSON (dizqueTV) Schedules (formerly External JSON Playouts)
  • Allow multiple watermarks in playback troubleshooting
  • Classic schedules: allow selecting multiple watermarks on schedule items
  • Block schedules: allow selecting multiple watermarks on decos
  • Block schedules: change available watermark modes on decos. For reference, the levels from highest to lowest with block schedules are Global > Channel > Playout Default Deco > Template Deco.
    • Inherit - Use watermarks configured at a higher level
    • Disable - Disable watermarks at this level and above
    • Replace - Replace all watermarks configured at a higher level with those on this deco
      • This was renamed from Override
    • Merge - Merge all watermarks configured at a higher level with those on this deco
  • YAML playout: watermark instruction changes:
    • When value is true, will add named watermark to list of active watermarks
    • When value is false and name is specified, will remove named watermark from list of active watermarks
    • When value is false and name is not specified, will clear all active watermarks
  • Use consistent UI sorting and validation, and fix renaming errors for
    • Block groups, blocks
    • Template groups, templates
    • Deco groups, decos
    • Deco template groups, deco templates

Don't miss a new legacy release

NewReleases is sending notifications on new releases.