private static int OrderByProcessor(MediaInsight leftItem, MediaInsight rightItem) { MediaProcessor leftProcessor = Processor.GetMediaProcessor(leftItem.ProcessorId).Value; MediaProcessor rightProcessor = Processor.GetMediaProcessor(rightItem.ProcessorId).Value; return(leftProcessor.CompareTo(rightProcessor)); }
private static MediaStream GetMediaStream(string authToken, MediaClient mediaClient, StreamingLocator streamingLocator) { MediaStream mediaStream = null; string streamingUrl = mediaClient.GetStreamingUrl(streamingLocator, null); if (!string.IsNullOrEmpty(streamingUrl)) { Asset asset = mediaClient.GetEntity <Asset>(MediaEntity.Asset, streamingLocator.AssetName); MediaInsight mediaInsight = GetMediaInsight(mediaClient, asset); authToken = !string.IsNullOrEmpty(mediaInsight.ViewToken) ? mediaInsight.ViewToken : string.Concat(Constant.AuthIntegration.AuthScheme, authToken); mediaStream = new MediaStream() { Name = string.IsNullOrEmpty(streamingLocator.Name) ? asset.Name : streamingLocator.Name, Url = streamingUrl, Poster = mediaClient.GetDownloadUrl(asset.Name, Constant.Media.Thumbnail.FileName), Tracks = Track.GetMediaTracks(mediaClient, asset), Insight = mediaInsight, Protection = mediaClient.GetStreamProtection(authToken, mediaClient, streamingLocator) }; List <string> assetFilterNames = new List <string>(); AssetFilter[] assetFilters = mediaClient.GetAllEntities <AssetFilter>(MediaEntity.StreamingFilterAsset, streamingLocator.AssetName); foreach (AssetFilter assetFilter in assetFilters) { assetFilterNames.Add(assetFilter.Name); } mediaStream.Filters = assetFilterNames.ToArray(); } return(mediaStream); }
private static MediaInsight GetMediaInsight(MediaClient mediaClient, Asset asset) { MediaInsight mediaInsight = new MediaInsight(); if (mediaClient.IndexerEnabled()) { using (DatabaseClient databaseClient = new DatabaseClient(false)) { string collectionId = Constant.Database.Collection.MediaAssets; MediaAssetLink assetLink = databaseClient.GetDocument <MediaAssetLink>(collectionId, asset.Name); if (assetLink != null) { string insightId = null; if (assetLink.JobOutputs.ContainsKey(MediaTransformPreset.VideoIndexer)) { insightId = assetLink.JobOutputs[MediaTransformPreset.VideoIndexer]; } else if (assetLink.JobOutputs.ContainsKey(MediaTransformPreset.AudioIndexer)) { insightId = assetLink.JobOutputs[MediaTransformPreset.AudioIndexer]; } if (!string.IsNullOrEmpty(insightId) && mediaClient.IndexerInsightExists(insightId, out JObject insight)) { mediaInsight.WidgetUrl = mediaClient.IndexerGetInsightUrl(insightId); mediaInsight.ViewToken = insight["videos"][0]["viewToken"].ToString(); } } } } return(mediaInsight); }
private static MediaInsight GetMediaInsight(MediaClient mediaClient, Asset asset) { MediaInsight mediaInsight = new MediaInsight(); if (mediaClient.IndexerEnabled() && !string.IsNullOrEmpty(asset.AlternateId)) { mediaInsight.WidgetUrl = mediaClient.IndexerGetInsightUrl(asset.AlternateId); } return(mediaInsight); }
private static MediaStream[] GetMediaStreams(string authToken, MediaClient mediaClient, IAsset asset, bool clipperView, bool filtersOnly) { List <MediaStream> mediaStreams = new List <MediaStream>(); IndexerClient indexerClient = new IndexerClient(authToken); List <MediaInsight> contentInsight = new List <MediaInsight>(); if (!clipperView) { string documentId = DocumentClient.GetDocumentId(asset, out bool videoIndexer); if (!string.IsNullOrEmpty(documentId) && videoIndexer && indexerClient.IndexerEnabled) { MediaInsight insight = new MediaInsight() { ProcessorId = Processor.GetProcessorId(MediaProcessor.VideoIndexer, null), ProcessorName = Processor.GetProcessorName(MediaProcessor.VideoIndexer), DocumentId = documentId, SourceUrl = indexerClient.GetInsightUrl(documentId, true) }; contentInsight.Add(insight); } string[] fileNames = MediaClient.GetFileNames(asset, Constant.Media.FileExtension.Json); foreach (string fileName in fileNames) { string[] fileNameInfo = fileName.Split(Constant.TextDelimiter.Identifier); if (Enum.TryParse(fileNameInfo[0], out MediaProcessor processor) && fileNameInfo.Length == 2) { documentId = fileNameInfo[1].Replace(Constant.Media.FileExtension.Json, string.Empty); MediaInsight insight = new MediaInsight() { ProcessorId = Processor.GetProcessorId(processor, null), ProcessorName = Processor.GetProcessorName(processor), DocumentId = documentId, SourceUrl = string.Empty }; contentInsight.Add(insight); } } contentInsight.Sort(OrderByProcessor); } MediaStream mediaStream = new MediaStream() { Id = asset.Id, Name = asset.Name, Type = "asset", Source = new StreamSource() { Src = mediaClient.GetLocatorUrl(asset), ProtectionInfo = mediaClient.GetStreamProtections(authToken, asset) }, TextTracks = GetTextTracks(mediaClient, indexerClient, asset), ContentInsight = contentInsight.ToArray(), }; if (!filtersOnly) { mediaStreams.Add(mediaStream); } foreach (IStreamingAssetFilter assetFilter in asset.AssetFilters) { MediaStream filteredStream = mediaStream.DeepCopy(); filteredStream.Id = assetFilter.Id; filteredStream.Name = string.Concat(mediaStream.Name, "<br><br>+ ", assetFilter.Name); filteredStream.Type = "filter"; filteredStream.Source.Src = string.Concat(filteredStream.Source.Src, "(filter=", assetFilter.Name, ")"); mediaStreams.Add(filteredStream); } return(mediaStreams.ToArray()); }