Browse Source

update BdInfo probing

Luke Pulverenti 9 years ago
parent
commit
f6491c69fd

+ 0 - 2
MediaBrowser.Controller/Entities/Video.cs

@@ -304,8 +304,6 @@ namespace MediaBrowser.Controller.Entities
             return base.IsValidFromResolver(newItem);
         }
 
-        public string MainFeaturePlaylistName { get; set; }
-
         /// <summary>
         /// Gets the playable stream files.
         /// </summary>

+ 38 - 37
MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs

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