github ErsatzTV/legacy v25.3.0

latest releases: v26.4.0, v26.3.0, v26.2.0...
8 months ago

Release Notes

Added

  • Add new channel stream (audio and subtitle) selector system
    • Channel editor has a new field Stream Selector Mode
      • Default maintains existing behavior
      • Custom uses a YAML config file
    • The YAML config contains a prioritized list of stream selector "items" (audio and subtitle criteria pairs)
    • The items are tested against the media from top to bottom, and when (at least) a matching audio track is found, stream selection occurs
    • As an example, the custom stream selector config can specify (in priority order):
      • english audio (and disable subtitles)
      • any other audio (and english subtitles, if they exist)
    • Criteria can include
      • Stream language
      • Stream title (allowed title and/or blocked title)
      • Stream condition, which is an expression that can use
        • id (index)
        • title
        • lang
        • default
        • forced
        • sdh (subtitle only)
        • external (subtitle only)
        • codec
        • channels (audio only)
      • An example subtitle condition: lang like 'en%' and external
      • An example audio condition: title like '%movie%' and channels > 2
  • Add new channel setting Active Mode
    • Active - default value, channel streams as normal and has normal visibility
    • Hidden - channel streams as normal and is hidden from M3U/XMLTV/HDHR
    • Inactive - channel cannot stream (will 404) and is hidden from M3U/XMLTV/HDHR
  • Synchronize Plex "network" metadata for Plex show libraries
    • Shows will have new network search field
    • Episodes will have new show_network search field
  • YAML playout: add stop_before_end setting to pad_until and duration instructions
    • When stop_before_end: false, content can run over the desired time before executing the next instruction
  • YAML playout: add offline_tail setting to pad_until instruction
    • This can be used to stop primary content before the desired time (stop_before_end: true and offline_tail: false)
    • You can then have a second pad_until with the same target time and different content
  • YAML playout: make tomorrow an expression on pad_until instruction
    • true and false still work as normal
    • The current time (as a decimal) can also be used in the expression, e.g. now > 23
      • now = hours + minutes / 60.0 + seconds / 3600.0
      • So 10:30 AM would be 10.5, 10:45 PM would be 22.75, etc
  • YAML playout: make skip_items an expression
    • The following parameters can be used:
      • count: the total number of items in the content
      • random: a random number between zero and (count - 1)
    • For example:
      • count / 2 will start in the middle of the content
      • random will start at a random point in the content
      • 2 (similar to before this change) will skip the first two items in the content
  • YAML playout: make count an expression
    • The following parameters can be used:
      • count: the total number of items in the content
      • random: a random number between zero and (count - 1)
    • For example:
      • count / 2 will play half of the items in the content
      • random % 4 + 1 will play between 1 and 4 items
      • 2 (similar to before this change) will play exactly two items
  • YAML playout: add disable_watermarks property to all content instructions
    • This property defaults to false (meaning watermarks are allowed by default)
    • Setting to true will prevent watermarks from ever appearing over the content
  • YAML playout: add watermark instruction
    • With value of true and name property, will override the watermark in the playout to the watermark with the provided name
    • With value of false, will restore default watermark value (channel watermark, global watermark)
  • Show health check warning and error badges in nav menu
  • Add Expression for mid-roll filler to allow custom logic for using or skipping chapter markers
    • The following parameters can be used:
      • total_points: total number of potential mid-roll points
      • matched_points: number of mid-roll points that have already matched the expression
      • total_duration: total duration of the content, in seconds
      • total_progress: normalized position from 0 to 1
      • last_mid_filler: seconds since last mid-roll filler
      • remaining_duration: duration of the content after this mid-roll point, in seconds
      • point: the position of the mid-roll point, in seconds
      • num: the mid-roll point number, starting with 1
  • Add Disable Watermarks checkbox to block items
    • Block items that have this checked will never display a watermark, even with Deco set to override watermark
  • Add ETV_MAXIMUM_UPLOAD_MB environment variable to allow uploading large watermarks
    • Default value is 10
  • Update ffmpeg health check to link to ErsatzTV-FFmpeg release that contains binaries for win64, linux64, linuxarm64
  • Add Playback Troubleshooting page
    • This tool lets you play specific content without needing a test channel or schedule
    • You can specify
      • The media item id (found in ETV media info, and ETV movie URLs)
      • The ffmpeg profile to use
      • The watermark to use (if any)
    • Clicking Play will play up to 30 seconds of the specified content using the desired settings
    • Clicking Download Results will generate a zip archive containing:
      • The FFmpeg report of the playback attempt
      • The media info for the content
      • The Troubleshooting > General output
  • Support (Part [english number]) name suffixes for multi-part episode grouping, for example:
    • Awesome Episode (Part One)
    • Better Episode (Part Two)
    • Not So Great (Part Three)
  • Add Trakt List option Auto Refresh to automatically update list from trakt.tv once each day
  • Add Trakt List option Generate Playlist to automatically generate ETV Playlist from matched Trakt List items
  • Read country field from movie NFO files and include in search index as country
  • Add experimental and incomplete Remote Stream library kind
    • Remote Stream libraries have fallback metadata added like Other Video libraries (every folder is a tag)
    • Remote Stream library items consist of YAML (.yml) files with the following fields
      • url: the URL of the content that can be played directly by ffmpeg
      • script: the process name and arguments for a command that will output content to stdout
      • is_live: required property that indicates whether the remote stream contains live content
        • When this is set to true, ETV cannot work ahead on transcoding this item, which is a necessary tradeoff for supporting live content
        • When this is set to false, ETV will treat the stream as VOD and attempt to work ahead on transcoding like any other local item
          • This will cause errors when the content is actually live, so it's important to configure this correctly
      • duration: when the content is live and does not have duration metadata, this must be provided to allow scheduling
    • The remote stream definition (YAML file) may provide either a url or a script
      • If both are provided, url will be used
  • Include number of chapters in search index as chapters

