|
|
|
@ -52,8 +52,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(data.format.bit_rate))
|
|
|
|
|
{
|
|
|
|
|
int value;
|
|
|
|
|
if (int.TryParse(data.format.bit_rate, NumberStyles.Any, _usCulture, out value))
|
|
|
|
|
if (int.TryParse(data.format.bit_rate, NumberStyles.Any, _usCulture, out var value))
|
|
|
|
|
{
|
|
|
|
|
info.Bitrate = value;
|
|
|
|
|
}
|
|
|
|
@ -579,8 +578,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(streamInfo.sample_rate))
|
|
|
|
|
{
|
|
|
|
|
int value;
|
|
|
|
|
if (int.TryParse(streamInfo.sample_rate, NumberStyles.Any, _usCulture, out value))
|
|
|
|
|
if (int.TryParse(streamInfo.sample_rate, NumberStyles.Any, _usCulture, out var value))
|
|
|
|
|
{
|
|
|
|
|
stream.SampleRate = value;
|
|
|
|
|
}
|
|
|
|
@ -669,8 +667,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(streamInfo.bit_rate))
|
|
|
|
|
{
|
|
|
|
|
int value;
|
|
|
|
|
if (int.TryParse(streamInfo.bit_rate, NumberStyles.Any, _usCulture, out value))
|
|
|
|
|
if (int.TryParse(streamInfo.bit_rate, NumberStyles.Any, _usCulture, out var value))
|
|
|
|
|
{
|
|
|
|
|
bitrate = value;
|
|
|
|
|
}
|
|
|
|
@ -679,8 +676,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
if (bitrate == 0 && formatInfo != null && !string.IsNullOrEmpty(formatInfo.bit_rate) && stream.Type == MediaStreamType.Video)
|
|
|
|
|
{
|
|
|
|
|
// If the stream info doesn't have a bitrate get the value from the media format info
|
|
|
|
|
int value;
|
|
|
|
|
if (int.TryParse(formatInfo.bit_rate, NumberStyles.Any, _usCulture, out value))
|
|
|
|
|
if (int.TryParse(formatInfo.bit_rate, NumberStyles.Any, _usCulture, out var value))
|
|
|
|
|
{
|
|
|
|
|
bitrate = value;
|
|
|
|
|
}
|
|
|
|
@ -732,9 +728,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string val;
|
|
|
|
|
|
|
|
|
|
tags.TryGetValue(key, out val);
|
|
|
|
|
tags.TryGetValue(key, out var val);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -752,13 +746,10 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
{
|
|
|
|
|
var original = info.display_aspect_ratio;
|
|
|
|
|
|
|
|
|
|
int height;
|
|
|
|
|
int width;
|
|
|
|
|
|
|
|
|
|
var parts = (original ?? string.Empty).Split(':');
|
|
|
|
|
if (!(parts.Length == 2 &&
|
|
|
|
|
int.TryParse(parts[0], NumberStyles.Any, _usCulture, out width) &&
|
|
|
|
|
int.TryParse(parts[1], NumberStyles.Any, _usCulture, out height) &&
|
|
|
|
|
int.TryParse(parts[0], NumberStyles.Any, _usCulture, out var width) &&
|
|
|
|
|
int.TryParse(parts[1], NumberStyles.Any, _usCulture, out var height) &&
|
|
|
|
|
width > 0 &&
|
|
|
|
|
height > 0))
|
|
|
|
|
{
|
|
|
|
@ -1187,9 +1178,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
{
|
|
|
|
|
disc = disc.Split('/')[0];
|
|
|
|
|
|
|
|
|
|
int num;
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(disc, out num))
|
|
|
|
|
if (int.TryParse(disc, out var num))
|
|
|
|
|
{
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
@ -1204,8 +1193,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
|
|
|
|
|
if (chapter.tags != null)
|
|
|
|
|
{
|
|
|
|
|
string name;
|
|
|
|
|
if (chapter.tags.TryGetValue("title", out name))
|
|
|
|
|
if (chapter.tags.TryGetValue("title", out var name))
|
|
|
|
|
{
|
|
|
|
|
info.Name = name;
|
|
|
|
|
}
|
|
|
|
@ -1213,9 +1201,8 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
|
|
|
|
|
// Limit accuracy to milliseconds to match xml saving
|
|
|
|
|
var secondsString = chapter.start_time;
|
|
|
|
|
double seconds;
|
|
|
|
|
|
|
|
|
|
if (double.TryParse(secondsString, NumberStyles.Any, CultureInfo.InvariantCulture, out seconds))
|
|
|
|
|
if (double.TryParse(secondsString, NumberStyles.Any, CultureInfo.InvariantCulture, out var seconds))
|
|
|
|
|
{
|
|
|
|
|
var ms = Math.Round(TimeSpan.FromSeconds(seconds).TotalMilliseconds);
|
|
|
|
|
info.StartPositionTicks = TimeSpan.FromMilliseconds(ms).Ticks;
|
|
|
|
@ -1269,9 +1256,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
var year = FFProbeHelpers.GetDictionaryValue(data.format.tags, "WM/OriginalReleaseTime");
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(year))
|
|
|
|
|
{
|
|
|
|
|
int val;
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(year, NumberStyles.Integer, _usCulture, out val))
|
|
|
|
|
if (int.TryParse(year, NumberStyles.Integer, _usCulture, out var val))
|
|
|
|
|
{
|
|
|
|
|
video.ProductionYear = val;
|
|
|
|
|
}
|
|
|
|
@ -1280,11 +1265,9 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|
|
|
|
var premiereDateString = FFProbeHelpers.GetDictionaryValue(data.format.tags, "WM/MediaOriginalBroadcastDateTime");
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(premiereDateString))
|
|
|
|
|
{
|
|
|
|
|
DateTime val;
|
|
|
|
|
|
|
|
|
|
// Credit to MCEBuddy: https://mcebuddy2x.codeplex.com/
|
|
|
|
|
// DateTime is reported along with timezone info (typically Z i.e. UTC hence assume None)
|
|
|
|
|
if (DateTime.TryParse(year, null, DateTimeStyles.None, out val))
|
|
|
|
|
if (DateTime.TryParse(year, null, DateTimeStyles.None, out var val))
|
|
|
|
|
{
|
|
|
|
|
video.PremiereDate = val.ToUniversalTime();
|
|
|
|
|
}
|
|
|
|
|