aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Playback
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/Playback')
-rw-r--r--MediaBrowser.Api/Playback/Progressive/AudioService.cs18
-rw-r--r--MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs18
-rw-r--r--MediaBrowser.Api/Playback/Progressive/VideoService.cs19
3 files changed, 48 insertions, 7 deletions
diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
index 3581d006e7..b64e1750c8 100644
--- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
@@ -15,6 +15,12 @@ namespace MediaBrowser.Api.Playback.Progressive
[Route("/Audio/{Id}/stream.flac", "GET")]
[Route("/Audio/{Id}/stream.ogg", "GET")]
[Route("/Audio/{Id}/stream", "GET")]
+ [Route("/Audio/{Id}/stream.mp3", "HEAD")]
+ [Route("/Audio/{Id}/stream.wma", "HEAD")]
+ [Route("/Audio/{Id}/stream.aac", "HEAD")]
+ [Route("/Audio/{Id}/stream.flac", "HEAD")]
+ [Route("/Audio/{Id}/stream.ogg", "HEAD")]
+ [Route("/Audio/{Id}/stream", "HEAD")]
[ServiceStack.ServiceHost.Api(Description = "Gets an audio stream")]
public class GetAudioStream : StreamRequest
{
@@ -38,7 +44,17 @@ namespace MediaBrowser.Api.Playback.Progressive
/// <returns>System.Object.</returns>
public object Get(GetAudioStream request)
{
- return ProcessRequest(request);
+ return ProcessRequest(request, false);
+ }
+
+ /// <summary>
+ /// Gets the specified request.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns>System.Object.</returns>
+ public object Head(GetAudioStream request)
+ {
+ return ProcessRequest(request, true);
}
/// <summary>
diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
index a4acc28450..56bb18752b 100644
--- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
@@ -94,38 +94,46 @@ namespace MediaBrowser.Api.Playback.Progressive
/// Processes the request.
/// </summary>
/// <param name="request">The request.</param>
+ /// <param name="isHeadRequest">if set to <c>true</c> [is head request].</param>
/// <returns>Task.</returns>
- protected object ProcessRequest(StreamRequest request)
+ protected object ProcessRequest(StreamRequest request, bool isHeadRequest)
{
var state = GetState(request);
if (request.Static)
{
- return ToStaticFileResult(state.Item.Path);
+ return ToStaticFileResult(state.Item.Path, isHeadRequest);
}
var outputPath = GetOutputFilePath(state);
if (File.Exists(outputPath) && !ApiEntryPoint.Instance.HasActiveTranscodingJob(outputPath, TranscodingJobType.Progressive))
{
- return ToStaticFileResult(outputPath);
+ return ToStaticFileResult(outputPath, isHeadRequest);
}
- return GetStreamResult(state).Result;
+ return GetStreamResult(state, isHeadRequest).Result;
}
/// <summary>
/// Gets the stream result.
/// </summary>
/// <param name="state">The state.</param>
+ /// <param name="isHeadRequest">if set to <c>true</c> [is head request].</param>
/// <returns>Task{System.Object}.</returns>
- private async Task<ProgressiveStreamWriter> GetStreamResult(StreamState state)
+ private async Task<ProgressiveStreamWriter> GetStreamResult(StreamState state, bool isHeadRequest)
{
// Use the command line args with a dummy playlist path
var outputPath = GetOutputFilePath(state);
Response.ContentType = MimeTypes.GetMimeType(outputPath);
+ // Headers only
+ if (isHeadRequest)
+ {
+ return null;
+ }
+
if (!File.Exists(outputPath))
{
await StartFFMpeg(state, outputPath).ConfigureAwait(false);
diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
index cc1c5b1fc5..0e94b7df89 100644
--- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
@@ -23,6 +23,18 @@ namespace MediaBrowser.Api.Playback.Progressive
[Route("/Videos/{Id}/stream.avi", "GET")]
[Route("/Videos/{Id}/stream.m2ts", "GET")]
[Route("/Videos/{Id}/stream", "GET")]
+ [Route("/Videos/{Id}/stream.ts", "HEAD")]
+ [Route("/Videos/{Id}/stream.webm", "HEAD")]
+ [Route("/Videos/{Id}/stream.asf", "HEAD")]
+ [Route("/Videos/{Id}/stream.wmv", "HEAD")]
+ [Route("/Videos/{Id}/stream.ogv", "HEAD")]
+ [Route("/Videos/{Id}/stream.mp4", "HEAD")]
+ [Route("/Videos/{Id}/stream.m4v", "HEAD")]
+ [Route("/Videos/{Id}/stream.mkv", "HEAD")]
+ [Route("/Videos/{Id}/stream.mpeg", "HEAD")]
+ [Route("/Videos/{Id}/stream.avi", "HEAD")]
+ [Route("/Videos/{Id}/stream.m2ts", "HEAD")]
+ [Route("/Videos/{Id}/stream", "HEAD")]
[ServiceStack.ServiceHost.Api(Description = "Gets a video stream")]
public class GetVideoStream : VideoStreamRequest
{
@@ -46,9 +58,14 @@ namespace MediaBrowser.Api.Playback.Progressive
/// <returns>System.Object.</returns>
public object Get(GetVideoStream request)
{
- return ProcessRequest(request);
+ return ProcessRequest(request, false);
}
+ public object Head(GetVideoStream request)
+ {
+ return ProcessRequest(request, true);
+ }
+
/// <summary>
/// Gets the command line arguments.
/// </summary>