mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-01 04:34:26 -04:00
Backport pull request #9485 from jellyfin/release-10.8.z
Fix the bitrate scale factor for h264-to-hevc transcoding Original-merge: 173a963dbf6072897b1086abf3f378ddfa7fda5a Merged-by: Nyanmisaka <nst799610810@gmail.com> Backported-by: crobibero <cody@robibe.ro>
This commit is contained in:
parent
21dcf775be
commit
21dc3fa042
@ -2116,14 +2116,20 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
|
|
||||||
private static double GetVideoBitrateScaleFactor(string codec)
|
private static double GetVideoBitrateScaleFactor(string codec)
|
||||||
{
|
{
|
||||||
|
// hevc & vp9 - 40% more efficient than h.264
|
||||||
if (string.Equals(codec, "h265", StringComparison.OrdinalIgnoreCase)
|
if (string.Equals(codec, "h265", StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(codec, "hevc", StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(codec, "hevc", StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(codec, "vp9", StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(codec, "vp9", StringComparison.OrdinalIgnoreCase))
|
||||||
|| string.Equals(codec, "av1", StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
return .6;
|
return .6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// av1 - 50% more efficient than h.264
|
||||||
|
if (string.Equals(codec, "av1", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return .5;
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2131,7 +2137,9 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
{
|
{
|
||||||
var inputScaleFactor = GetVideoBitrateScaleFactor(inputVideoCodec);
|
var inputScaleFactor = GetVideoBitrateScaleFactor(inputVideoCodec);
|
||||||
var outputScaleFactor = GetVideoBitrateScaleFactor(outputVideoCodec);
|
var outputScaleFactor = GetVideoBitrateScaleFactor(outputVideoCodec);
|
||||||
var scaleFactor = outputScaleFactor / inputScaleFactor;
|
|
||||||
|
// Don't scale the real bitrate lower than the requested bitrate
|
||||||
|
var scaleFactor = Math.Min(outputScaleFactor / inputScaleFactor, 1);
|
||||||
|
|
||||||
if (bitrate <= 500000)
|
if (bitrate <= 500000)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user