public async Task <ActionResult <PlaybackInfoResponse> > GetPlaybackInfo([FromRoute, Required] Guid itemId, [FromQuery, Required] Guid userId) { return(await _mediaInfoHelper.GetPlaybackInfo( itemId, userId) .ConfigureAwait(false)); }
public async Task <ActionResult> GetUniversalAudioStream( [FromRoute, Required] Guid itemId, [FromRoute, Required] string?container, [FromQuery] string?mediaSourceId, [FromQuery] string?deviceId, [FromQuery] Guid?userId, [FromQuery] string?audioCodec, [FromQuery] int?maxAudioChannels, [FromQuery] int?transcodingAudioChannels, [FromQuery] long?maxStreamingBitrate, [FromQuery] long?startTimeTicks, [FromQuery] string?transcodingContainer, [FromQuery] string?transcodingProtocol, [FromQuery] int?maxAudioSampleRate, [FromQuery] int?maxAudioBitDepth, [FromQuery] bool?enableRemoteMedia, [FromQuery] bool breakOnNonKeyFrames, [FromQuery] bool enableRedirection = true) { var deviceProfile = GetDeviceProfile(container, transcodingContainer, audioCodec, transcodingProtocol, breakOnNonKeyFrames, transcodingAudioChannels, maxAudioSampleRate, maxAudioBitDepth, maxAudioChannels); _authorizationContext.GetAuthorizationInfo(Request).DeviceId = deviceId; var authInfo = _authorizationContext.GetAuthorizationInfo(Request); _logger.LogInformation("GetPostedPlaybackInfo profile: {@Profile}", deviceProfile); if (deviceProfile == null) { var clientCapabilities = _deviceManager.GetCapabilities(authInfo.DeviceId); if (clientCapabilities != null) { deviceProfile = clientCapabilities.DeviceProfile; } } var info = await _mediaInfoHelper.GetPlaybackInfo( itemId, userId, mediaSourceId) .ConfigureAwait(false); if (deviceProfile != null) { // set device specific data var item = _libraryManager.GetItemById(itemId); foreach (var sourceInfo in info.MediaSources) { _mediaInfoHelper.SetDeviceSpecificData( item, sourceInfo, deviceProfile, authInfo, maxStreamingBitrate ?? deviceProfile.MaxStreamingBitrate, startTimeTicks ?? 0, mediaSourceId ?? string.Empty, null, null, maxAudioChannels, info !.PlaySessionId !, userId ?? Guid.Empty, true, true, true, true, true, Request.HttpContext.Connection.RemoteIpAddress.ToString()); } _mediaInfoHelper.SortMediaSources(info, maxStreamingBitrate); } if (info.MediaSources != null) { foreach (var source in info.MediaSources) { _mediaInfoHelper.NormalizeMediaSourceContainer(source, deviceProfile !, DlnaProfileType.Video); } } var mediaSource = info.MediaSources ![0];