mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-21 01:24:44 +01:00
Merge branch 'jellyfin:master' into feature/EFUserData
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
<PropertyGroup>
|
||||
<Authors>Jellyfin Contributors</Authors>
|
||||
<PackageId>Jellyfin.Controller</PackageId>
|
||||
<VersionPrefix>10.10.0</VersionPrefix>
|
||||
<VersionPrefix>10.11.0</VersionPrefix>
|
||||
<RepositoryUrl>https://github.com/jellyfin/jellyfin</RepositoryUrl>
|
||||
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -629,49 +629,21 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
/// <returns>Codec string.</returns>
|
||||
public string InferAudioCodec(string container)
|
||||
{
|
||||
var ext = "." + (container ?? string.Empty);
|
||||
|
||||
if (string.Equals(ext, ".mp3", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "mp3";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".aac", StringComparison.OrdinalIgnoreCase))
|
||||
if (string.IsNullOrWhiteSpace(container))
|
||||
{
|
||||
// this may not work, but if the client is that broken we can not do anything better
|
||||
return "aac";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".wma", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "wma";
|
||||
}
|
||||
var inferredCodec = container.ToLowerInvariant();
|
||||
|
||||
if (string.Equals(ext, ".ogg", StringComparison.OrdinalIgnoreCase))
|
||||
return inferredCodec switch
|
||||
{
|
||||
return "vorbis";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".oga", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "vorbis";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".ogv", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "vorbis";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".webm", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "vorbis";
|
||||
}
|
||||
|
||||
if (string.Equals(ext, ".webma", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "vorbis";
|
||||
}
|
||||
|
||||
return "copy";
|
||||
"ogg" or "oga" or "ogv" or "webm" or "webma" => "opus",
|
||||
"m4a" or "m4b" or "mp4" or "mov" or "mkv" or "mka" => "aac",
|
||||
"ts" or "avi" or "flv" or "f4v" or "swf" => "mp3",
|
||||
_ => inferredCodec
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2696,6 +2668,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
public string GetFastSeekCommandLineParameter(EncodingJobInfo state, EncodingOptions options, string segmentContainer)
|
||||
{
|
||||
var time = state.BaseRequest.StartTimeTicks ?? 0;
|
||||
var maxTime = state.RunTimeTicks ?? 0;
|
||||
var seekParam = string.Empty;
|
||||
|
||||
if (time > 0)
|
||||
@@ -2706,6 +2679,14 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// This will help subtitle syncing.
|
||||
var isHlsRemuxing = state.IsVideoRequest && state.TranscodingType is TranscodingJobType.Hls && IsCopyCodec(state.OutputVideoCodec);
|
||||
var seekTick = isHlsRemuxing ? time + 5000000L : time;
|
||||
|
||||
// Seeking beyond EOF makes no sense in transcoding. Clamp the seekTick value to
|
||||
// [0, RuntimeTicks - 0.5s], so that the muxer gets packets and avoid error codes.
|
||||
if (maxTime > 0)
|
||||
{
|
||||
seekTick = Math.Clamp(seekTick, 0, Math.Max(maxTime - 5000000L, 0));
|
||||
}
|
||||
|
||||
seekParam += string.Format(CultureInfo.InvariantCulture, "-ss {0}", _mediaEncoder.GetTimeParameter(seekTick));
|
||||
|
||||
if (state.IsVideoRequest)
|
||||
|
||||
@@ -77,7 +77,8 @@ namespace MediaBrowser.Controller.Providers
|
||||
Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Saves the image.
|
||||
/// Saves the image by giving the image path on filesystem.
|
||||
/// This method will remove the image on the source path after saving it to the destination.
|
||||
/// </summary>
|
||||
/// <param name="item">Image to save.</param>
|
||||
/// <param name="source">Source of image.</param>
|
||||
|
||||
Reference in New Issue
Block a user