| Age | Commit message (Collapse) | Author |
|
Fixes for multi version handling
|
|
|
|
|
|
Implement search providers
|
|
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
|
|
|
|
|
|
* Add support for VobSub subtitle streams
* update logic to determine separate extraction for VobSub subtitles
* simplify VobSub extraction logic and fix ffmpeg command
* Match `ExtractAllExtractableSubtitlesMKS` with `ExtractAllExtractableSubtitlesInternal` Matroska's VobSub option
* Add a comments clarify why MKS was used, and remove the redundant VobSub extension branch
* remove redundant VobSub format check
* fix type errors
|
|
# Conflicts:
# Emby.Server.Implementations/Library/LibraryManager.cs
# Jellyfin.Server.Implementations/Item/PeopleRepository.cs
# MediaBrowser.Controller/Library/ILibraryManager.cs
# MediaBrowser.Controller/Persistence/IPeopleRepository.cs
|
|
DTOs and associated references
|
|
Fix A/V desync when resuming HLS with video transcode + audio copy
|
|
|
|
|
|
Allow external subtitle files (SRT, ASS, PGS, etc.) to be muxed into
MKV output containers when the device profile requests Embed delivery.
Previously, the IsExternal guard in GetSubtitleProfile excluded external
subtitles from Embed consideration entirely, forcing them to be served
as separate sidecar files even when the output container supports
embedding.
Changes:
- Extract CanConsiderEmbedSubtitle in StreamBuilder to allow external
subs through when transcoding to MKV
- Add external subtitle file as FFmpeg input (-i) for Embed delivery
- Map external embedded subs from the correct FFmpeg input index
- Fix external audio map index to account for the new subtitle input
- Extract NeedsExternalSubtitleMuxing in EncodingHelper to deduplicate
the external subtitle input check
Fixes #16403
|
|
|
|
Fix CA1819 warnings in ChannelFeatures by using IReadOnlyList
|
|
New filters for audio and subtitle languages
|
|
Co-authored-by: Bond-009 <bond.009@outlook.com>
|
|
Implement similarity providers
|
|
|
|
|
|
|
|
|
|
|
|
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
|
|
Fix CA1051 and CA1815 warnings, Change public fields to auto properties
|
|
* Add OriginalLanguage as option to PreferredAudioLanguage
* Support for multiple original languages
* Add original audio stream indicator
* Fetch OriginalLanguage from TMDB
* Adapt to EFCore refactor
* Fix PlayDefaultAudioTrack OriginalLanguage behavior
* Fix better PlayDefaultAudioTrack OriginalLanguage behavior
* Add comment to ItemFields
* Improved PlayDefaultAudioTrack behavior
* Add migration for original language
* Use sting.Equals for string comparisons
* Always set dto OriginalLanguage
* Remove OriginalLanguage from ItemFields
---------
Co-authored-by: Lampan-git <lampan-git@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
|
fix: add image/jpg to MIME type extension lookup
|
|
|
|
Although image/jpg is not a registered MIME type (RFC 2046 specifies
image/jpeg), several external providers return image/jpg as the
Content-Type for JPEG images:
- TMDb API (thumbnail/episode images)
- Schedules Direct EPG
- Various other metadata providers
Without this mapping, Jellyfin throws ArgumentException:
'Unable to determine image file extension from mime type image/jpg'
This causes library scans to fail when saving episode thumbnails
and other images from these providers, leading to repeated scan
failures and cancelled library scans.
PR #7052 previously added this but it was lost during the migration
to FrozenDictionary. Issue #13568 reports the same bug in 10.10+.
Fixes: jellyfin/jellyfin#13568
Related: jellyfin/jellyfin#7050, jellyfin/jellyfin#7052
|
|
Respect EnableSubtitleExtraction setting in subtitle delivery
|
|
Fix language display for ISO 639-2-only codes (e.g. mul, und, mis, zxx)
|
|
|
|
LoadCultures() in LocalizationManager skipped all iso6392.txt entries
without a two-letter ISO 639-1 code, dropping 302 of 496 languages
including mul (Multiple languages), und (Undetermined), mis (Uncoded
languages), zxx, and many real languages like Achinese, Akkadian, etc.
This caused FindLanguageInfo() to return null for these codes, which
meant:
- ExternalPathParser could not recognize them as valid language codes
in subtitle filenames, so the Language field was never set
- DisplayTitle fell back to the raw code string (e.g. "Mul")
Fix by allowing entries without two-letter codes to be loaded with an
empty TwoLetterISOLanguageName. Also set LocalizedLanguage in
ProbeResultNormalizer for ffprobe-detected streams (the DB repository
path was already handled on master).
|
|
|
|
Also enables nullable for MediaStreamInfo
Makes more properties nullable that aren't always present
|
|
|
|
|
|
Fix remote image language priority to prefer English over no-language
|
|
Wire up EnableSubtitleExtraction config to MediaEncoder.CanExtractSubtitles
so the setting is actually respected. Gate subtitle extraction check behind
PlayMethod.Transcode since DirectPlay has no competing ffmpeg process.
Add parameterized tests for StreamBuilder.GetSubtitleProfile covering
text and graphical codecs, profile format matching, and extraction
setting behavior. Remove misplaced SubtitleEncoder extraction test.
|
|
Replace Enum.Parse(typeof(T), ...) and Enum.GetNames(typeof(T)) with
their generic counterparts Enum.Parse<T>() and Enum.GetNames<T>() in
MediaBrowser.Model/Dlna for improved type safety.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Previously, images with no language were ranked higher (score 3) than
English images (score 2), causing poorly rated languageless images to
be selected over well-rated English alternatives for posters and logos.
Swap the priority so English is preferred over no-language images.
Backdrop images are unaffected as they have their own dedicated sorting.
Add unit tests for OrderByLanguageDescending.
Fixes #13310
|
|
Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxies
|
|
StreamInfo.ToUrl() generated URLs like `/master.m3u8?&DeviceId=...` (note `?&`)
because `?` was appended to the path and all parameters started with `&`. When
the first optional parameter (DeviceProfileId) was null, the result was a
malformed query string.
This is harmless when clients hit Jellyfin directly (ASP.NET Core tolerates `?&`),
but when accessed through a reverse proxy that parses and re-serializes the URL
(e.g. Home Assistant ingress via aiohttp/yarl), `?&` becomes `?=&` — introducing
an empty-key query parameter. ParseStreamOptions then crashes on `param.Key[0]`
with IndexOutOfRangeException.
Changes:
- StreamInfo.ToUrl(): Track query start position and replace the first `&` with
`?` after all parameters are appended, producing valid query strings
- ParseStreamOptions: Guard against empty query parameter keys
- Tests: Remove .Replace("?&", "?") workaround that masked the bug
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
|
Remove some deprecated API members
|