private static void DeleteEntities <T>(MediaClient mediaClient, MediaEntity entityType) where T : Resource { T[] entities = mediaClient.GetAllEntities <T>(entityType); foreach (T entity in entities) { if (!entity.Name.StartsWith(Constant.Media.PredefinedPrefix, StringComparison.OrdinalIgnoreCase)) { mediaClient.DeleteEntity(entityType, entity.Name); } } }
private static MediaJobInput GetJobInput(IAsset asset) { MediaJobInput jobInput = new MediaJobInput() { AssetId = asset.Id, AssetName = asset.Name, PrimaryFile = MediaClient.GetPrimaryFile(asset) }; return(jobInput); }
public static string PublishJob(MediaJobNotification jobNotification, bool webHook) { string jobPublication = string.Empty; if (jobNotification != null && jobNotification.EventType == MediaJobNotificationEvent.JobStateChange && (jobNotification.Properties.NewState == JobState.Error || jobNotification.Properties.NewState == JobState.Canceled || jobNotification.Properties.NewState == JobState.Finished)) { if (webHook) { string settingKey = Constants.AppSettingKey.MediaJobNotificationStorageQueueName; string queueName = AppSetting.GetValue(settingKey); MessageClient messageClient = new MessageClient(); messageClient.AddMessage(queueName, jobNotification); } else { EntityClient entityClient = new EntityClient(); string tableName = Constants.Storage.TableName.JobPublish; string partitionKey = jobNotification.Properties.AccountName; string rowKey = jobNotification.Properties.JobId; JobPublish jobPublish = entityClient.GetEntity <JobPublish>(tableName, partitionKey, rowKey); if (jobPublish != null) { tableName = Constants.Storage.TableName.JobPublishProtection; ContentProtection contentProtection = entityClient.GetEntity <ContentProtection>(tableName, partitionKey, rowKey); string accountName = jobPublish.PartitionKey; string accountKey = jobPublish.MediaAccountKey; MediaClient mediaClient = new MediaClient(accountName, accountKey); IJob job = mediaClient.GetEntityById(MediaEntity.Job, rowKey) as IJob; if (job != null) { mediaClient.SetProcessorUnits(job, ReservedUnitType.Basic); if (jobNotification.Properties.NewState == JobState.Finished) { PublishContent(mediaClient, job, jobPublish, contentProtection); } string messageText = GetNotificationMessage(accountName, job); MessageClient.SendText(messageText, jobPublish.MobileNumber); } if (contentProtection != null) { tableName = Constants.Storage.TableName.JobPublishProtection; entityClient.DeleteEntity(tableName, contentProtection); } tableName = Constants.Storage.TableName.JobPublish; entityClient.DeleteEntity(tableName, jobPublish); } } } return(jobPublication); }
private static MediaJobTask[] GetVideoSummarizationTasks(MediaClient mediaClient, MediaJobTask jobTask, MediaJobInput[] jobInputs) { jobTask.MediaProcessor = MediaProcessor.VideoSummarization; JObject processorConfig = GetProcessorConfig(jobTask); JToken processorOptions = processorConfig["Options"]; processorOptions["MaxMotionThumbnailDurationInSecs"] = jobTask.ProcessorConfigInteger[MediaProcessorConfig.SummarizationDurationSeconds.ToString()]; processorOptions["FadeInFadeOut"] = jobTask.ProcessorConfigBoolean[MediaProcessorConfig.SummarizationFadeTransitions.ToString()]; processorOptions["OutputAudio"] = jobTask.ProcessorConfigBoolean[MediaProcessorConfig.SummarizationIncludeAudio.ToString()]; jobTask.ProcessorConfig = processorConfig.ToString(); return(GetJobTasks(mediaClient, jobTask, jobInputs, false)); }
private static MediaJobTask[] GetEncoderTasks(MediaClient mediaClient, MediaJobTask jobTask, MediaJobInput[] jobInputs) { if (jobTask.MediaProcessor == MediaProcessor.EncoderPremium) { Array.Sort(jobInputs, OrderByWorkflow); } JObject processorConfig = GetProcessorConfig(jobTask); jobTask.ProcessorConfig = processorConfig == null ? jobTask.ProcessorConfigId : processorConfig.ToString(); bool multipleInputTask = jobTask.MediaProcessor != MediaProcessor.EncoderStandard; return(GetJobTasks(mediaClient, jobTask, jobInputs, multipleInputTask)); }
public static TokenCredentials AcquireToken(string authToken, out string subscriptionId) { string accessToken; User userProfile = new User(authToken); subscriptionId = userProfile.MediaAccount.SubscriptionId; using (MediaClient mediaClient = new MediaClient(authToken)) { AuthenticationResult authResult = MediaClientCredentials.AcquireToken(mediaClient.MediaAccount).Result; accessToken = authResult.AccessToken; } return(new TokenCredentials(accessToken)); }
private static MediaJobTask[] GetVideoAnnotationTasks(MediaClient mediaClient, MediaJobTask jobTask, MediaAssetInput[] inputAssets) { List <MediaJobTask> jobTasks = new List <MediaJobTask>(); jobTask.MediaProcessor = MediaProcessor.VideoAnnotation; string settingKey = Constants.AppSettingKey.MediaProcessorVideoAnnotationDocumentId; string documentId = AppSetting.GetValue(settingKey); JObject processorConfig = GetProcessorConfig(documentId); jobTask.ProcessorConfig = processorConfig.ToString(); MediaJobTask[] mappedJobTasks = MapJobTasks(mediaClient, jobTask, inputAssets, false); jobTasks.AddRange(mappedJobTasks); return(jobTasks.ToArray()); }
public static MediaJobPublish PublishJobOutput(string jobName, string insightId) { MediaJobAccount jobAccount; MediaJobPublish jobPublish = null; using (DatabaseClient databaseClient = new DatabaseClient()) { string collectionId = Constant.Database.Collection.MediaJobAccount; string documentId = string.IsNullOrEmpty(jobName) ? insightId : jobName; jobAccount = databaseClient.GetDocument <MediaJobAccount>(collectionId, documentId); } if (jobAccount != null) { using (MediaClient mediaClient = new MediaClient(null, jobAccount.MediaAccount)) { if (!string.IsNullOrEmpty(insightId)) { JObject insight = mediaClient.IndexerGetInsight(insightId); if (insight != null) { using (DatabaseClient databaseClient = new DatabaseClient()) { string collectionId = Constant.Database.Collection.MediaContentInsight; databaseClient.UpsertDocument(collectionId, insight); } } } else { Job job = mediaClient.GetEntity <Job>(MediaEntity.TransformJob, jobName, jobAccount.TransformName); if (job != null) { jobPublish = GetJobPublish(job); jobPublish.UserNotification.JobOutputMessage = GetNotificationMessage(job, jobAccount, jobPublish); string streamingPolicyName = PredefinedStreamingPolicy.ClearStreamingOnly; if (!string.IsNullOrEmpty(jobPublish.StreamingPolicyName)) { streamingPolicyName = jobPublish.StreamingPolicyName; } foreach (JobOutputAsset jobOutput in job.Outputs) { mediaClient.CreateLocator(jobOutput.AssetName, jobOutput.AssetName, streamingPolicyName, jobPublish.ContentProtection); } } } } } return(jobPublish); }
private static MediaJobTask GetJobTask(MediaClient mediaClient, MediaJobTask jobTask, string assetName) { jobTask.Name = Processor.GetProcessorName(jobTask.MediaProcessor); if (string.IsNullOrEmpty(jobTask.OutputAssetName)) { string outputAssetName = Path.GetFileNameWithoutExtension(assetName); jobTask.OutputAssetName = string.Concat(outputAssetName, " (", jobTask.Name, ")"); } jobTask.OutputAssetEncryption = AssetCreationOptions.None; if (jobTask.ContentProtection != null) { jobTask.OutputAssetEncryption = AssetCreationOptions.StorageEncrypted; } return(jobTask); }
public static MediaJobInput[] GetJobInputs(MediaClient mediaClient, string[] assetIds) { List <MediaJobInput> jobInputs = new List <MediaJobInput>(); foreach (string assetId in assetIds) { IAsset asset = mediaClient.GetEntityById(MediaEntity.Asset, assetId) as IAsset; if (asset != null) { MediaJobInput jobInput = GetJobInput(asset); jobInputs.Add(jobInput); } } return(jobInputs.ToArray()); }
private static MediaJobTask MapJobTask(MediaClient mediaClient, MediaJobTask jobTask, string assetName) { jobTask.Name = Processors.GetMediaProcessorName(jobTask.MediaProcessor); if (jobTask.ProcessorConfig.Contains(Constants.Media.ProcessorConfig.EncoderStandardThumbnailsFormat)) { jobTask.Name = string.Concat(jobTask.Name, " ", Constants.Media.ProcessorConfig.EncoderStandardThumbnailsPreset); } jobTask.Name = string.Concat(jobTask.Name, " (", assetName, ")"); if (string.IsNullOrEmpty(jobTask.OutputAssetName) && !string.IsNullOrEmpty(assetName)) { jobTask.OutputAssetName = assetName; } jobTask.OutputAssetEncryption = (jobTask.ContentProtection != null) ? AssetCreationOptions.StorageEncrypted : AssetCreationOptions.None; return(jobTask); }
internal static void PublishStream(MediaClient mediaClient, IAsset asset, ContentProtection contentProtection) { if (asset.IsStreamable || asset.AssetType == AssetType.MP4) { if (asset.Options == AssetCreationOptions.StorageEncrypted && asset.DeliveryPolicies.Count == 0) { mediaClient.AddDeliveryPolicies(asset, contentProtection); } if (asset.Locators.Count == 0) { LocatorType locatorType = LocatorType.OnDemandOrigin; mediaClient.CreateLocator(null, locatorType, asset, null); } } }
public static bool IsStreamingEnabled(MediaClient mediaClient) { bool streamingEnabled = false; IStreamingEndpoint[] streamingEndpoints = mediaClient.GetEntities(MediaEntity.StreamingEndpoint) as IStreamingEndpoint[]; foreach (IStreamingEndpoint streamingEndpoint in streamingEndpoints) { if (streamingEndpoint.State == StreamingEndpointState.Running || streamingEndpoint.State == StreamingEndpointState.Scaling) { streamingEnabled = true; } } return(streamingEnabled); }
public static MediaStream[] GetAccountStreams(string authToken, MediaClient mediaClient) { List <MediaStream> accountStreams = new List <MediaStream>(); IEnumerable <StreamingLocator> locators = mediaClient.GetLocators(); foreach (StreamingLocator locator in locators) { MediaStream[] mediaStreams = GetMediaStreams(authToken, mediaClient, locator); if (mediaStreams.Length > 0) { accountStreams.AddRange(mediaStreams); } } return(accountStreams.ToArray()); }
private static MediaJobTask[] GetVideoSummarizationTasks(MediaClient mediaClient, MediaJobTask jobTask, MediaAssetInput[] inputAssets) { List <MediaJobTask> jobTasks = new List <MediaJobTask>(); jobTask.MediaProcessor = MediaProcessor.VideoSummarization; string settingKey = Constants.AppSettingKey.MediaProcessorVideoSummarizationDocumentId; string documentId = AppSetting.GetValue(settingKey); JObject processorConfig = GetProcessorConfig(documentId); JToken processorOptions = processorConfig["options"]; processorOptions["maxMotionThumbnailDurationInSecs"] = jobTask.SummaryDurationSeconds; jobTask.ProcessorConfig = processorConfig.ToString(); MediaJobTask[] mappedJobTasks = MapJobTasks(mediaClient, jobTask, inputAssets, false); jobTasks.AddRange(mappedJobTasks); return(jobTasks.ToArray()); }
public MediaProcessor[] Initialize(string authToken) { MediaClient mediaClient = new MediaClient(authToken); IMediaProcessor[] mediaProcessors = mediaClient.GetEntities(MediaEntity.Processor) as IMediaProcessor[]; List <MediaProcessor> mediaProcessorList = new List <MediaProcessor>(); foreach (IMediaProcessor mediaProcessor in mediaProcessors) { MediaProcessor processorType = Processors.GetMediaProcessorType(mediaProcessor.Id); mediaProcessorList.Add(processorType); } MediaProcessor[] mediaProcessorTypes = mediaProcessorList.ToArray(); SetValue <MediaProcessor[]>(Constants.Cache.ItemKey.MediaProcessors, mediaProcessorTypes); return(mediaProcessorTypes); }
private static MediaJobTask[] GetFaceRedactionTasks(MediaClient mediaClient, MediaJobTask jobTask, MediaAssetInput[] inputAssets) { List <MediaJobTask> jobTasks = new List <MediaJobTask>(); jobTask.MediaProcessor = MediaProcessor.FaceRedaction; jobTask.Name = string.Concat(jobTask.Name, " ", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jobTask.FaceRedactionMode)); string settingKey = Constants.AppSettingKey.MediaProcessorFaceRedactionDocumentId; string documentId = AppSetting.GetValue(settingKey); JObject processorConfig = GetProcessorConfig(documentId); JToken processorOptions = processorConfig["options"]; processorOptions["mode"] = jobTask.FaceRedactionMode; jobTask.ProcessorConfig = processorConfig.ToString(); MediaJobTask[] mappedJobTasks = MapJobTasks(mediaClient, jobTask, inputAssets, false); jobTasks.AddRange(mappedJobTasks); return(jobTasks.ToArray()); }
public static Dictionary <string, string> GetStorageAccounts(string authToken) { Dictionary <string, string> storageAccounts = new Dictionary <string, string>(); using (MediaClient mediaClient = new MediaClient(authToken)) { IList <StorageAccount> mediaStorageAccounts = mediaClient.StorageAccounts; foreach (StorageAccount mediaStorageAccount in mediaStorageAccounts) { MediaStorage mediaStorage = new MediaStorage(authToken, mediaStorageAccount); string accountName = Path.GetFileName(mediaStorageAccount.Id); string accountInfo = string.Concat(accountName, mediaStorage.ToString()); storageAccounts.Add(accountName, accountInfo); } } return(storageAccounts); }
public static void PurgePublishContent(TableClient tableClient) { string tableName = Constant.Storage.Table.ContentPublish; MediaPublish[] contentPublishes = tableClient.GetEntities <MediaPublish>(tableName); foreach (MediaPublish contentPublish in contentPublishes) { string jobId = contentPublish.RowKey; MediaClient mediaClient = new MediaClient(contentPublish.MediaAccount); IJob job = mediaClient.GetEntityById(MediaEntity.Job, jobId) as IJob; if (job == null) { tableClient.DeleteEntity(tableName, contentPublish); DeleteContentProtections(tableClient, contentPublish.RowKey); } } }