fix: discard webm if there is an unsupported codec
This commit is contained in:
parent
2f1b7d0988
commit
39088b5ad2
|
@ -30,6 +30,8 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|||
private const string ArtistReplaceValue = " | ";
|
||||
|
||||
private readonly char[] _nameDelimiters = { '/', '|', ';', '\\' };
|
||||
private readonly string[] _webmVideoCodecs = { "vp8", "vp9" };
|
||||
private readonly string[] _webmAudioCodecs = { "opus", "vorbis" };
|
||||
|
||||
private readonly ILogger _logger;
|
||||
private readonly ILocalizationManager _localization;
|
||||
|
@ -114,7 +116,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|||
|
||||
if (data.Format is not null)
|
||||
{
|
||||
info.Container = NormalizeFormat(data.Format.FormatName);
|
||||
info.Container = NormalizeFormat(data.Format.FormatName, info.MediaStreams);
|
||||
|
||||
if (int.TryParse(data.Format.BitRate, CultureInfo.InvariantCulture, out var value))
|
||||
{
|
||||
|
@ -260,7 +262,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|||
return info;
|
||||
}
|
||||
|
||||
private string NormalizeFormat(string format)
|
||||
private string NormalizeFormat(string format, IReadOnlyList<MediaStream> mediaStreams)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(format))
|
||||
{
|
||||
|
@ -288,9 +290,20 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|||
{
|
||||
splitFormat[i] = "mkv";
|
||||
}
|
||||
|
||||
// Handle WebM
|
||||
else if (string.Equals(splitFormat[i], "webm", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// Limit WebM to supported codecs
|
||||
if (mediaStreams.Any(stream => (stream.Type == MediaStreamType.Video && !_webmVideoCodecs.Contains(stream.Codec, StringComparison.OrdinalIgnoreCase))
|
||||
|| (stream.Type == MediaStreamType.Audio && !_webmAudioCodecs.Contains(stream.Codec, StringComparison.OrdinalIgnoreCase))))
|
||||
{
|
||||
splitFormat[i] = string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return string.Join(',', splitFormat);
|
||||
return string.Join(',', splitFormat.Where(s => !string.IsNullOrEmpty(s)));
|
||||
}
|
||||
|
||||
private int? GetEstimatedAudioBitrate(string codec, int? channels)
|
||||
|
|
Loading…
Reference in New Issue
Block a user