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); }
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); }