|
|
|
@ -423,7 +423,7 @@ namespace MediaBrowser.Api.Playback.Hls
|
|
|
|
|
return Path.Combine(folder, filename + index.ToString(UsCulture) + GetSegmentFileExtension(state.Request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<object> GetSegmentResult(StreamState state,
|
|
|
|
|
private async Task<object> GetSegmentResult(StreamState state,
|
|
|
|
|
string playlistPath,
|
|
|
|
|
string segmentPath,
|
|
|
|
|
string segmentExtension,
|
|
|
|
@ -456,26 +456,20 @@ namespace MediaBrowser.Api.Playback.Hls
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using (var fileStream = GetPlaylistFileStream(playlistPath))
|
|
|
|
|
var text = FileSystem.ReadAllText(playlistPath, Encoding.UTF8);
|
|
|
|
|
|
|
|
|
|
// If it appears in the playlist, it's done
|
|
|
|
|
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
|
|
|
|
|
{
|
|
|
|
|
using (var reader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
|
|
|
|
|
if (!segmentFileExists)
|
|
|
|
|
{
|
|
|
|
|
var text = await reader.ReadToEndAsync().ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
// If it appears in the playlist, it's done
|
|
|
|
|
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
|
|
|
|
|
{
|
|
|
|
|
if (!segmentFileExists)
|
|
|
|
|
{
|
|
|
|
|
segmentFileExists = FileSystem.FileExists(segmentPath);
|
|
|
|
|
}
|
|
|
|
|
if (segmentFileExists)
|
|
|
|
|
{
|
|
|
|
|
return await GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
//break;
|
|
|
|
|
}
|
|
|
|
|
segmentFileExists = FileSystem.FileExists(segmentPath);
|
|
|
|
|
}
|
|
|
|
|
if (segmentFileExists)
|
|
|
|
|
{
|
|
|
|
|
return await GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
//break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (IOException)
|
|
|
|
|