aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs
diff options
context:
space:
mode:
authorCody Robibero <cody@robibe.ro>2020-07-31 09:27:31 -0600
committerGitHub <noreply@github.com>2020-07-31 09:27:31 -0600
commitcb31aba5ddea9b961872946ee2d79fdac91de293 (patch)
tree37574f676aa60030935c25cab51e3a275713cc58 /Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs
parent62fa72114cd543d47b2f8904cc55d90a30ac02e6 (diff)
parentc97372a1334bb18a6cd2b5a3abb0c385a30329ac (diff)
Merge pull request #3691 from crobibero/api-video
move VideoService.cs to Jellyfin.Api
Diffstat (limited to 'Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs')
-rw-r--r--Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs17
1 files changed, 8 insertions, 9 deletions
diff --git a/Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs b/Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs
index 636f47f5f..a463783e0 100644
--- a/Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs
+++ b/Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs
@@ -3,9 +3,9 @@ using System.IO;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Jellyfin.Api.Models.PlaybackDtos;
using Jellyfin.Api.Models.StreamingDtos;
using MediaBrowser.Controller.MediaEncoding;
-using MediaBrowser.Model.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Net.Http.Headers;
@@ -71,8 +71,7 @@ namespace Jellyfin.Api.Helpers
return controller.NoContent();
}
- using var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
- return controller.File(stream, contentType);
+ return controller.PhysicalFile(path, contentType);
}
/// <summary>
@@ -80,7 +79,6 @@ namespace Jellyfin.Api.Helpers
/// </summary>
/// <param name="state">The current <see cref="StreamState"/>.</param>
/// <param name="isHeadRequest">Whether the current request is a HTTP HEAD request so only the headers get returned.</param>
- /// <param name="streamHelper">Instance of the <see cref="IStreamHelper"/> interface.</param>
/// <param name="controller">The <see cref="ControllerBase"/> managing the response.</param>
/// <param name="transcodingJobHelper">The <see cref="TranscodingJobHelper"/> singleton.</param>
/// <param name="ffmpegCommandLineArguments">The command line arguments to start ffmpeg.</param>
@@ -91,7 +89,6 @@ namespace Jellyfin.Api.Helpers
public static async Task<ActionResult> GetTranscodedFile(
StreamState state,
bool isHeadRequest,
- IStreamHelper streamHelper,
ControllerBase controller,
TranscodingJobHelper transcodingJobHelper,
string ffmpegCommandLineArguments,
@@ -116,18 +113,20 @@ namespace Jellyfin.Api.Helpers
await transcodingLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false);
try
{
+ TranscodingJobDto? job;
if (!File.Exists(outputPath))
{
- await transcodingJobHelper.StartFfMpeg(state, outputPath, ffmpegCommandLineArguments, request, transcodingJobType, cancellationTokenSource).ConfigureAwait(false);
+ job = await transcodingJobHelper.StartFfMpeg(state, outputPath, ffmpegCommandLineArguments, request, transcodingJobType, cancellationTokenSource).ConfigureAwait(false);
}
else
{
- transcodingJobHelper.OnTranscodeBeginRequest(outputPath, TranscodingJobType.Progressive);
+ job = transcodingJobHelper.OnTranscodeBeginRequest(outputPath, TranscodingJobType.Progressive);
state.Dispose();
}
- await using var memoryStream = new MemoryStream();
- await new ProgressiveFileCopier(streamHelper, outputPath).WriteToAsync(memoryStream, CancellationToken.None).ConfigureAwait(false);
+ var memoryStream = new MemoryStream();
+ await new ProgressiveFileCopier(outputPath, job, transcodingJobHelper, CancellationToken.None).WriteToAsync(memoryStream, CancellationToken.None).ConfigureAwait(false);
+ memoryStream.Position = 0;
return controller.File(memoryStream, contentType);
}
finally