public JsonResult Create(string transformName, string jobName, string jobDescription, Priority jobPriority, string jobData, string inputFileUrl, string inputAssetName, MediaJobOutputMode outputAssetMode, string streamingPolicyName) { try { Job job = null; string authToken = HomeController.GetAuthToken(Request, Response); using (MediaClient mediaClient = new MediaClient(authToken)) { bool videoAnalyzerPreset = false; bool audioAnalyzerPreset = false; Transform transform = mediaClient.GetEntity <Transform>(MediaEntity.Transform, transformName); foreach (TransformOutput transformOutput in transform.Outputs) { if (transformOutput.Preset is VideoAnalyzerPreset) { videoAnalyzerPreset = true; } else if (transformOutput.Preset is AudioAnalyzerPreset) { audioAnalyzerPreset = true; } } string insightId = null; Asset inputAsset = null; string assetDescription = null; if (!string.IsNullOrEmpty(inputAssetName)) { inputAsset = mediaClient.GetEntity <Asset>(MediaEntity.Asset, inputAssetName); assetDescription = inputAsset.Description; } if (mediaClient.IndexerEnabled() && (videoAnalyzerPreset || audioAnalyzerPreset)) { bool audioOnly = !videoAnalyzerPreset && audioAnalyzerPreset; insightId = mediaClient.IndexerUploadVideo(mediaClient.MediaAccount, inputAsset, null, jobPriority, true, audioOnly); } if (!string.IsNullOrEmpty(transformName)) { if (string.IsNullOrEmpty(inputFileUrl) && inputAsset != null) { StorageBlobClient blobClient = new StorageBlobClient(mediaClient.MediaAccount, inputAsset.StorageAccountName); MediaAsset mediaAsset = new MediaAsset(mediaClient, inputAsset); string fileName = mediaAsset.Files[0].Name; inputFileUrl = blobClient.GetDownloadUrl(inputAsset.Container, fileName, false); } string[] assetDescriptions = new string[] { assetDescription }; string[] assetAlternateIds = new string[] { insightId }; job = mediaClient.CreateJob(authToken, transformName, jobName, jobDescription, jobPriority, jobData, inputFileUrl, inputAssetName, outputAssetMode, assetDescriptions, assetAlternateIds, streamingPolicyName); } } return(Json(job)); } catch (ApiErrorException ex) { return(new JsonResult(ex.Response.Content) { StatusCode = (int)ex.Response.StatusCode }); } }
public JsonResult Workflow(string storageAccount, string assetName, string assetDescription, string assetAlternateId, string[] fileNames, bool adaptiveStreaming, bool thumbnailImages, bool videoAnalyzer, bool audioAnalyzer, bool videoIndexer, bool audioIndexer) { try { Asset[] inputAssets; List <Job> jobs = new List <Job>(); string authToken = HomeController.GetAuthToken(Request, Response); using (MediaClient mediaClient = new MediaClient(authToken)) { Transform transform = mediaClient.CreateTransform(adaptiveStreaming, thumbnailImages, videoAnalyzer, audioAnalyzer, videoIndexer, audioIndexer); inputAssets = CreateInputAssets(mediaClient, storageAccount, assetName, assetDescription, assetAlternateId, fileNames); foreach (Asset inputAsset in inputAssets) { Job job = null; string insightId = null; if (mediaClient.IndexerEnabled() && (videoIndexer || audioIndexer)) { bool audioOnly = !videoIndexer && audioIndexer; insightId = mediaClient.IndexerUploadVideo(mediaClient.MediaAccount, inputAsset, null, Priority.Normal, true, audioOnly); } if (transform != null) { StorageBlobClient blobClient = new StorageBlobClient(mediaClient.MediaAccount, inputAsset.StorageAccountName); MediaAsset mediaAsset = new MediaAsset(mediaClient, inputAsset); string fileName = mediaAsset.Files[0].Name; string inputFileUrl = blobClient.GetDownloadUrl(inputAsset.Container, fileName, false); MediaJobOutputMode outputAssetMode = MediaJobOutputMode.SingleAsset; string[] outputAssetDescriptions = new string[] { assetDescription }; string[] outputAssetAlternateIds = new string[] { insightId }; PredefinedStreamingPolicy streamingPolicy = PredefinedStreamingPolicy.ClearStreamingOnly; job = mediaClient.CreateJob(authToken, transform.Name, null, null, Priority.Normal, null, inputFileUrl, inputAsset.Name, outputAssetMode, outputAssetDescriptions, outputAssetAlternateIds, streamingPolicy); } if (job != null) { if (!string.IsNullOrEmpty(insightId)) { job.CorrelationData.Add("insightId", insightId); } jobs.Add(job); } else { inputAsset.AlternateId = insightId; } } } return(jobs.Count > 0 ? Json(jobs.ToArray()) : Json(inputAssets)); } catch (ApiErrorException ex) { return(new JsonResult(ex.Response.Content) { StatusCode = (int)ex.Response.StatusCode }); } }
public Job CreateJob(string authToken, string transformName, string jobName, string jobDescription, Priority jobPriority, string jobData, string inputFileUrl, string inputAssetName, MediaJobOutputMode outputAssetMode, string[] outputAssetDescriptions, string[] outputAssetAlternateIds, string streamingPolicyName) { JObject jobPublish = GetJobPublish(authToken, jobData, streamingPolicyName); MediaJob mediaJob = new MediaJob() { Name = jobName, Description = jobDescription, Priority = jobPriority, Data = jobPublish, InputFileUrl = inputFileUrl, InputAssetName = inputAssetName, OutputAssetMode = outputAssetMode, OutputAssetDescriptions = outputAssetDescriptions, OutputAssetAlternateIds = outputAssetAlternateIds }; Job job = CreateJob(transformName, mediaJob); MediaJobAccount jobAccount = new MediaJobAccount() { JobName = job.Name, TransformName = transformName, MediaAccount = MediaAccount }; using (DatabaseClient databaseClient = new DatabaseClient()) { string collectionId = Constant.Database.Collection.MediaJobAccount; databaseClient.UpsertDocument(collectionId, jobAccount); } return(job); }