diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 2c4d1fd34f..7468b0b634 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -134,7 +134,19 @@ namespace MediaBrowser.Api.Playback
data += "-" + (state.Request.DeviceId ?? string.Empty);
data += "-" + (state.Request.ClientTime ?? string.Empty);
- return Path.Combine(folder, data.GetMD5().ToString("N") + (outputFileExtension ?? string.Empty).ToLower());
+ var dataHash = data.GetMD5().ToString("N");
+
+ if (EnableOutputInSubFolder)
+ {
+ return Path.Combine(folder, dataHash, dataHash + (outputFileExtension ?? string.Empty).ToLower());
+ }
+
+ return Path.Combine(folder, dataHash + (outputFileExtension ?? string.Empty).ToLower());
+ }
+
+ protected virtual bool EnableOutputInSubFolder
+ {
+ get { return false; }
}
protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
diff --git a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs b/MediaBrowser.Api/Playback/Hls/MpegDashService.cs
index 5fe92682e1..3674f0032a 100644
--- a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs
+++ b/MediaBrowser.Api/Playback/Hls/MpegDashService.cs
@@ -38,8 +38,7 @@ namespace MediaBrowser.Api.Playback.Hls
}
}
- [Route("/Videos/{Id}/dash/audio/{SegmentId}.m4s", "GET")]
- [Route("/Videos/{Id}/dash/video/{SegmentId}.m4s", "GET")]
+ [Route("/Videos/{Id}/dash/{SegmentType}/{SegmentId}.m4s", "GET")]
public class GetDashSegment : VideoStreamRequest
{
///
@@ -47,11 +46,18 @@ namespace MediaBrowser.Api.Playback.Hls
///
/// The segment id.
public string SegmentId { get; set; }
+
+ ///
+ /// Gets or sets the type of the segment.
+ ///
+ /// The type of the segment.
+ public string SegmentType { get; set; }
}
public class MpegDashService : BaseHlsService
{
- public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager)
+ public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager)
+ : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager)
{
NetworkManager = networkManager;
}
@@ -72,6 +78,14 @@ namespace MediaBrowser.Api.Playback.Hls
return result;
}
+ protected override bool EnableOutputInSubFolder
+ {
+ get
+ {
+ return true;
+ }
+ }
+
private async Task