Example #1
0
 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
         });
     }
 }
Example #2
0
 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
         });
     }
 }
Example #3
0
        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);
        }