Check the "name" tag, not just "title"

This commit is contained in:
Richard Webster
2026-07-22 18:00:18 +01:00
parent fc43f151a2
commit 474ae50c36
3 changed files with 25 additions and 11 deletions
@@ -757,11 +757,17 @@ namespace MediaBrowser.MediaEncoding.Probing
if (string.IsNullOrEmpty(stream.Title))
{
// mp4 missing track title workaround: fall back to handler_name if populated and not the default "SoundHandler"
string handlerName = GetDictionaryValue(streamInfo.Tags, "handler_name");
if (!string.IsNullOrEmpty(handlerName) && !string.Equals(handlerName, "SoundHandler", StringComparison.OrdinalIgnoreCase))
// mp4 missing track title workaround: some muxers store the track title in a "name" tag
stream.Title = GetDictionaryValue(streamInfo.Tags, "name");
if (string.IsNullOrEmpty(stream.Title))
{
stream.Title = handlerName;
// fall back to handler_name if populated and not the default "SoundHandler"
string handlerName = GetDictionaryValue(streamInfo.Tags, "handler_name");
if (!string.IsNullOrEmpty(handlerName) && !string.Equals(handlerName, "SoundHandler", StringComparison.OrdinalIgnoreCase))
{
stream.Title = handlerName;
}
}
}
}
@@ -781,11 +787,17 @@ namespace MediaBrowser.MediaEncoding.Probing
if (string.IsNullOrEmpty(stream.Title))
{
// mp4 missing track title workaround: fall back to handler_name if populated and not the default "SubtitleHandler"
string handlerName = GetDictionaryValue(streamInfo.Tags, "handler_name");
if (!string.IsNullOrEmpty(handlerName) && !string.Equals(handlerName, "SubtitleHandler", StringComparison.OrdinalIgnoreCase))
// mp4 missing track title workaround: some muxers store the track title in a "name" tag
stream.Title = GetDictionaryValue(streamInfo.Tags, "name");
if (string.IsNullOrEmpty(stream.Title))
{
stream.Title = handlerName;
// fall back to handler_name if populated and not the default "SubtitleHandler"
string handlerName = GetDictionaryValue(streamInfo.Tags, "handler_name");
if (!string.IsNullOrEmpty(handlerName) && !string.Equals(handlerName, "SubtitleHandler", StringComparison.OrdinalIgnoreCase))
{
stream.Title = handlerName;
}
}
}
}
@@ -219,7 +219,7 @@ namespace Jellyfin.MediaEncoding.Tests.Probing
Assert.Equal("eng", res.MediaStreams[4].Language);
Assert.Equal(MediaStreamType.Subtitle, res.MediaStreams[4].Type);
Assert.Equal("mov_text", res.MediaStreams[4].Codec);
Assert.Null(res.MediaStreams[4].Title);
Assert.Equal("SDH", res.MediaStreams[4].Title);
Assert.True(res.MediaStreams[4].IsHearingImpaired);
Assert.Equal("eng", res.MediaStreams[5].Language);
@@ -95,7 +95,8 @@
"tags": {
"creation_time": "2021-09-13T22:42:42.000000Z",
"language": "eng",
"handler_name": "Surround 6.1",
"handler_name": "SoundHandler",
"name": "Surround 6.1",
"vendor_id": "[0][0][0][0]"
}
},
@@ -215,7 +216,8 @@
"tags": {
"creation_time": "2021-09-13T22:42:42.000000Z",
"language": "eng",
"handler_name": "SubtitleHandler"
"handler_name": "SubtitleHandler",
"name": "SDH"
}
},
{