Преглед изворни кода

Fix DLNA playback of DVD and BD folders

Shadowghost пре 2 година
родитељ
комит
47aa07c342

+ 6 - 2
Jellyfin.Api/Helpers/TranscodingJobHelper.cs

@@ -325,8 +325,12 @@ public class TranscodingJobHelper : IDisposable
             await DeletePartialStreamFiles(job.Path!, job.Type, 0, 1500).ConfigureAwait(false);
             await DeletePartialStreamFiles(job.Path!, job.Type, 0, 1500).ConfigureAwait(false);
             if (job.MediaSource?.VideoType == VideoType.Dvd || job.MediaSource?.VideoType == VideoType.BluRay)
             if (job.MediaSource?.VideoType == VideoType.Dvd || job.MediaSource?.VideoType == VideoType.BluRay)
             {
             {
-                var path = Path.Join(job.Path, job.MediaSource.Id + ".concat");
-                File.Delete(path);
+                var concatFilePath = Path.Join(_serverConfigurationManager.GetTranscodePath(), job.MediaSource.Id + ".concat");
+                if (File.Exists(concatFilePath))
+                {
+                    _logger.LogInformation("Deleting ffmpeg concat configuration at {Path}", concatFilePath);
+                    _fileSystem.DeleteFile(concatFilePath);
+                }
             }
             }
         }
         }
 
 

+ 12 - 1
MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs

@@ -251,12 +251,23 @@ namespace MediaBrowser.MediaEncoding.Probing
                 return null;
                 return null;
             }
             }
 
 
+            // Handle MPEG-1 container
             if (string.Equals(format, "mpegvideo", StringComparison.OrdinalIgnoreCase))
             if (string.Equals(format, "mpegvideo", StringComparison.OrdinalIgnoreCase))
             {
             {
                 return "mpeg";
                 return "mpeg";
             }
             }
 
 
-            format = format.Replace("matroska", "mkv", StringComparison.OrdinalIgnoreCase);
+            // Handle MPEG-2 container
+            if (string.Equals(format, "mpeg", StringComparison.OrdinalIgnoreCase))
+            {
+                return "ts";
+            }
+
+            // Handle matroska container
+            if (string.Equals(format, "matroska", StringComparison.OrdinalIgnoreCase))
+            {
+                return "mkv";
+            }
 
 
             return format;
             return format;
         }
         }

+ 4 - 2
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -108,8 +108,10 @@ namespace MediaBrowser.Model.Dlna
         public string MediaSourceId => MediaSource?.Id;
         public string MediaSourceId => MediaSource?.Id;
 
 
         public bool IsDirectStream =>
         public bool IsDirectStream =>
-            PlayMethod == PlayMethod.DirectStream ||
-            PlayMethod == PlayMethod.DirectPlay;
+            !(MediaSource?.VideoType == VideoType.Dvd
+                || MediaSource?.VideoType == VideoType.BluRay)
+            && (PlayMethod == PlayMethod.DirectStream
+                || PlayMethod == PlayMethod.DirectPlay);
 
 
         /// <summary>
         /// <summary>
         /// Gets the audio stream that will be used.
         /// Gets the audio stream that will be used.