Changed

  • Allow Other Video libraries and Image libraries to use the same folders
  • Try to mitigate inotify limit error by disabling automatic reloading of appsettings.json config files
  • Support movie, musicvideo and episodedetails top-level tags in other video NFO files
    • Note that no change has been made to the metadata tags that are actually parsed, but this should help with various types of content
  • Remove some limits on multithreading that are no longer needed with latest ffmpeg
    • Mixed transcoding (software decode, hardware filters/encode) can now use multiple decode threads
  • Split main Settings page into multiple pages
  • Update UI layout on all pages to be less cramped and to work better on mobile
  • Add CPU and Video Controller info to Troubleshooting > General output
  • Enable write-ahead logging (WAL) mode on SQLite databases
  • Add Multiple Mode option to schedule items editor and remove support for count values of zero
    • Count: same behavior as before, requires a number of media items to play and will always schedule the same number
    • Collection Size: similar to count of zero before, will play all media items from the collection before continuing to the next schedule item
    • Playlist Item Size: will play all media items from the current playlist item before continuing to the next schedule item
    • Multi-Episode Group Size: will play all media items from the current multi-part episode group, or one ungrouped media item
  • Change watermark width and margins to allow decimals
  • Move Add To Collection button to overflow menu on all media cards, and add Show Media Info to overflow menu
    • This allows showing media info for all media kinds
  • Unify on a multi-platform base docker tag (latest and develop)
    • amd64, arm64, arm/v7 platforms are now all supported in the base docker tag
    • Other docker platform tags are deprecated and will receive no new updates after the next release
    • A health check has been added to notify users (on -arm or -arm64 tags) of this change

Fixed

  • Fix QSV acceleration in docker with older Intel devices
  • Fix HDR transcoding with NVIDIA accel for:
    • All NVIDIA docker users
    • Windows NVIDIA users who have set the ETV_DISABLE_VULKAN env var
  • Fix audio sync issue with QSV acceleration
  • YAML playout: fix history for marathon and playlist content
    • This allows playouts to be extended correctly, instead of always resetting to the earliest item in each group
  • Fix using channel External Logo URL as watermark
  • Fix display of SVG channel logo and watermark in admin UI
    • Existing SVG logos and watermarks will have to be re-uploaded to display properly in the admin UI
    • This does not affect streaming at all; existing artwork still works fine for streaming
  • Classify HDHR endpoints as streaming endpoints
    • This allows these endpoints to be accessed through port ETV_STREAMING_PORT (default 8409)
    • This only matters if you configured ETV_UI_PORT to be a different value, which makes UI endpoints inaccessible on the streaming port
  • Update Plex movie/other video plot ("summary") during library deep scan
  • Fix compatibility with ffmpeg 7.2+ when using NVIDIA accel and 10-bit source content
  • Fix some NVIDIA edge cases when media servers don't provide video bit depth information
  • Fix VAAPI tonemap failure
  • Fix green bars after VAAPI tonemap
  • Fix bug where playout mode Multiple would ignore fixed start time
  • Fix block playout EPG generation to use XMLTV Time Zone setting
  • Fix adding "official" Trakt lists
  • Fix searching for collection names with spaces or other special characters, e.g. collection:"Movies - Action"
  • Fix QSV transcoding errors when scaling
  • Fix QSV frame freezing in browser
  • Fix some stream continuity issues, and some cases where audio sync is lost at transition
  • Fix HDR transcoding with AMD VAAPI accel
  • Allow paths longer than 255 characters in MySql databases

Don't miss a new legacy release

NewReleases is sending notifications on new releases.