Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }