public async Task Run(Video item, CancellationToken cancellationToken) { var mediaSources = ((IHasMediaSources)item).GetMediaSources(false) .ToList(); var modifier = GetItemModifier(item); var audioMode = Plugin.Instance.Configuration.AudioOutputMode; var profile = new RokuDeviceProfile(audioMode >= AudioOutputMode.DDPlus, audioMode >= AudioOutputMode.DTS); foreach (var mediaSource in mediaSources) { cancellationToken.ThrowIfCancellationRequested(); var streamInfo = new StreamBuilder(_logger).BuildVideoItem(new VideoOptions { Context = EncodingContext.Streaming, ItemId = item.Id.ToString("N"), MediaSources = new List <MediaSourceInfo> { mediaSource }, Profile = profile, MaxBitrate = Plugin.Instance.Configuration.MaxBitrate, DeviceId = Guid.NewGuid().ToString("N"), AudioStreamIndex = mediaSource.MediaStreams.Where(i => i.Type == MediaStreamType.Audio).Select(i => i.Index).FirstOrDefault(), MediaSourceId = mediaSource.Id }); if (!streamInfo.IsDirectStream) { continue; } if (Plugin.Instance.Configuration.EnableHdThumbnails) { await Run(item, modifier, mediaSource, 320, cancellationToken).ConfigureAwait(false); } if (Plugin.Instance.Configuration.EnableSdThumbnails) { await Run(item, modifier, mediaSource, 240, cancellationToken).ConfigureAwait(false); } } }
public async Task Run(Video item, CancellationToken cancellationToken) { var mediaSources = ((IHasMediaSources)item).GetMediaSources(false) .ToList(); var modifier = GetItemModifier(item); var audioMode = Plugin.Instance.Configuration.AudioOutputMode; var profile = new RokuDeviceProfile(audioMode >= AudioOutputMode.DDPlus, audioMode >= AudioOutputMode.DTS); foreach (var mediaSource in mediaSources) { cancellationToken.ThrowIfCancellationRequested(); var streamInfo = new StreamBuilder(_logger).BuildVideoItem(new VideoOptions { Context = EncodingContext.Streaming, ItemId = item.Id.ToString("N"), MediaSources = new List<MediaSourceInfo> { mediaSource }, Profile = profile, MaxBitrate = Plugin.Instance.Configuration.MaxBitrate, DeviceId = Guid.NewGuid().ToString("N"), AudioStreamIndex = mediaSource.MediaStreams.Where(i => i.Type == MediaStreamType.Audio).Select(i => i.Index).FirstOrDefault(), MediaSourceId = mediaSource.Id }); if (!streamInfo.IsDirectStream) { continue; } if (Plugin.Instance.Configuration.EnableHdThumbnails) { await Run(item, modifier, mediaSource, 320, cancellationToken).ConfigureAwait(false); } if (Plugin.Instance.Configuration.EnableSdThumbnails) { await Run(item, modifier, mediaSource, 240, cancellationToken).ConfigureAwait(false); } } }