dummy up audio bitrates when needed

This commit is contained in:
Luke Pulverenti 2017-05-10 22:57:48 -04:00
parent 0f198dc818
commit e915ceda1b
2 changed files with 40 additions and 0 deletions

View File

@ -176,6 +176,14 @@ namespace MediaBrowser.MediaEncoding.Probing
info.Video3DFormat = Video3DFormat.FullSideBySide; info.Video3DFormat = Video3DFormat.FullSideBySide;
} }
foreach (var mediaStream in info.MediaStreams)
{
if (mediaStream.Type == MediaStreamType.Audio && !mediaStream.BitRate.HasValue)
{
mediaStream.BitRate = GetEstimatedAudioBitrate(mediaStream.Codec, mediaStream.Channels);
}
}
var videoStreamsBitrate = info.MediaStreams.Where(i => i.Type == MediaStreamType.Video).Select(i => i.BitRate ?? 0).Sum(); var videoStreamsBitrate = info.MediaStreams.Where(i => i.Type == MediaStreamType.Video).Select(i => i.BitRate ?? 0).Sum();
// If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong // If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong
if (videoStreamsBitrate == (info.Bitrate ?? 0)) if (videoStreamsBitrate == (info.Bitrate ?? 0))
@ -187,6 +195,32 @@ namespace MediaBrowser.MediaEncoding.Probing
return info; return info;
} }
private int? GetEstimatedAudioBitrate(string codec, int? channels)
{
if (!channels.HasValue)
{
return null;
}
var channelsValue = channels.Value;
if (string.Equals(codec, "aac", StringComparison.OrdinalIgnoreCase) ||
string.Equals(codec, "mp3", StringComparison.OrdinalIgnoreCase))
{
if (channelsValue <= 2)
{
return 192000;
}
if (channelsValue >= 5)
{
return 320000;
}
}
return null;
}
private void FetchFromItunesInfo(string xml, MediaInfo info) private void FetchFromItunesInfo(string xml, MediaInfo info)
{ {
// Make things simpler and strip out the dtd // Make things simpler and strip out the dtd

View File

@ -61,6 +61,12 @@ namespace MediaBrowser.Model.Drawing
_height = height; _height = height;
} }
public ImageSize(double width, double height)
{
_width = width;
_height = height;
}
private void ParseValue(string value) private void ParseValue(string value)
{ {
if (!string.IsNullOrEmpty(value)) if (!string.IsNullOrEmpty(value))