예제 #1
0
        public async Task <JsonResult> Workflow(string storageAccount, string assetName, string assetDescription, string assetAlternateId, string[] fileNames,
                                                bool adaptiveStreaming, bool contentAwareEncoding, bool contentProtection, bool thumbnailImages, bool thumbnailSprite,
                                                bool videoAnalyzer, bool audioAnalyzer, bool faceDetector, bool videoIndexer, bool audioIndexer)
        {
            try
            {
                List <MediaWorkflowEntity> newEntities = new List <MediaWorkflowEntity>();
                string authToken = HomeController.GetAuthToken(Request, Response);
                using (MediaClient mediaClient = new MediaClient(authToken))
                {
                    Transform transform   = mediaClient.GetTransform(adaptiveStreaming, contentAwareEncoding, thumbnailImages, thumbnailSprite, videoAnalyzer, audioAnalyzer, faceDetector, videoIndexer, audioIndexer);
                    Asset[]   inputAssets = await mediaClient.CreateAssets(storageAccount, assetName, assetDescription, assetAlternateId, fileNames);

                    foreach (Asset inputAsset in inputAssets)
                    {
                        Job      job         = null;
                        string   insightId   = null;
                        Priority jobPriority = Priority.Normal;
                        MediaJobOutputPublish outputPublish = new MediaJobOutputPublish()
                        {
                            StreamingPolicyName = contentProtection ? PredefinedStreamingPolicy.ClearKey : PredefinedStreamingPolicy.DownloadAndClearStreaming
                        };
                        if (mediaClient.IndexerEnabled() && (videoIndexer || audioIndexer))
                        {
                            insightId = mediaClient.IndexerUploadVideo(null, inputAsset, jobPriority, videoIndexer, audioIndexer);
                        }
                        if (transform != null)
                        {
                            MediaJobOutputInsight outputInsight = new MediaJobOutputInsight()
                            {
                                Id           = insightId,
                                VideoIndexer = videoIndexer,
                                AudioIndexer = audioIndexer
                            };
                            job = mediaClient.CreateJob(transform.Name, null, null, jobPriority, null, inputAsset, null, outputPublish, outputInsight, true);
                        }
                        MediaWorkflowEntity newEntity = new MediaWorkflowEntity();
                        if (job != null)
                        {
                            newEntity.Type = MediaEntity.TransformJob;
                            newEntity.Id   = job.Id;
                            newEntity.Name = job.Name;
                        }
                        else
                        {
                            newEntity.Type = MediaEntity.Asset;
                            newEntity.Id   = inputAsset.Id;
                            newEntity.Name = inputAsset.Name;
                        }
                        newEntity.InsightId = insightId;
                        newEntities.Add(newEntity);
                    }
                }
                return(Json(newEntities.ToArray()));
            }
            catch (ApiErrorException ex)
            {
                return(new JsonResult(ex.Response.Content)
                {
                    StatusCode = (int)ex.Response.StatusCode
                });
            }
        }