public static TextTrack[] GetTextTracks(MediaClient mediaClient, Asset asset) { string captionsUrl = null; List <TextTrack> textTracks = new List <TextTrack>(); MediaAsset mediaAsset = new MediaAsset(mediaClient, asset); foreach (MediaFile assetFile in mediaAsset.Files) { if (string.IsNullOrEmpty(captionsUrl)) { if (string.Equals(assetFile.Name, Constant.Media.Track.TranscriptFile, StringComparison.OrdinalIgnoreCase)) { captionsUrl = mediaClient.GetDownloadUrl(asset, assetFile.Name); } else if (!string.IsNullOrEmpty(asset.AlternateId)) { captionsUrl = mediaClient.IndexerGetCaptionsUrl(asset.AlternateId); } } } if (!string.IsNullOrEmpty(captionsUrl)) { TextTrack textTrack = new TextTrack() { Type = Constant.Media.Track.CaptionsType, Label = Constant.Media.Track.CaptionsLabel, SourceUrl = captionsUrl }; textTracks.Add(textTrack); } return(textTracks.ToArray()); }
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); }
public static MediaTrack[] GetMediaTracks(MediaClient mediaClient, Asset asset) { List <MediaTrack> mediaTracks = new List <MediaTrack>(); using (DatabaseClient databaseClient = new DatabaseClient(false)) { string collectionId = Constant.Database.Collection.MediaAssets; MediaAssetLink assetLink = databaseClient.GetDocument <MediaAssetLink>(collectionId, asset.Name); if (assetLink != null) { string trackType = null; string trackLabel = null; string trackSourceUrl = null; if (assetLink.JobOutputs.ContainsKey(MediaTransformPreset.AudioIndexer)) { trackType = Constant.Media.Track.AudioTranscript.CaptionsType; trackLabel = Constant.Media.Track.AudioTranscript.CaptionsLabel; string insightId = assetLink.JobOutputs[MediaTransformPreset.AudioIndexer]; trackSourceUrl = mediaClient.IndexerGetCaptionsUrl(insightId); } else if (assetLink.JobOutputs.ContainsKey(MediaTransformPreset.AudioAnalyzer)) { trackType = Constant.Media.Track.AudioTranscript.SubtitlesType; trackLabel = Constant.Media.Track.AudioTranscript.SubtitlesLabel; string assetName = assetLink.JobOutputs[MediaTransformPreset.AudioAnalyzer]; string fileName = Constant.Media.Track.AudioTranscript.FileName; trackSourceUrl = mediaClient.GetDownloadUrl(assetName, fileName); } if (!string.IsNullOrEmpty(trackSourceUrl)) { MediaTrack mediaTrack = new MediaTrack() { Type = trackType, Label = trackLabel, SourceUrl = trackSourceUrl }; mediaTracks.Add(mediaTrack); } } } return(mediaTracks.ToArray()); }