Пример #1
0
        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());
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }