mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-16 02:18:54 -07:00
StreamingHelpers.GetOutputFileExtension should never return null (#10387)
This commit is contained in:
commit
456d9dc0a6
@ -421,13 +421,12 @@ public static class StreamingHelpers
|
|||||||
/// <param name="state">The state.</param>
|
/// <param name="state">The state.</param>
|
||||||
/// <param name="mediaSource">The mediaSource.</param>
|
/// <param name="mediaSource">The mediaSource.</param>
|
||||||
/// <returns>System.String.</returns>
|
/// <returns>System.String.</returns>
|
||||||
private static string? GetOutputFileExtension(StreamState state, MediaSourceInfo? mediaSource)
|
private static string GetOutputFileExtension(StreamState state, MediaSourceInfo? mediaSource)
|
||||||
{
|
{
|
||||||
var ext = Path.GetExtension(state.RequestedUrl.AsSpan());
|
var ext = Path.GetExtension(state.RequestedUrl);
|
||||||
|
if (!string.IsNullOrEmpty(ext))
|
||||||
if (ext.IsEmpty)
|
|
||||||
{
|
{
|
||||||
return null;
|
return ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to infer based on the desired video codec
|
// Try to infer based on the desired video codec
|
||||||
@ -463,10 +462,9 @@ public static class StreamingHelpers
|
|||||||
return ".asf";
|
return ".asf";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Try to infer based on the desired audio codec
|
|
||||||
if (!state.IsVideoRequest)
|
|
||||||
{
|
{
|
||||||
|
// Try to infer based on the desired audio codec
|
||||||
var audioCodec = state.Request.AudioCodec;
|
var audioCodec = state.Request.AudioCodec;
|
||||||
|
|
||||||
if (string.Equals("aac", audioCodec, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals("aac", audioCodec, StringComparison.OrdinalIgnoreCase))
|
||||||
@ -497,7 +495,7 @@ public static class StreamingHelpers
|
|||||||
return '.' + (idx == -1 ? mediaSource.Container : mediaSource.Container[..idx]).Trim();
|
return '.' + (idx == -1 ? mediaSource.Container : mediaSource.Container[..idx]).Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
throw new InvalidOperationException("Failed to find an appropriate file extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -509,12 +507,12 @@ public static class StreamingHelpers
|
|||||||
/// <param name="deviceId">The device id.</param>
|
/// <param name="deviceId">The device id.</param>
|
||||||
/// <param name="playSessionId">The play session id.</param>
|
/// <param name="playSessionId">The play session id.</param>
|
||||||
/// <returns>The complete file path, including the folder, for the transcoding file.</returns>
|
/// <returns>The complete file path, including the folder, for the transcoding file.</returns>
|
||||||
private static string GetOutputFilePath(StreamState state, string? outputFileExtension, IServerConfigurationManager serverConfigurationManager, string? deviceId, string? playSessionId)
|
private static string GetOutputFilePath(StreamState state, string outputFileExtension, IServerConfigurationManager serverConfigurationManager, string? deviceId, string? playSessionId)
|
||||||
{
|
{
|
||||||
var data = $"{state.MediaPath}-{state.UserAgent}-{deviceId!}-{playSessionId!}";
|
var data = $"{state.MediaPath}-{state.UserAgent}-{deviceId!}-{playSessionId!}";
|
||||||
|
|
||||||
var filename = data.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
var filename = data.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
||||||
var ext = outputFileExtension?.ToLowerInvariant();
|
var ext = outputFileExtension.ToLowerInvariant();
|
||||||
var folder = serverConfigurationManager.GetTranscodePath();
|
var folder = serverConfigurationManager.GetTranscodePath();
|
||||||
|
|
||||||
return Path.Combine(folder, filename + ext);
|
return Path.Combine(folder, filename + ext);
|
||||||
|
Loading…
Reference in New Issue
Block a user