update BdInfo probing

This commit is contained in:
Luke Pulverenti 2015-12-22 12:34:39 -05:00
parent d5a4a9424f
commit f6491c69fd
2 changed files with 41 additions and 42 deletions

View File

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

View File

@ -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);
// Grab the values that ffprobe recorded
if (videoStream != null)
{
currentBitRate = videoStream.BitRate;
currentWidth = videoStream.Width;
currentHeight = videoStream.Height;
}
// Fill video properties from the BDInfo result
mediaStreams.Clear();
mediaStreams.AddRange(blurayInfo.MediaStreams);
video.MainFeaturePlaylistName = blurayInfo.PlaylistName;
if (blurayInfo.RunTimeTicks.HasValue && blurayInfo.RunTimeTicks.Value > 0)
{
video.RunTimeTicks = blurayInfo.RunTimeTicks;
}
video.PlayableStreamFileNames = blurayInfo.Files.ToList();
if (blurayInfo.Chapters != 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)
{
chapters.Clear();
int? currentHeight = null;
int? currentWidth = null;
int? currentBitRate = null;
chapters.AddRange(blurayInfo.Chapters.Select(c => new ChapterInfo
var videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
// Grab the values that ffprobe recorded
if (videoStream != null)
{
StartPositionTicks = TimeSpan.FromSeconds(c).Ticks
currentBitRate = videoStream.BitRate;
currentWidth = videoStream.Width;
currentHeight = videoStream.Height;
}
}));
}
// Fill video properties from the BDInfo result
mediaStreams.Clear();
mediaStreams.AddRange(blurayInfo.MediaStreams);
videoStream = mediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Video);
if (blurayInfo.RunTimeTicks.HasValue && blurayInfo.RunTimeTicks.Value > 0)
{
video.RunTimeTicks = blurayInfo.RunTimeTicks;
}
// 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;
if (blurayInfo.Chapters != null)
{
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;
}
}
}