Ejemplo n.º 1
0
        public async Task <VideoAnalysisResult> AnalyzeVideoAsync(string videoId, string url)
        {
            // See: https://docs.microsoft.com/en-us/azure/cognitive-services/video-indexer/video-indexer-use-apis

            VideoAnalysisResult analysisResult = null;

            try
            {
                Console.WriteLine("\t\t\tContentAnalyzer.AnalyzeVideoAsync(): initializing VideoIndexerAPI client");

                var videoIndexerApiClient = new VideoIndexerApiClient(m_VideoIndexerAPISubscriptionKey);

                Console.WriteLine("\t\t\tContentAnalyzer.AnalyzeVideoAsync(): starting analysis");

                var videoIndexerAnalysisResult = await videoIndexerApiClient.AnalyzeVideoAsync(videoId, url).ConfigureAwait(false);

                Console.WriteLine("\t\t\tContentAnalyzer.AnalyzeVideoAsync(): analysis completed");

                // Mapping VideoIndexerAPI Client entity to domain entity
                analysisResult = videoIndexerAnalysisResult.MapToDomain();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"\t\t\tContentAnalyzer.AnalyzeVideoAsync(): an error occured while analyzing video - {ex.Message}");
            }
            return(analysisResult);
        }
Ejemplo n.º 2
0
        public static VideoAnalysisResult MapToDomain(this VideoIndexerResult videoIndexerAnalysisResult)
        {
            var domainEntity = new VideoAnalysisResult()
            {
                Name              = videoIndexerAnalysisResult.name,
                Description       = videoIndexerAnalysisResult.description,
                Language          = GetLanguageFromBreakdown(videoIndexerAnalysisResult),
                Topics            = videoIndexerAnalysisResult.summarizedInsights.topics?.Select(MapToDomain).ToList(),
                Annotations       = videoIndexerAnalysisResult.summarizedInsights.annotations?.Select(MapToDomain).ToList(),
                Brands            = videoIndexerAnalysisResult.summarizedInsights.brands?.Select(MapToDomain).ToList(),
                Faces             = videoIndexerAnalysisResult.summarizedInsights.faces?.Select(MapToDomain).ToList(),
                Sentiments        = videoIndexerAnalysisResult.summarizedInsights.sentiments?.Select(MapToDomain).ToList(),
                ThumbnailUrl      = videoIndexerAnalysisResult.summarizedInsights.thumbnailUrl,
                LengthInMinutes   = (double)videoIndexerAnalysisResult.durationInSeconds / 60,
                ContentModeration = GetContentModerationFromBreakdown(videoIndexerAnalysisResult),
                Transcript        = GetTranscriptFromBreakdown(videoIndexerAnalysisResult),
                Text              = GetTextFromBreakdown(videoIndexerAnalysisResult),
            };

            return(domainEntity);
        }