Prerequisites
- Ensure you have installed the Azure Media Services SDK for .NET. This is important for interacting with Azure Media Services API effectively using C#.
- Ensure you have all the necessary authentication details such as Tenant ID, Client ID, Client Secret, and Subscription ID.
Setting Up the Development Environment
- Make sure to include references to Azure.Identity and Azure.Media.Services.CloudMediaContext libraries in your project for authentication and API management.
- These libraries help in handling OAuth2 authentication and provide classes and methods to work with Azure Media Services.
Authenticating and Creating a Media Services Client
In order to work with Media Services, first authenticate and create a client.
using Azure.Identity;
using Azure.ResourceManager.Media;
using Azure.ResourceManager;
using Azure.ResourceManager.Media.Models;
// Authentication
var defaultAzureCredential = new DefaultAzureCredential();
// Create a Media Services Client
var armClient = new ArmClient(defaultAzureCredential);
// Use the subscription ID
var subscription = armClient.GetSubscriptionResource("<your-subscription-id>");
var mediaServices = subscription.GetMediaServices();
Accessing Media Assets
Once authenticated, navigate and manage assets in Azure Media Services:
var mediaService = await mediaServices.GetMediaServiceAsync("<resource-group-name>", "<account-name>");
// List media assets
await foreach (var asset in mediaService.Value.GetAssets())
{
Console.WriteLine(asset.Data.Name);
}
Creating and Managing Assets
To create an asset:
var assetContainer = mediaService.Value.GetAssets();
var asset = await assetContainer.CreateOrUpdateAsync(WaitUntil.Completed, "<asset-name>", new MediaAssetData());
Console.WriteLine($"Asset created with name: {asset.Value.Data.Name}");
Uploading Files to an Asset
To upload files to the media asset:
var assetName = "<asset-name>";
var containerSasUrl = asset.Value.GetStreamingLocatorsUri(0).AbsoluteUri;
// Use Azure.Storage.Blobs to upload files
BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerSasUrl));
// Upload a file to the container
BlobClient blobClient = containerClient.GetBlobClient("filename.mp4");
await blobClient.UploadAsync("path/to/local/file.mp4", true);
Encoding the Media
To encode a media file:
var transformation = await mediaService.Value.GetTransformations().CreateOrUpdateAsync(
WaitUntil.Completed,
"AdaptiveH264Transform",
new MediaTransformerData()
{
Outputs = { new MediaOutput(PredefinedLowStandardEncoderPreset.AdaptiveStreaming) }
});
Console.WriteLine("Transform created.");
// Start encoding
var jobName = "encoding-job";
var job = await mediaService.Value.GetJobs().CreateOrUpdateAsync(WaitUntil.Completed,
transformation.Value.Data.Name, jobName, new MediaJobData());
Console.WriteLine($"Job started: {job.Value.Data.Name}");
Conclusion
- This guide demonstrates how to access and manage Microsoft Azure Media Services using C#. It involves authentication, asset management, file uploading, and media encoding.
- For more comprehensive and advanced tasks, refer to the Azure Media Services documentation.