aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding
AgeCommit message (Collapse)Author
28 hoursMerge pull request #17399 from Shadowghost/fix-extra-yearCody Robibero
Fix incorrect year on local trailers
43 hoursMerge pull request #17419 from rwebster85/mp4-audio-subtitle-namesCody Robibero
Check the "name" tag for audio/subtitle probe to fix MP4 not showing correctly - Fixes issue #17418
2 daysDrain stderr and stdout concurrently for encoder validationgnattu
Some ffmpeg build might output extremely long traces for its banner that consume all pipe capacity and hangs the process. We have to drain both streams regardless on which one we actually read.
3 daysUpdate commentRichard Webster
3 daysClarify comment about MP4 track title workaroundRichard Webster
4 daysCheck the "name" tag, not just "title"Richard Webster
5 daysPrefer null checks over HasValue everywhereShadowghost
5 daysMerge pull request #17160 from 854562/truncate-language-stringsCody Robibero
Truncate ISO-639-2 language display names at first delimiter
5 daysFix subtitle encoding for local files (#17281)Tim Eisele
* Fix subtitle encoding * Add short-circuit * Use IsTextFormat * Update MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs Co-authored-by: Bond-009 <bond.009@outlook.com> --------- Co-authored-by: Bond-009 <bond.009@outlook.com>
5 daysApply review suggestionsShadowghost
6 daysMerge remote-tracking branch 'upstream/master' into ↵Shadowghost
security-path-traversal-fixes # Conflicts: # Jellyfin.Api/Controllers/HlsSegmentController.cs # Jellyfin.Api/Controllers/PluginsController.cs
6 daysMerge pull request #17342 from LTe/fix-subtitle-conversion-raceCody Robibero
Fix race condition in concurrent subtitle conversion
6 daysExtract truncation logic to helper and add tests854562
6 daysRemove libpostproc check for ffmpeg version validation (#17384)gnattu
Remove libpostproc check for ffmpeg version validation
7 daysMerge pull request #17304 from nyanmisaka/normalize-invalid-pts-for-trickplayBond-009
Normalize invalid PTS from containers for Trickplay generation
9 daysNormalize invalid PTS from containers for Trickplay generationnyanmisaka
This change does not affect the keyframe only mode. Signed-off-by: nyanmisaka <nst799610810@gmail.com>
9 daysPrevent ffmpeg from hanging extracting subtitles (#17297)Marc Brooks
* Prevent ffmpeg from hanging extracting subtitles Add `RunSubtitleExtractionProcess` to unify the external _ffmpeg_ process handling and error management. Add a `-nostdin` flag that prevents _ffmpeg_ from reading from _stdin_ and blocking on an inherited stdin handle (e.g. when Jellyfin runs as a service under NSSM), which otherwise hangs subtitle extraction forever when _ffmpeg_ blocks on any keyboard-interaction read until the timeout (30 minutes). Close the redirected _stdin_ to ensure immediage EOF. Drain the _stderr_ to a string and log it, to ensure we don't block the _ffmpeg_ process on errors that exceed the pipe length. Pass `-y` to _ffmpeg_ to ensure it overwrites any existing output file without prompting for confirmation. * Address review comments Make sure we always drain stderr. Make sure the timeout also honors the cancellationToken. Make sure when we get cancelled we don't log it as a ffmpeg error.
9 daysMerge pull request #17288 from nyanmisaka/ffmpeg-log-utf8Bond-009
Fix potential garbled text in FFmpeg logs on Windows
9 daysSanitize media attachment and lyric paths against traversalShadowghost
11 daysFix race condition in concurrent subtitle conversionPiotr Niełacny
SubtitleEncoder.ConvertSubtitles parsed subtitles with libse's static Subtitle.Parse, which iterates a statically cached list of shared SubtitleFormat instances. Format parsers keep mutable per-parse state on the instance, so concurrent subtitle requests corrupted each other's output (cues mixed across streams and languages, truncated files) or failed with NullReferenceException when format detection broke down and Subtitle.Parse returned null. Parse through the injected ISubtitleParser instead. SubtitleEditParser instantiates a fresh format parser per call, so requests no longer share state. Its Parse method now returns the libse Subtitle directly (the SubtitleTrackInfo flattening was unused since the SubtitleEdit writer rework) so the writers keep full fidelity such as ASS styling.
2026-07-11Fix incorrect protocol used for subtitle charset detectiontheguymadmax
2026-07-10Fix potential garbled text in FFmpeg logs on Windowsnyanmisaka
Explicitly set StandardErrorEncoding and StandardOutputEncoding to Encoding.UTF8 when invoking the FFmpeg subprocess. This prevents log encoding issues and character corruption on Windows environments that default to non-UTF8 ANSI code pages. This fixes garbled metadata and font names in the FFmpeg logs. Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-07-04Use InvariantCulture when parsing machine-generated datesNils Lehnen
DateTime.TryParse without an IFormatProvider falls back to the current thread culture, so the same string can parse differently (or fail) depending on the server's locale. None of these call sites deal with user-entered text - they parse dates that come from filenames, an HTTP header, ffprobe metadata and values the app itself wrote to the auth database - so InvariantCulture is the correct provider everywhere here. Fixes the S6580 / CA1305 warnings on these call sites. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23Fix SonarCloud warnings854562
2026-06-23Rework bitrate reportingShadowghost
2026-06-22Truncate ISO-639-2 language display names at first delimiter854562
Prevents raw ISO-639-2 values (e.g. "Greek, Modern (1453-)" from cluttering the audio and subtitle display names by truncating them at the first comma or semicolon ("Greek"). Applies to MediaStreamRepository and ProbeResultNormalizer.
2026-06-16Strip null-terminatorBond_009
2026-06-15Add regression testBond_009
2026-06-15Fix type of length argumentsBond_009
2026-06-15Follow native interoperability best practicesBond_009
https://learn.microsoft.com/en-us/dotnet/standard/native-interop/best-practices
2026-06-12Fix duplicate key collisiontheguymadmax
2026-06-05Merge remote-tracking branch 'upstream/master' into ↵Shadowghost
fix-external-sub-invalidation
2026-06-05Merge pull request #16998 from Bond-009/revertCodecPreferenceBond-009
Prefer subtitle extension over codec
2026-06-05Fix subtitle replacement not invalidating cacheShadowghost
2026-06-03Merge pull request #16915 from Shadowghost/batch-attachment-extractBond-009
Extract attachments in one ffmpeg command when dumping
2026-06-01Prefer subtitle extension over codecBond_009
2026-06-01Write subtitles using SubtitleEdit (#16805)Bond-009
* Write subtitles using SubtitleEdit We've been using SubtitleEdit to parse since 2021 https://github.com/jellyfin/jellyfin/pull/4984 I think it's time we start using it to write too * Clean up ConvertSubtitles * Add JsonWriter back
2026-05-31Add support for VobSub subtitle streams (#16552)Neptune
* 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
2026-05-30Add JsonWriter backBond_009
2026-05-30Clean up ConvertSubtitlesBond_009
2026-05-30Write subtitles using SubtitleEditBond_009
We've been using SubtitleEdit to parse since 2021 https://github.com/jellyfin/jellyfin/pull/4984 I think it's time we start using it to write too
2026-05-23Extract attachments in one ffmpeg command when dumpingShadowghost
2026-05-23Merge pull request #16872 from psavarmattas/fix/priority-class-warning-spamBond-009
fix: suppress repeated PriorityClass warning in MediaEncoder
2026-05-21Run tree-wide dotnet formatjakobkukla
2026-05-18fix: suppress repeated PriorityClass warning in MediaEncoderpsmattas
When Jellyfin runs without permission to set process priority (e.g. Docker), StartProcess() logged a warning for every file probed during a library scan. Add a _canSetProcessPriority flag: warn once on first failure, skip all subsequent attempts. Fixes #15287
2026-05-12Safeguard against invalid GUIDs (#16813)Tim Eisele
Safeguard against invalid GUIDs
2026-05-09Merge pull request #16290 from benbenmoss/fix/io-excemption-from-strmBond-009
IOException with STRM HTTP URLs
2026-05-07Add OriginalLanguage as option to PreferredAudioLanguage (#12579)Erik W
* 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>
2026-05-03feat/audiobook_chapters (#16518)Seven Rats
feat/audiobook_chapters
2026-05-02Avoid SSA to ASS conversion and loss of stylesnyanmisaka
Signed-off-by: nyanmisaka <nst799610810@gmail.com>