public List <MediaStream> GetMediaStreams(MediaStreamQuery query) { var list = _itemRepo.GetMediaStreams(query); foreach (var stream in list) { stream.SupportsExternalStream = StreamSupportsExternalStream(stream); } return(list); }
private async Task <DynamicImageResponse> GetVideoImage(Video item, CancellationToken cancellationToken) { MediaSourceInfo mediaSource = new MediaSourceInfo { VideoType = item.VideoType, IsoType = item.IsoType, Protocol = item.PathProtocol ?? MediaProtocol.File, }; // If we know the duration, grab it from 10% into the video. Otherwise just 10 seconds in. // Always use 10 seconds for dvd because our duration could be out of whack var imageOffset = item.VideoType != VideoType.Dvd && item.RunTimeTicks > 0 ? TimeSpan.FromTicks(item.RunTimeTicks.Value / 10) : TimeSpan.FromSeconds(10); var query = new MediaStreamQuery { ItemId = item.Id, Index = item.DefaultVideoStreamIndex }; var videoStream = _mediaSourceManager.GetMediaStreams(query).FirstOrDefault(); if (videoStream == null) { query.Type = MediaStreamType.Video; query.Index = null; videoStream = _mediaSourceManager.GetMediaStreams(query).FirstOrDefault(); } if (videoStream == null) { _logger.LogInformation("Skipping image extraction: no video stream found for {Path}.", item.Path ?? string.Empty); return(new DynamicImageResponse { HasImage = false }); } string extractedImagePath = await _mediaEncoder.ExtractVideoImage(item.Path, item.Container, mediaSource, videoStream, item.Video3DFormat, imageOffset, cancellationToken).ConfigureAwait(false); return(new DynamicImageResponse { Format = ImageFormat.Jpg, HasImage = true, Path = extractedImagePath, Protocol = MediaProtocol.File }); }
public IEnumerable <MediaStream> GetMediaStreams(MediaStreamQuery query) { if (query == null) { throw new ArgumentNullException("query"); } using (var cmd = _connection.CreateCommand()) { var cmdText = "select " + string.Join(",", _saveColumns) + " from mediastreams where"; cmdText += " ItemId=@ItemId"; cmd.Parameters.Add(cmd, "@ItemId", DbType.Guid).Value = query.ItemId; if (query.Type.HasValue) { cmdText += " AND StreamType=@StreamType"; cmd.Parameters.Add(cmd, "@StreamType", DbType.String).Value = query.Type.Value.ToString(); } if (query.Index.HasValue) { cmdText += " AND StreamIndex=@StreamIndex"; cmd.Parameters.Add(cmd, "@StreamIndex", DbType.Int32).Value = query.Index.Value; } cmdText += " order by StreamIndex ASC"; cmd.CommandText = cmdText; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) { while (reader.Read()) { yield return(GetMediaStream(reader)); } } } }
public IEnumerable <MediaStream> GetMediaStreams(MediaStreamQuery query) { CheckDisposed(); return(_mediaStreamsRepository.GetMediaStreams(query)); }
public IEnumerable <MediaStream> GetMediaStreams(MediaStreamQuery query) { return(_mediaStreamsRepository.GetMediaStreams(query)); }