Fix DLNA playback of DVD and BD folders

This commit is contained in:
Shadowghost 2023-02-17 00:26:03 +01:00
parent cd852d43c1
commit 47aa07c342
3 changed files with 22 additions and 5 deletions

View File

@ -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"); var concatFilePath = Path.Join(_serverConfigurationManager.GetTranscodePath(), job.MediaSource.Id + ".concat");
File.Delete(path); if (File.Exists(concatFilePath))
{
_logger.LogInformation("Deleting ffmpeg concat configuration at {Path}", concatFilePath);
_fileSystem.DeleteFile(concatFilePath);
}
} }
} }

View File

@ -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;
} }

View File

@ -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 || !(MediaSource?.VideoType == VideoType.Dvd
PlayMethod == PlayMethod.DirectPlay; || 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.