mirror of
https://github.com/Radarr/Radarr.git
synced 2025-04-23 22:17:15 -04:00
Fixed: Format bitrate for primary streams in media info
Co-authored-by: Mark McDowall <markus.mcd5@gmail.com>
This commit is contained in:
parent
1edcbee5e1
commit
528b93dabe
3 changed files with 52 additions and 7 deletions
|
@ -2,6 +2,7 @@ import React from 'react';
|
|||
import DescriptionList from 'Components/DescriptionList/DescriptionList';
|
||||
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
|
||||
import MediaInfoProps from 'typings/MediaInfo';
|
||||
import formatBitrate from 'Utilities/Number/formatBitrate';
|
||||
import getEntries from 'Utilities/Object/getEntries';
|
||||
|
||||
function MediaInfo(props: MediaInfoProps) {
|
||||
|
@ -16,9 +17,19 @@ function MediaInfo(props: MediaInfoProps) {
|
|||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<DescriptionListItem key={key} title={title} data={props[key]} />
|
||||
);
|
||||
if (key === 'audioBitrate' || key === 'videoBitrate') {
|
||||
return (
|
||||
<DescriptionListItem
|
||||
key={key}
|
||||
title={title}
|
||||
data={
|
||||
<span title={value.toString()}>{formatBitrate(value)}</span>
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
return <DescriptionListItem key={key} title={title} data={value} />;
|
||||
})}
|
||||
</DescriptionList>
|
||||
);
|
||||
|
|
19
frontend/src/Utilities/Number/formatBitrate.ts
Normal file
19
frontend/src/Utilities/Number/formatBitrate.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import { filesize } from 'filesize';
|
||||
|
||||
function formatBitrate(input: string | number) {
|
||||
const size = Number(input);
|
||||
|
||||
if (isNaN(size)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const { value, symbol } = filesize(size, {
|
||||
base: 10,
|
||||
round: 1,
|
||||
output: 'object',
|
||||
});
|
||||
|
||||
return `${value} ${symbol}/s`;
|
||||
}
|
||||
|
||||
export default formatBitrate;
|
|
@ -21,8 +21,8 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo
|
|||
private readonly Logger _logger;
|
||||
private readonly List<FFProbePixelFormat> _pixelFormats;
|
||||
|
||||
public const int MINIMUM_MEDIA_INFO_SCHEMA_REVISION = 8;
|
||||
public const int CURRENT_MEDIA_INFO_SCHEMA_REVISION = 13;
|
||||
public const int MINIMUM_MEDIA_INFO_SCHEMA_REVISION = 14;
|
||||
public const int CURRENT_MEDIA_INFO_SCHEMA_REVISION = 14;
|
||||
|
||||
private static readonly string[] ValidHdrColourPrimaries = { "bt2020" };
|
||||
private static readonly string[] HlgTransferFunctions = { "arib-std-b67" };
|
||||
|
@ -80,7 +80,7 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo
|
|||
mediaInfoModel.VideoFormat = primaryVideoStream?.CodecName;
|
||||
mediaInfoModel.VideoCodecID = primaryVideoStream?.CodecTagString;
|
||||
mediaInfoModel.VideoProfile = primaryVideoStream?.Profile;
|
||||
mediaInfoModel.VideoBitrate = primaryVideoStream?.BitRate ?? 0;
|
||||
mediaInfoModel.VideoBitrate = GetBitrate(primaryVideoStream);
|
||||
mediaInfoModel.VideoMultiViewCount = primaryVideoStream?.Tags?.ContainsKey("stereo_mode") ?? false ? 2 : 1;
|
||||
mediaInfoModel.VideoBitDepth = GetPixelFormat(primaryVideoStream?.PixelFormat)?.Components.Min(x => x.BitDepth) ?? 8;
|
||||
mediaInfoModel.VideoColourPrimaries = primaryVideoStream?.ColorPrimaries;
|
||||
|
@ -91,7 +91,7 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo
|
|||
mediaInfoModel.AudioFormat = analysis.PrimaryAudioStream?.CodecName;
|
||||
mediaInfoModel.AudioCodecID = analysis.PrimaryAudioStream?.CodecTagString;
|
||||
mediaInfoModel.AudioProfile = analysis.PrimaryAudioStream?.Profile;
|
||||
mediaInfoModel.AudioBitrate = analysis.PrimaryAudioStream?.BitRate ?? 0;
|
||||
mediaInfoModel.AudioBitrate = GetBitrate(analysis.PrimaryAudioStream);
|
||||
mediaInfoModel.RunTime = GetBestRuntime(analysis.PrimaryAudioStream?.Duration, primaryVideoStream?.Duration, analysis.Format.Duration);
|
||||
mediaInfoModel.AudioStreamCount = analysis.AudioStreams.Count;
|
||||
mediaInfoModel.AudioChannels = analysis.PrimaryAudioStream?.Channels ?? 0;
|
||||
|
@ -161,6 +161,21 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo
|
|||
return video.Value;
|
||||
}
|
||||
|
||||
private static long GetBitrate(MediaStream mediaStream)
|
||||
{
|
||||
if (mediaStream?.BitRate is > 0)
|
||||
{
|
||||
return mediaStream.BitRate;
|
||||
}
|
||||
|
||||
if ((mediaStream?.Tags?.TryGetValue("BPS", out var bitratePerSecond) ?? false) && bitratePerSecond.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
return Convert.ToInt64(bitratePerSecond);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private VideoStream GetPrimaryVideoStream(IMediaAnalysis mediaAnalysis)
|
||||
{
|
||||
if (mediaAnalysis.VideoStreams.Count <= 1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue