What causes encoding error While using append blob?

Viewed 109

So problem in my situation is that blob with BlobType:BlockBlob is encoding successfully while creating output asset, but BlobType with AppendBlob not encoding... I am appending 4mb chunks..

  1. Creating InputAsset
    var asset = await _client.Assets.CreateOrUpdateAsync(_apiAccess.ResourceGroup, _apiAccess.AccountName,
                    request.InputAssetName,
                    new Microsoft.Azure.Management.Media.Models.Asset(container: request.InputAssetContainer));
    
    var response = await _client.Assets.ListContainerSasAsync(_apiAccess.ResourceGroup, _apiAccess.AccountName,
                    request.InputAssetName,
                    permissions: AssetContainerPermission.ReadWrite,
                    expiryTime: DateTime.UtcNow.AddHours(4).ToUniversalTime());
    
                request.InputAssetStorageUri = new Uri(response.AssetContainerSasUrls.First());
    
                await AppendBlobAsync(request);
    
                return asset;

2)AppendBlobAsync Method which actually append 4mb chunk

 BlobServiceClient blobServiceClient = new BlobServiceClient("conn");
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(request.InputAssetContainer);
            await containerClient.CreateIfNotExistsAsync();
            //There we would have stream
            var appendBlobClient = containerClient.GetAppendBlobClient(request.BlobName);
            await appendBlobClient.CreateIfNotExistsAsync();
            //await using var memoryStream = new MemoryStream();
            //await request.File.CopyToAsync(memoryStream);
            //memoryStream.Position = 0;

            var file =  File.OpenRead("C:\\Projects\\TestChunk.mp4");
            Stream stream = new MemoryStream();
            file.CopyTo(stream);
            stream.Position = 0;
            await appendBlobClient.AppendBlockAsync(stream);

3)Creating Output asset

public async Task<Asset> CreateOutputAssetAsync(MediaServiceRequest request)
        => await _client.Assets.CreateOrUpdateAsync(_apiAccess.ResourceGroup, _apiAccess.AccountName,
            request.OutputAssetName, new Microsoft.Azure.Management.Media.Models.Asset())

4)Encoding

  public async Task<Job> EncodeAsync(MediaServiceRequest request)
        {
            JobInput jobInput = new JobInputAsset(assetName: request.InputAssetName);

            JobOutput[] jobOutputs =
            {
                new JobOutputAsset(request.OutputAssetName),
            };

            return await _client.Jobs.CreateAsync(
                _apiAccess.ResourceGroup,
                _apiAccess.AccountName,
                request.TransformerName,
                request.JobName,
                new Job
                {
                    Input = jobInput,
                    Outputs = jobOutputs,
                });
        }

Please help...

0 Answers
Related