mirror of https://github.com/jellyfin/jellyfin.git
add infinite property
This commit is contained in:
parent
76c7bfcb67
commit
fdbcccc65f
|
@ -170,6 +170,19 @@ namespace MediaBrowser.Api.Playback.Progressive
|
||||||
|
|
||||||
using (state)
|
using (state)
|
||||||
{
|
{
|
||||||
|
if (state.MediaSource.IsInfiniteStream)
|
||||||
|
{
|
||||||
|
var outputHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
outputHeaders["Content-Type"] = contentType;
|
||||||
|
|
||||||
|
var streamSource = new ProgressiveFileCopier(FileSystem, state.MediaPath, outputHeaders, null, Logger, CancellationToken.None)
|
||||||
|
{
|
||||||
|
AllowEndOfFile = false
|
||||||
|
};
|
||||||
|
return ResultFactory.GetAsyncStreamWriter(streamSource);
|
||||||
|
}
|
||||||
|
|
||||||
TimeSpan? cacheDuration = null;
|
TimeSpan? cacheDuration = null;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(request.Tag))
|
if (!string.IsNullOrEmpty(request.Tag))
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace MediaBrowser.Api.Playback.Progressive
|
||||||
private const int BufferSize = 81920;
|
private const int BufferSize = 81920;
|
||||||
|
|
||||||
private long _bytesWritten = 0;
|
private long _bytesWritten = 0;
|
||||||
|
public long StartPosition { get; set; }
|
||||||
public bool AllowEndOfFile = true;
|
public bool AllowEndOfFile = true;
|
||||||
|
|
||||||
public ProgressiveFileCopier(IFileSystem fileSystem, string path, Dictionary<string, string> outputHeaders, TranscodingJob job, ILogger logger, CancellationToken cancellationToken)
|
public ProgressiveFileCopier(IFileSystem fileSystem, string path, Dictionary<string, string> outputHeaders, TranscodingJob job, ILogger logger, CancellationToken cancellationToken)
|
||||||
|
@ -52,6 +52,11 @@ namespace MediaBrowser.Api.Playback.Progressive
|
||||||
|
|
||||||
using (var fs = _fileSystem.GetFileStream(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
|
using (var fs = _fileSystem.GetFileStream(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
|
||||||
{
|
{
|
||||||
|
if (StartPosition > 0)
|
||||||
|
{
|
||||||
|
fs.Position = StartPosition;
|
||||||
|
}
|
||||||
|
|
||||||
while (eofCount < 15 || !AllowEndOfFile)
|
while (eofCount < 15 || !AllowEndOfFile)
|
||||||
{
|
{
|
||||||
var bytesRead = await CopyToAsyncInternal(fs, outputStream, BufferSize, _cancellationToken).ConfigureAwait(false);
|
var bytesRead = await CopyToAsyncInternal(fs, outputStream, BufferSize, _cancellationToken).ConfigureAwait(false);
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace MediaBrowser.Model.Dto
|
||||||
public bool SupportsTranscoding { get; set; }
|
public bool SupportsTranscoding { get; set; }
|
||||||
public bool SupportsDirectStream { get; set; }
|
public bool SupportsDirectStream { get; set; }
|
||||||
public bool SupportsDirectPlay { get; set; }
|
public bool SupportsDirectPlay { get; set; }
|
||||||
|
public bool IsInfiniteStream { get; set; }
|
||||||
public bool RequiresOpening { get; set; }
|
public bool RequiresOpening { get; set; }
|
||||||
public string OpenToken { get; set; }
|
public string OpenToken { get; set; }
|
||||||
public bool RequiresClosing { get; set; }
|
public bool RequiresClosing { get; set; }
|
||||||
|
|
|
@ -396,7 +396,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
Id = id,
|
Id = id,
|
||||||
SupportsDirectPlay = false,
|
SupportsDirectPlay = false,
|
||||||
SupportsDirectStream = true,
|
SupportsDirectStream = true,
|
||||||
SupportsTranscoding = true
|
SupportsTranscoding = true,
|
||||||
|
IsInfiniteStream = true
|
||||||
};
|
};
|
||||||
|
|
||||||
return mediaSource;
|
return mediaSource;
|
||||||
|
|
Loading…
Reference in New Issue