aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2023-02-18 14:42:35 +0100
committerShadowghost <Ghost_of_Stone@web.de>2023-03-10 15:27:17 +0100
commit0da5255f1291ba510f829d36a3ca1a9eb65590dc (patch)
tree52792d3cdd252c72eed5a5a50fe269b9f1bfd7be /MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
parent47aa07c3424ce0041e0a79eea1ab7f6621485b94 (diff)
Apply review suggestions
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs')
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs75
1 files changed, 40 insertions, 35 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
index 05ea7a86d..d2112e5dc 100644
--- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
@@ -871,7 +871,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
}
/// <inheritdoc />
- public IEnumerable<string> GetPrimaryPlaylistVobFiles(string path, uint? titleNumber)
+ public IReadOnlyList<string> GetPrimaryPlaylistVobFiles(string path, uint? titleNumber)
{
// Eliminate menus and intros by omitting VIDEO_TS.VOB and all subsequent title .vob files ending with _0.VOB
var allVobs = _fileSystem.GetFiles(path, true)
@@ -888,7 +888,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
if (vobs.Count > 0)
{
- return vobs.Select(i => i.FullName);
+ return vobs.Select(i => i.FullName).ToList();
}
_logger.LogWarning("Could not determine .vob files for title {Title} of {Path}.", titleNumber, path);
@@ -898,12 +898,11 @@ namespace MediaBrowser.MediaEncoding.Encoder
var titles = allVobs
.Where(vob => vob.Length >= 900 * 1024 * 1024)
.Select(vob => _fileSystem.GetFileNameWithoutExtension(vob).AsSpan().RightPart('_').ToString())
- .GroupBy(x => x)
- .Select(y => y.First())
+ .Distinct()
.ToList();
// Fall back to first title if no big title is found
- if (titles.FirstOrDefault() == null)
+ if (titles.Count == 0)
{
titles.Add(_fileSystem.GetFileNameWithoutExtension(allVobs[0]).AsSpan().RightPart('_').ToString());
}
@@ -915,7 +914,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
.ToList();
}
- public IEnumerable<string> GetPrimaryPlaylistM2tsFiles(string path)
+ /// <inheritdoc />
+ public IReadOnlyList<string> GetPrimaryPlaylistM2tsFiles(string path)
{
// Get all playable .m2ts files
var validPlaybackFiles = _blurayExaminer.GetDiscInfo(path).Files;
@@ -926,51 +926,56 @@ namespace MediaBrowser.MediaEncoding.Encoder
// Only return playable local .m2ts files
return directoryFiles
.Where(f => validPlaybackFiles.Contains(f.Name, StringComparer.OrdinalIgnoreCase))
- .Select(f => f.FullName);
+ .Select(f => f.FullName)
+ .ToList();
}
+ /// <inheritdoc />
public void GenerateConcatConfig(MediaSourceInfo source, string concatFilePath)
{
// Get all playable files
- var files = new List<string>();
+ IReadOnlyList<string> files;
var videoType = source.VideoType;
if (videoType == VideoType.Dvd)
{
- files = GetPrimaryPlaylistVobFiles(source.Path, null).ToList();
+ files = GetPrimaryPlaylistVobFiles(source.Path, null);
}
else if (videoType == VideoType.BluRay)
{
- files = GetPrimaryPlaylistM2tsFiles(source.Path).ToList();
+ files = GetPrimaryPlaylistM2tsFiles(source.Path);
+ }
+ else
+ {
+ return;
}
- // Generate concat configuration entries for each file
- var lines = new List<string>();
- foreach (var path in files)
+ // Generate concat configuration entries for each file and write to file
+ using (StreamWriter sw = new StreamWriter(concatFilePath))
{
- var mediaInfoResult = GetMediaInfo(
- new MediaInfoRequest
- {
- MediaType = DlnaProfileType.Video,
- MediaSource = new MediaSourceInfo
+ foreach (var path in files)
+ {
+ var mediaInfoResult = GetMediaInfo(
+ new MediaInfoRequest
{
- Path = path,
- Protocol = MediaProtocol.File,
- VideoType = videoType
- }
- },
- CancellationToken.None).GetAwaiter().GetResult();
-
- var duration = TimeSpan.FromTicks(mediaInfoResult.RunTimeTicks.Value).TotalSeconds;
-
- // Add file path stanza to concat configuration
- lines.Add("file " + "'" + path + "'");
-
- // Add duration stanza to concat configuration
- lines.Add("duration " + duration);
+ MediaType = DlnaProfileType.Video,
+ MediaSource = new MediaSourceInfo
+ {
+ Path = path,
+ Protocol = MediaProtocol.File,
+ VideoType = videoType
+ }
+ },
+ CancellationToken.None).GetAwaiter().GetResult();
+
+ var duration = TimeSpan.FromTicks(mediaInfoResult.RunTimeTicks.Value).TotalSeconds;
+
+ // Add file path stanza to concat configuration
+ sw.WriteLine("file '{0}'", path);
+
+ // Add duration stanza to concat configuration
+ sw.WriteLine("duration {0}", duration);
+ }
}
-
- // Write concat configuration
- File.WriteAllLines(concatFilePath, lines);
}
public bool CanExtractSubtitles(string codec)