Release Notes
Added
- Show playout warnings count badge in left menu
- Graphics Engine:
- Add
MediaItem_Resolutiontemplate data (the currentResolutionvariable is the FFmpeg Profile resolution) - Add
MediaItem_Starttemplate data (DateTimeOffset) - Add
MediaItem_Stoptemplate data (DateTimeOffset) - Add
ScaledResolutiontemplate data (the final size of the frame before padding) - Add
place_within_source_content(true/false) field to image graphics element - Add
namefield to all graphics elements to display in the UI
- Add
- Classic and block schedules: add collection type
Search Query- This allows defining search queries directly on schedule items without creating smart collections beforehand
- As an example, this can be used to filter or combine existing smart collections
- Filter:
smart_collection:"sd movies" AND plot:"christmas" - Combine:
smart_collection:"old commercials" OR smart_collection:"nick promos"
- Filter:
- Scripted schedules: add
custom_titletostart_epg_group - Add MPEG-TS Script system
- This allows using something other than ffmpeg (e.g. streamlink) to concatenate segments back together when using MPEG-TS streaming mode
- Scripts live in config / scripts / mpegts
- Each script gets its own subfolder which contains an
mpegts.ymldefinition and corresponding windows (batch) and linux (bash) scripts - The global MPEG-TS script can be configured in Settings > FFmpeg > Default MPEG-TS Script
- Add
.avsAviSynth Script support to all local libraries.avswas added as a valid extension, so they should behave the same any other video file- There are two requirements for AviSynth Scripts to work:
- FFmpeg needs to be compiled with AviSynth support (not currently available in Docker)
- AviSynth itself needs to be installed
- Add
Troubleshootbutton to classic schedule list- This generates JSON representing the entire schedule which can be shared when requested for troubleshooting
- Add Settings > FFmpeg > Probe For Interlaced Frames
- When enabled, this will probe local content for interlaced frames on demand (immediately before playback)
- This will be used as a more accurate check for interlaced content
- The result will be cached (only probed once and stored) in the database along with all other media item statistics (e.g. duration)
- This feature will currently ignore content that is not streamed from disk
- Add error/offline background customization
- Default error background is now named
_background.png - Error streams will prioritize using
background.pngif it exists- Replacing this
background.pngfile will allow custom error/offline backgrounds
- Replacing this
- Default error background is now named
- Add
Troubleshoot Playbackbuttons on movie and episode detail pages - Add song background and missing album art customization
- Default files start with an underscore; custom versions must remove the underscore
- Expose arbitrary EPG data to graphics engine via channel guide templates
- XML nodes using the
etv:namespace will be passed to the graphics engine EPG template data - For example, adding
<etv:episode_number_key>{{ episode_number }}</etv:episode_number_key>toepisode.sbntxtwill also add theepisode_number_keyfield to all EPG items in the graphics engine - All values parsed from XMLTV will be available as strings in the graphics engine (not numbers)
- All
etv:nodes will be stripped from the XMLTV data when requested by a client
- XML nodes using the
- Add channel troubleshooting button to channels list
- This will open the playback troubleshooting tool in "channel" mode
- This mode requires entering a date and time, and will play up to 30 seconds of one item from that channel's playout starting at the entered date and time
- Block schedules: add copy template button to templates table
Fixed
- Fix HLS Direct playback with Jellyfin 10.11
- Fix remote stream scripts (parsing issue with spaces and quotes)
- Fix block history being removed when it is still needed for mirror channel
- This caused playout build errors like "Unable to locate history for playout item"
- Fix crashes due to invalid smart collection searches, e.g.
smart_collection:"this collection does not exist" - Fix UI crash when editing block playout that has default deco
- Fix playback failure when seeking content with certain DTS audio (e.g. DTS-HD MA)
- Properly set explicit audio decoder on combined audio and video input file
- Fix building sequential schedules across a UTC offset change
- Fix block start time calculation across a UTC offset change
- Fix classic schedule start time calculation across a UTC offset change
- Fix XMLTV generation for channels using on-demand playout mode
- Fix some file not found songs missing from trash view
- Fix error/offline screen generation
- Fix subtitle title sync from Jellyfin libraries
- Deep scans will be required to update subtitle titles on existing media items
- Fix saving subtitle title changes to the database
- This fixes e.g. where stream selection would continue to use the original title
- This fix applies to all libraries (local and media server)
- Fix (3 year old) bug removing tags from local libraries when they are removed from NFO files (all content types)
- New scans will properly remove old tags; NFO files may need to be touched to force updating during a scan
- Fix bug where looping motion graphics wouldn't be displayed when seeking into second half of content
- Fix
content_total_durationvalue in graphics engine opacity expressions- This bug caused some graphics elements to display too early after first joining a channel
- Optimize database calls made for search index rebuilds and updates
- This should improve performance of library scans
- Add toggle to hide/show disabled channels in channel list
- Add disabled text color and
(D)and(H)labels for disabled and hidden channels in channel list - Graphics engine: fix subtitle path escaping and font loading
- Fix corrupt output (green artifacts) when decoding certain 10-bit content using AMD Polaris GPUs
- Work around sequential schedule validation limit (1000/hr by Newtonsoft.Json.Schema library)
- Playout builds now use JsonSchema.Net library which has no validation limit
- Validation tool in the UI still uses Newtonsoft.Json.Schema (with 1000/hr limit) as the error output is easier to understand
- Fix editing scripted and sequential playouts when using MySql
- Fix HLS Direct streams remaining open after client disconnect
- Always log scanner exit code when it is non-zero
Changed
- Classic schedules:
Refreshclassic playouts from playout list; do notResetthem- This mode maintains progress; progress can be reset by editing the playout and clicking
Erase Items and History
- This mode maintains progress; progress can be reset by editing the playout and clicking
- Use smaller batch size for search index updates (100, down from 1000)
- This should help newly scanned items appear in the UI more quickly
- Replace favicon and logo in background image used for error streams
- Block schedules:
- Auto scroll day view to block item time when adding and removing block items from template
- Allow keyboard selection of
- Block groups in block list
- Template groups in template list
- Block groups and blocks in template editor
- Replace template tree view with searchable table (like blocks)
- Upgrade to dotnet 10