Example #1
0
        public async Task <Job> CreateEncodeJobAsync(IZeroBlob original, string encodedFileName, int contentId, CancellationToken cancellationToken)
        {
            var extension = Path.GetExtension(original.GetName());

            if (extension == null || !_settings.SupportedVideoTypes.Contains(extension.ToLower()))
            {
                throw new NotSupportedException("Video type not supported");
            }
            string uniqueness      = $"{contentId}-{Guid.NewGuid().ToString("N").Substring(0, 10)}";
            string jobName         = $"job-{uniqueness}";
            string outputAssetName = $"output-{uniqueness}";
            var    output          = new Asset(description: $"{contentId}-{encodedFileName}");
            var    outPutAsset     = await _client.Assets.CreateOrUpdateAsync(_settings.ResourceGroup, _settings.AccountName, outputAssetName, output, cancellationToken);

            JobOutput[] jobOutputs =
            {
                new JobOutputAsset(outPutAsset.Name)
            };
            var jobInput = new JobInputHttp
            {
                Files = new[] { original.GetReadSharedAccessUrl("*") }
            };
            IDictionary <string, string> correlationData = null; // Add custom data sent with the job. Can then be used when processing it.
            var job = await _client.Jobs.CreateAsync(
                _settings.ResourceGroup,
                _settings.AccountName,
                _settings.MediaServicesTransform,
                jobName,
                new Job
            {
                Input           = jobInput,
                Outputs         = jobOutputs,
                CorrelationData = correlationData
            }
                , cancellationToken);

            return(job);
        }