|
@@ -170,8 +170,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
VideoType = item.VideoType,
|
|
|
MediaType = DlnaProfileType.Video,
|
|
|
InputPath = item.Path,
|
|
|
- Protocol = protocol,
|
|
|
- ExtractKeyFrameInterval = true
|
|
|
+ Protocol = protocol
|
|
|
|
|
|
}, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
@@ -298,52 +297,54 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
{
|
|
|
var video = (Video)item;
|
|
|
|
|
|
- int? currentHeight = null;
|
|
|
- int? currentWidth = null;
|
|
|
- int? currentBitRate = null;
|
|
|
-
|
|
|
- var videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
|
|
|
+ video.PlayableStreamFileNames = blurayInfo.Files.ToList();
|
|
|
|
|
|
- // Grab the values that ffprobe recorded
|
|
|
- if (videoStream != null)
|
|
|
+ // 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)
|
|
|
{
|
|
|
- currentBitRate = videoStream.BitRate;
|
|
|
- currentWidth = videoStream.Width;
|
|
|
- currentHeight = videoStream.Height;
|
|
|
- }
|
|
|
+ int? currentHeight = null;
|
|
|
+ int? currentWidth = null;
|
|
|
+ int? currentBitRate = null;
|
|
|
|
|
|
- // Fill video properties from the BDInfo result
|
|
|
- mediaStreams.Clear();
|
|
|
- mediaStreams.AddRange(blurayInfo.MediaStreams);
|
|
|
+ var videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
|
|
|
|
|
|
- video.MainFeaturePlaylistName = blurayInfo.PlaylistName;
|
|
|
-
|
|
|
- if (blurayInfo.RunTimeTicks.HasValue && blurayInfo.RunTimeTicks.Value > 0)
|
|
|
- {
|
|
|
- video.RunTimeTicks = blurayInfo.RunTimeTicks;
|
|
|
- }
|
|
|
+ // Grab the values that ffprobe recorded
|
|
|
+ if (videoStream != null)
|
|
|
+ {
|
|
|
+ currentBitRate = videoStream.BitRate;
|
|
|
+ currentWidth = videoStream.Width;
|
|
|
+ currentHeight = videoStream.Height;
|
|
|
+ }
|
|
|
|
|
|
- video.PlayableStreamFileNames = blurayInfo.Files.ToList();
|
|
|
+ // Fill video properties from the BDInfo result
|
|
|
+ mediaStreams.Clear();
|
|
|
+ mediaStreams.AddRange(blurayInfo.MediaStreams);
|
|
|
|
|
|
- if (blurayInfo.Chapters != null)
|
|
|
- {
|
|
|
- chapters.Clear();
|
|
|
+ if (blurayInfo.RunTimeTicks.HasValue && blurayInfo.RunTimeTicks.Value > 0)
|
|
|
+ {
|
|
|
+ video.RunTimeTicks = blurayInfo.RunTimeTicks;
|
|
|
+ }
|
|
|
|
|
|
- chapters.AddRange(blurayInfo.Chapters.Select(c => new ChapterInfo
|
|
|
+ if (blurayInfo.Chapters != null)
|
|
|
{
|
|
|
- StartPositionTicks = TimeSpan.FromSeconds(c).Ticks
|
|
|
+ chapters.Clear();
|
|
|
|
|
|
- }));
|
|
|
- }
|
|
|
+ chapters.AddRange(blurayInfo.Chapters.Select(c => new ChapterInfo
|
|
|
+ {
|
|
|
+ StartPositionTicks = TimeSpan.FromSeconds(c).Ticks
|
|
|
|
|
|
- videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
|
|
|
+ }));
|
|
|
+ }
|
|
|
|
|
|
- // Use the ffprobe values if these are empty
|
|
|
- if (videoStream != null)
|
|
|
- {
|
|
|
- videoStream.BitRate = IsEmpty(videoStream.BitRate) ? currentBitRate : videoStream.BitRate;
|
|
|
- videoStream.Width = IsEmpty(videoStream.Width) ? currentWidth : videoStream.Width;
|
|
|
- videoStream.Height = IsEmpty(videoStream.Height) ? currentHeight : videoStream.Height;
|
|
|
+ videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
|
|
|
+
|
|
|
+ // Use the ffprobe values if these are empty
|
|
|
+ if (videoStream != null)
|
|
|
+ {
|
|
|
+ videoStream.BitRate = IsEmpty(videoStream.BitRate) ? currentBitRate : videoStream.BitRate;
|
|
|
+ videoStream.Width = IsEmpty(videoStream.Width) ? currentWidth : videoStream.Width;
|
|
|
+ videoStream.Height = IsEmpty(videoStream.Height) ? currentHeight : videoStream.Height;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|