From 84b20afe1fc6cb86d9ff8694b3e4524461dea588 Mon Sep 17 00:00:00 2001 From: dmitrylyzo <56478732+dmitrylyzo@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:09:54 -0400 Subject: Backport pull request #12575 from jellyfin/release-10.9.z Fix subtitle and attachment extraction when input path contains quotes Original-merge: 3c3ebe834462bbb7630ca4fc0c106cc51ca80e50 Merged-by: Bond-009 Backported-by: Joshua M. Boniface --- MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs') diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 9ecbfa9cf..dbb4b823e 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -529,11 +529,11 @@ namespace MediaBrowser.MediaEncoding.Subtitles List subtitleStreams, CancellationToken cancellationToken) { - var inputPath = mediaSource.Path; + var inputPath = _mediaEncoder.GetInputArgument(mediaSource.Path, mediaSource); var outputPaths = new List(); var args = string.Format( CultureInfo.InvariantCulture, - "-i \"{0}\" -copyts", + "-i {0} -copyts", inputPath); foreach (var subtitleStream in subtitleStreams) @@ -704,7 +704,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles var processArgs = string.Format( CultureInfo.InvariantCulture, - "-i \"{0}\" -copyts -map 0:{1} -an -vn -c:s {2} \"{3}\"", + "-i {0} -copyts -map 0:{1} -an -vn -c:s {2} \"{3}\"", inputPath, subtitleStreamIndex, outputCodec, -- cgit v1.2.3 From 7c3c0aa940b29cba64ba241eee3cdcd7f65a9eb6 Mon Sep 17 00:00:00 2001 From: jaina heartles Date: Tue, 23 Jul 2024 15:47:38 -0700 Subject: Use subtitle cache when burning-in subs --- MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 10 ++++++---- MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs | 9 +++++++++ MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | 6 ++++++ 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs') diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 778c32c4b..5cc604a02 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -1652,13 +1652,15 @@ namespace MediaBrowser.Controller.MediaEncoding setPtsParam); } - var mediaPath = state.MediaPath ?? string.Empty; + var subtitlePath = _subtitleEncoder.GetSubtitleFilePath( + state.SubtitleStream, + state.MediaSource, + CancellationToken.None).GetAwaiter().GetResult(); return string.Format( CultureInfo.InvariantCulture, - "subtitles=f='{0}':si={1}{2}{3}{4}{5}", - _mediaEncoder.EscapeSubtitleFilterPath(mediaPath), - state.InternalSubtitleStreamOffset.ToString(CultureInfo.InvariantCulture), + "subtitles=f='{0}'{1}{2}{3}{4}", + _mediaEncoder.EscapeSubtitleFilterPath(subtitlePath), alphaParam, sub2videoParam, fontParam, diff --git a/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs b/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs index 5bf83a9e3..9bf27b3b2 100644 --- a/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs +++ b/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs @@ -44,5 +44,14 @@ namespace MediaBrowser.Controller.MediaEncoding /// The cancellation token. /// System.String. Task GetSubtitleFileCharacterSet(MediaStream subtitleStream, string language, MediaSourceInfo mediaSource, CancellationToken cancellationToken); + + /// + /// Gets the path to a subtitle file. + /// + /// The subtitle stream. + /// The media source. + /// The cancellation token. + /// System.String. + Task GetSubtitleFilePath(MediaStream subtitleStream, MediaSourceInfo mediaSource, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index dbb4b823e..88a1111a0 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -902,6 +902,12 @@ namespace MediaBrowser.MediaEncoding.Subtitles } } + public async Task GetSubtitleFilePath(MediaStream subtitleStream, MediaSourceInfo mediaSource, CancellationToken cancellationToken) + { + var info = await GetReadableFile(mediaSource, subtitleStream, cancellationToken); + return info.Path; + } + /// public void Dispose() { -- cgit v1.2.3 From d2c2dcd53c24938c59061de4f826f59e67d8ff15 Mon Sep 17 00:00:00 2001 From: oxixes <38050447+oxixes@users.noreply.github.com> Date: Wed, 11 Sep 2024 11:43:02 +0200 Subject: Solve CodeQL issue --- MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs') diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 88a1111a0..a731d4785 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -904,7 +904,8 @@ namespace MediaBrowser.MediaEncoding.Subtitles public async Task GetSubtitleFilePath(MediaStream subtitleStream, MediaSourceInfo mediaSource, CancellationToken cancellationToken) { - var info = await GetReadableFile(mediaSource, subtitleStream, cancellationToken); + var info = await GetReadableFile(mediaSource, subtitleStream, cancellationToken) + .ConfigureAwait(false); return info.Path; } -- cgit v1.2.3