|
|
@ -203,7 +203,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -218,14 +218,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions,
|
|
|
|
[FromQuery] bool enableAdaptiveBitrateStreaming = true)
|
|
|
|
[FromQuery] bool enableAdaptiveBitrateStreaming = true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var streamingRequest = new HlsVideoRequestDto
|
|
|
|
var streamingRequest = new HlsVideoRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -249,28 +249,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions,
|
|
|
|
StreamOptions = streamOptions,
|
|
|
|
EnableAdaptiveBitrateStreaming = enableAdaptiveBitrateStreaming
|
|
|
|
EnableAdaptiveBitrateStreaming = enableAdaptiveBitrateStreaming
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -370,7 +370,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -385,14 +385,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions,
|
|
|
|
[FromQuery] bool enableAdaptiveBitrateStreaming = true)
|
|
|
|
[FromQuery] bool enableAdaptiveBitrateStreaming = true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var streamingRequest = new HlsAudioRequestDto
|
|
|
|
var streamingRequest = new HlsAudioRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -416,28 +416,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions,
|
|
|
|
StreamOptions = streamOptions,
|
|
|
|
EnableAdaptiveBitrateStreaming = enableAdaptiveBitrateStreaming
|
|
|
|
EnableAdaptiveBitrateStreaming = enableAdaptiveBitrateStreaming
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -533,7 +533,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -548,14 +548,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var cancellationTokenSource = new CancellationTokenSource();
|
|
|
|
var cancellationTokenSource = new CancellationTokenSource();
|
|
|
|
var streamingRequest = new VideoRequestDto
|
|
|
|
var streamingRequest = new VideoRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -579,28 +579,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -698,7 +698,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -713,14 +713,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var cancellationTokenSource = new CancellationTokenSource();
|
|
|
|
var cancellationTokenSource = new CancellationTokenSource();
|
|
|
|
var streamingRequest = new StreamingRequestDto
|
|
|
|
var streamingRequest = new StreamingRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -744,28 +744,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -868,7 +868,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -883,14 +883,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var streamingRequest = new VideoRequestDto
|
|
|
|
var streamingRequest = new VideoRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Container = container,
|
|
|
|
Container = container,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -914,28 +914,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -1040,7 +1040,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? height,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? videoBitRate,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] int? subtitleStreamIndex,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod subtitleMethod,
|
|
|
|
[FromQuery] SubtitleDeliveryMethod? subtitleMethod,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxRefFrames,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] int? maxVideoBitDepth,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
|
[FromQuery] bool? requireAvc,
|
|
|
@ -1055,14 +1055,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] string? transcodeReasons,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? audioStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] int? videoStreamIndex,
|
|
|
|
[FromQuery] EncodingContext context,
|
|
|
|
[FromQuery] EncodingContext? context,
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
[FromQuery] Dictionary<string, string> streamOptions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var streamingRequest = new StreamingRequestDto
|
|
|
|
var streamingRequest = new StreamingRequestDto
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Id = itemId,
|
|
|
|
Id = itemId,
|
|
|
|
Container = container,
|
|
|
|
Container = container,
|
|
|
|
Static = @static ?? true,
|
|
|
|
Static = @static ?? false,
|
|
|
|
Params = @params,
|
|
|
|
Params = @params,
|
|
|
|
Tag = tag,
|
|
|
|
Tag = tag,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
|
DeviceProfileId = deviceProfileId,
|
|
|
@ -1086,28 +1086,28 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
Level = level,
|
|
|
|
Level = level,
|
|
|
|
Framerate = framerate,
|
|
|
|
Framerate = framerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
MaxFramerate = maxFramerate,
|
|
|
|
CopyTimestamps = copyTimestamps ?? true,
|
|
|
|
CopyTimestamps = copyTimestamps ?? false,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
StartTimeTicks = startTimeTicks,
|
|
|
|
Width = width,
|
|
|
|
Width = width,
|
|
|
|
Height = height,
|
|
|
|
Height = height,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
VideoBitRate = videoBitRate,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleStreamIndex = subtitleStreamIndex,
|
|
|
|
SubtitleMethod = subtitleMethod,
|
|
|
|
SubtitleMethod = subtitleMethod ?? SubtitleDeliveryMethod.Encode,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxRefFrames = maxRefFrames,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
MaxVideoBitDepth = maxVideoBitDepth,
|
|
|
|
RequireAvc = requireAvc ?? true,
|
|
|
|
RequireAvc = requireAvc ?? false,
|
|
|
|
DeInterlace = deInterlace ?? true,
|
|
|
|
DeInterlace = deInterlace ?? false,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? true,
|
|
|
|
RequireNonAnamorphic = requireNonAnamorphic ?? false,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
TranscodingMaxAudioChannels = transcodingMaxAudioChannels,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
CpuCoreLimit = cpuCoreLimit,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
LiveStreamId = liveStreamId,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? true,
|
|
|
|
EnableMpegtsM2TsMode = enableMpegtsM2TsMode ?? false,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
VideoCodec = videoCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
SubtitleCodec = subtitleCodec,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
TranscodeReasons = transcodeReasons,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
AudioStreamIndex = audioStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
VideoStreamIndex = videoStreamIndex,
|
|
|
|
Context = context,
|
|
|
|
Context = context ?? EncodingContext.Streaming,
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
StreamOptions = streamOptions
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|