aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs45
1 files changed, 26 insertions, 19 deletions
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 0b32ae052..af41ecb36 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -193,32 +193,37 @@ namespace MediaBrowser.Api.Playback.Hls
return int.Parse(indexString, NumberStyles.Integer, UsCulture);
}
- private void DeleteLastFile(string path, string segmentExtension, int retryCount)
+ private void DeleteLastFile(string playlistPath, string segmentExtension, int retryCount)
+ {
+ var file = GetLastTranscodingFile(playlistPath, segmentExtension, FileSystem);
+
+ if (file != null)
+ {
+ DeleteFile(file, retryCount);
+ }
+ }
+
+ private void DeleteFile(FileInfo file, int retryCount)
{
if (retryCount >= 5)
{
return;
}
- var file = GetLastTranscodingFile(path, segmentExtension, FileSystem);
-
- if (file != null)
+ try
{
- try
- {
- File.Delete(file.FullName);
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
+ File.Delete(file.FullName);
+ }
+ catch (IOException ex)
+ {
+ Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
- Thread.Sleep(100);
- DeleteLastFile(path, segmentExtension, retryCount + 1);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
- }
+ Thread.Sleep(100);
+ DeleteFile(file, retryCount + 1);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
}
}
@@ -226,11 +231,13 @@ namespace MediaBrowser.Api.Playback.Hls
{
var folder = Path.GetDirectoryName(playlist);
+ var filePrefix = Path.GetFileNameWithoutExtension(playlist) ?? string.Empty;
+
try
{
return new DirectoryInfo(folder)
.EnumerateFiles("*", SearchOption.TopDirectoryOnly)
- .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase))
+ .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase) && Path.GetFileNameWithoutExtension(i.Name).StartsWith(filePrefix, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(fileSystem.GetLastWriteTimeUtc)
.FirstOrDefault();
}