瀏覽代碼

Backport pull request #11790 from jellyfin/release-10.9.z

Trickplay: kill ffmpeg when task is cancelled

Original-merge: 4a344bebc08303edf888000bf52e64b1a4e8036f

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
NotSaifA 1 年之前
父節點
當前提交
833a1da355
共有 2 個文件被更改,包括 8 次插入4 次删除
  1. 1 0
      CONTRIBUTORS.md
  2. 7 4
      MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

+ 1 - 0
CONTRIBUTORS.md

@@ -183,6 +183,7 @@
  - [btopherjohnson](https://github.com/btopherjohnson)
  - [GeorgeH005](https://github.com/GeorgeH005)
  - [Vedant](https://github.com/viktory36/)
+ - [NotSaifA](https://github.com/NotSaifA)
 
 # Emby Contributors
 

+ 7 - 4
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -943,7 +943,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
                     var timeoutMs = _configurationManager.Configuration.ImageExtractionTimeoutMs;
                     timeoutMs = timeoutMs <= 0 ? DefaultHdrImageExtractionTimeout : timeoutMs;
 
-                    while (isResponsive)
+                    while (isResponsive && !cancellationToken.IsCancellationRequested)
                     {
                         try
                         {
@@ -957,8 +957,6 @@ namespace MediaBrowser.MediaEncoding.Encoder
                             // We don't actually expect the process to be finished in one timeout span, just that one image has been generated.
                         }
 
-                        cancellationToken.ThrowIfCancellationRequested();
-
                         var jpegCount = _fileSystem.GetFilePaths(targetDirectory).Count();
 
                         isResponsive = jpegCount > lastCount;
@@ -967,7 +965,12 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
                     if (!ranToCompletion)
                     {
-                        _logger.LogInformation("Stopping trickplay extraction due to process inactivity.");
+                        if (!isResponsive)
+                        {
+                            _logger.LogInformation("Trickplay process unresponsive.");
+                        }
+
+                        _logger.LogInformation("Stopping trickplay extraction.");
                         StopProcess(processWrapper, 1000);
                     }
                 }