diff options
Diffstat (limited to 'MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs')
| -rw-r--r-- | MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs | 78 |
1 files changed, 29 insertions, 49 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index 06267f33a..143ec8fdd 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -80,35 +80,45 @@ namespace MediaBrowser.Providers.MediaInfo try { - if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay)) - { - var inputPath = isoMount != null ? isoMount.MountedPath : item.Path; + List<string> streamFileNames = null; - blurayDiscInfo = GetBDInfo(inputPath); + if (item.VideoType == VideoType.Iso) + { + item.IsoType = DetermineIsoType(isoMount); } - OnPreFetch(item, isoMount, blurayDiscInfo); - - // If we didn't find any satisfying the min length, just take them all if (item.VideoType == VideoType.Dvd || (item.IsoType.HasValue && item.IsoType == IsoType.Dvd)) { - if (item.PlayableStreamFileNames.Count == 0) + streamFileNames = FetchFromDvdLib(item, isoMount); + + if (streamFileNames.Count == 0) { _logger.Error("No playable vobs found in dvd structure, skipping ffprobe."); return ItemUpdateType.MetadataImport; } } - if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay)) + else if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay)) { - if (item.PlayableStreamFileNames.Count == 0) + var inputPath = isoMount != null ? isoMount.MountedPath : item.Path; + + blurayDiscInfo = GetBDInfo(inputPath); + + streamFileNames = blurayDiscInfo.Files; + + if (streamFileNames.Count == 0) { _logger.Error("No playable vobs found in bluray structure, skipping ffprobe."); return ItemUpdateType.MetadataImport; } } - var result = await GetMediaInfo(item, isoMount, cancellationToken).ConfigureAwait(false); + if (streamFileNames == null) + { + streamFileNames = new List<string>(); + } + + var result = await GetMediaInfo(item, isoMount, streamFileNames, cancellationToken).ConfigureAwait(false); cancellationToken.ThrowIfCancellationRequested(); @@ -126,10 +136,9 @@ namespace MediaBrowser.Providers.MediaInfo return ItemUpdateType.MetadataImport; } - private const string SchemaVersion = "6"; - - private async Task<Model.MediaInfo.MediaInfo> GetMediaInfo(Video item, + private Task<Model.MediaInfo.MediaInfo> GetMediaInfo(Video item, IIsoMount isoMount, + List<string> streamFileNames, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); @@ -138,9 +147,9 @@ namespace MediaBrowser.Providers.MediaInfo ? MediaProtocol.Http : MediaProtocol.File; - var result = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest + return _mediaEncoder.GetMediaInfo(new MediaInfoRequest { - PlayableStreamFileNames = item.PlayableStreamFileNames, + PlayableStreamFileNames = streamFileNames, MountedIso = isoMount, ExtractChapters = true, VideoType = item.VideoType, @@ -148,12 +157,7 @@ namespace MediaBrowser.Providers.MediaInfo InputPath = item.Path, Protocol = protocol - }, cancellationToken).ConfigureAwait(false); - - //Directory.CreateDirectory(_fileSystem.GetDirectoryName(cachePath)); - //_json.SerializeToFile(result, cachePath); - - return result; + }, cancellationToken); } protected async Task Fetch(Video video, @@ -266,7 +270,7 @@ namespace MediaBrowser.Providers.MediaInfo { var video = (Video)item; - video.PlayableStreamFileNames = blurayInfo.Files.ToList(); + //video.PlayableStreamFileNames = blurayInfo.Files.ToList(); // Use BD Info if it has multiple m2ts. Otherwise, treat it like a video file and rely more on ffprobe output if (blurayInfo.Files.Count > 1) @@ -559,31 +563,7 @@ namespace MediaBrowser.Providers.MediaInfo } } - /// <summary> - /// Called when [pre fetch]. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="mount">The mount.</param> - /// <param name="blurayDiscInfo">The bluray disc information.</param> - private void OnPreFetch(Video item, IIsoMount mount, BlurayDiscInfo blurayDiscInfo) - { - if (item.VideoType == VideoType.Iso) - { - item.IsoType = DetermineIsoType(mount); - } - - if (item.VideoType == VideoType.Dvd || (item.IsoType.HasValue && item.IsoType == IsoType.Dvd)) - { - FetchFromDvdLib(item, mount); - } - - if (blurayDiscInfo != null) - { - item.PlayableStreamFileNames = blurayDiscInfo.Files.ToList(); - } - } - - private void FetchFromDvdLib(Video item, IIsoMount mount) + private List<string> FetchFromDvdLib(Video item, IIsoMount mount) { var path = mount == null ? item.Path : mount.MountedPath; var dvd = new Dvd(path, _fileSystem); @@ -598,7 +578,7 @@ namespace MediaBrowser.Providers.MediaInfo item.RunTimeTicks = GetRuntime(primaryTitle); } - item.PlayableStreamFileNames = GetPrimaryPlaylistVobFiles(item, mount, titleNumber) + return GetPrimaryPlaylistVobFiles(item, mount, titleNumber) .Select(Path.GetFileName) .ToList(); } |
