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..
- 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...