public static Job CreateJob([ActivityTrigger] DurableActivityContext context) { ValueTuple <MediaWorkflowManifest, string, Asset> jobInput = context.GetInput <(MediaWorkflowManifest, string, Asset)>(); MediaWorkflowManifest workflowManifest = jobInput.Item1; string inputFileUrl = jobInput.Item2; Asset inputAsset = jobInput.Item3; Job job = null; string insightId = null; MediaClient mediaClient = new MediaClient(workflowManifest); bool videoIndexer = workflowManifest.TransformPresets.Contains <MediaTransformPreset>(MediaTransformPreset.VideoIndexer); bool audioIndexer = workflowManifest.TransformPresets.Contains <MediaTransformPreset>(MediaTransformPreset.AudioIndexer); if (mediaClient.IndexerEnabled() && (videoIndexer || audioIndexer)) { insightId = mediaClient.IndexerUploadVideo(inputFileUrl, inputAsset, workflowManifest.JobPriority, videoIndexer, audioIndexer); } Transform transform = mediaClient.GetTransform(workflowManifest.TransformPresets); if (transform != null) { MediaJobOutputInsight outputInsight = new MediaJobOutputInsight() { Id = insightId, VideoIndexer = videoIndexer, AudioIndexer = audioIndexer }; job = mediaClient.CreateJob(transform.Name, workflowManifest.JobName, null, workflowManifest.JobPriority, inputFileUrl, inputAsset, workflowManifest.OutputAssetStorage, workflowManifest.JobOutputPublish, outputInsight, false); } return(job); }
public JsonResult Save(string transformName, string transformDescription, MediaTransformOutput[] transformOutputs, Image thumbnailCodec) { try { Transform transform; string authToken = HomeController.GetAuthToken(Request, Response); using (MediaClient mediaClient = new MediaClient(authToken)) { transform = mediaClient.GetTransform(transformName, transformDescription, transformOutputs, thumbnailCodec, true); } return(Json(transform)); } catch (ValidationException ex) { Error error = new Error() { Type = HttpStatusCode.BadRequest, Message = ex.Message }; return(new JsonResult(error) { StatusCode = (int)error.Type }); } catch (ApiErrorException ex) { return(new JsonResult(ex.Response.Content) { StatusCode = (int)ex.Response.StatusCode }); } }
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 }); } }