diff --git a/Jellyfin.Api/Controllers/TrickplayController.cs b/Jellyfin.Api/Controllers/TrickplayController.cs index 389eb43ffc..46289f1701 100644 --- a/Jellyfin.Api/Controllers/TrickplayController.cs +++ b/Jellyfin.Api/Controllers/TrickplayController.cs @@ -128,6 +128,7 @@ public class TrickplayController : BaseJellyfinApiController var layout = tilesInfo.TileWidth.ToString(CultureInfo.InvariantCulture) + "x" + tilesInfo.TileHeight.ToString(CultureInfo.InvariantCulture); var tilesPerGrid = tilesInfo.TileWidth * tilesInfo.TileHeight; var tileDuration = (decimal)tilesInfo.Interval / 1000; + var infDuration = tileDuration * tilesPerGrid; var tileGridCount = (int)Math.Ceiling((decimal)tilesInfo.TileCount / tilesPerGrid); builder.AppendLine("#EXTM3U"); @@ -144,9 +145,9 @@ public class TrickplayController : BaseJellyfinApiController if (i == tileGridCount - 1) { tilesPerGrid = tilesInfo.TileCount - (i * tilesPerGrid); + infDuration = tileDuration * tilesPerGrid; } - var infDuration = tileDuration * tilesPerGrid; var url = string.Format( CultureInfo.InvariantCulture, urlFormat, diff --git a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs index 4b45148974..cb916dfdbf 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs @@ -127,7 +127,7 @@ namespace MediaBrowser.Providers.Trickplay // Create tiles var tilesTempDir = Path.Combine(imgTempDir, Guid.NewGuid().ToString("N")); - var tilesInfo = CreateTiles(images, width, interval, tileWidth, tileHeight, tilesTempDir, outputDir); + var tilesInfo = CreateTiles(images, width, interval, tileWidth, tileHeight, 100/* todo _config.JpegQuality*/, tilesTempDir, outputDir); // Save tiles info try @@ -166,7 +166,7 @@ namespace MediaBrowser.Providers.Trickplay } } - private TrickplayTilesInfo CreateTiles(List images, int width, int interval, int tileWidth, int tileHeight, string workDir, string outputDir) + private TrickplayTilesInfo CreateTiles(List images, int width, int interval, int tileWidth, int tileHeight, int quality, string workDir, string outputDir) { if (images.Count == 0) { @@ -244,7 +244,7 @@ namespace MediaBrowser.Providers.Trickplay var tileGridPath = Path.Combine(workDir, $"{imgNo}.jpg"); using (var stream = File.OpenWrite(tileGridPath)) { - tileGrid.Encode(stream, SKEncodedImageFormat.Jpeg, 100/* todo _config.JpegQuality*/); + tileGrid.Encode(stream, SKEncodedImageFormat.Jpeg, quality); } var bitrate = (int)Math.Ceiling((decimal)new FileInfo(tileGridPath).Length * 8 / tilesInfo.TileWidth / tilesInfo.TileHeight / (tilesInfo.Interval / 1000)); diff --git a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs index 2b3879ca31..e4bd9e3c20 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs @@ -107,14 +107,12 @@ namespace MediaBrowser.Providers.Trickplay if (options.IsAutomated && !enableDuringScan.GetValueOrDefault(false)) { - _logger.LogDebug("exit refresh: automated - {0} enable scan - {1}", options.IsAutomated, enableDuringScan.GetValueOrDefault(false)); return ItemUpdateType.None; } // TODO: this is always blocking for metadata collection, make non-blocking option if (true) { - _logger.LogDebug("called refresh"); await _trickplayManager.RefreshTrickplayData(video, replace, cancellationToken).ConfigureAwait(false); }