Membuat pekerjaan dengan beberapa output transformasi

logo layanan media v3


Sedang mencari dokumentasi Media Services v2?

Topik ini menunjukkan cara membuat Transformasi dengan dua Output Transformasi. Yang pertama meminta input yang akan dikodekan untuk streaming laju bit adaptif dengan preset AdaptiveStreaming bawaan. Yang kedua memanggil sinyal audio dalam video input untuk diproses dengan AudioAnalyzerPreset. Setelah Transformasi dibuat, Anda dapat mengirimkan pekerjaan yang akan memproses video Anda. Karena dalam contoh ini kita menentukan dua Output Transformasi, kita harus menentukan dua Output Pekerjaan. Anda dapat memilih untuk mengarahkan Kedua Output Pekerjaan ke Aset yang sama (seperti yang ditunjukkan di bawah), atau Anda dapat menulis hasilnya untuk memisahkan Aset.

Tip

Sebelum Anda mulai mengembangkan, ulas Pengembangan dengan API Azure Media Services v3 (termasuk informasi tentang mengakses API, konvensi penamaan, dll.)

Membuat transformasi

Kode berikut menunjukkan cara membuat transformasi yang menghasilkan dua output.

private static async Task<Transform> GetOrCreateTransformAsync(
    IAzureMediaServicesClient client,
    string resourceGroupName,
    string accountName,
    string transformName)
{
    // Does a Transform already exist with the desired name? Assume that an existing Transform with the desired name
    // also uses the same recipe or Preset for processing content.
    Transform transform = await client.Transforms.GetAsync(resourceGroupName, accountName, transformName);

    if (transform == null)
    {
        // You need to specify what you want it to produce as an output
        TransformOutput[] output = new TransformOutput[]
        {
            new TransformOutput
            {
                Preset = new BuiltInStandardEncoderPreset()
                {
                    // This sample uses the built-in encoding preset for Adaptive Bitrate Streaming.
                    PresetName = EncoderNamedPreset.AdaptiveStreaming
                }
            },
            // Create an analyzer preset with video insights.
            new TransformOutput(new AudioAnalyzerPreset("en-US"))
        };

        // Create the Transform with the output defined above
        transform = await client.Transforms.CreateOrUpdateAsync(resourceGroupName, accountName, transformName, output);
    }

    return transform;
}

Mengirim pekerjaan

Buat pekerjaan dengan input URL HTTPS dan dengan dua output pekerjaan.

private static async Task<Job> SubmitJobAsync(IAzureMediaServicesClient client,
    string resourceGroup,
    string accountName,
    string transformName)
{
    // Output from the encoding Job must be written to an Asset, so let's create one
    string outputAssetName1 = $"output-" + Guid.NewGuid().ToString("N");
    Asset outputAsset = await client.Assets.CreateOrUpdateAsync(resourceGroup, accountName, outputAssetName1, new Asset());

    // This example shows how to encode from any HTTPs source URL - a new feature of the v3 API.  
    // Change the URL to any accessible HTTPs URL or SAS URL from Azure.
    JobInputHttp jobInput =
        new JobInputHttp(files: new[] { "https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/Ignite-short.mp4" });

    JobOutput[] jobOutputs =
    {
        // Since we are specifying two Transform Outputs, two Job Outputs are needed.
        // In this example, the first Job Output is for the results from adaptive bitrate encoding,
        // and the second is for the results from audio analysis. In this example, both are written to the
        // same output Asset. Or, you can specify different Assets.
        
        new JobOutputAsset(outputAsset.Name),
        new JobOutputAsset(outputAsset.Name)

    };

    // In this example, we are using a unique job name.
    //
    // If you already have a job with the desired name, use the Jobs.Get method
    // to get the existing job. In Media Services v3, Get methods on entities returns null 
    // if the entity doesn't exist (a case-insensitive check on the name).
    Job job;
    try
    {
        string jobName = $"job-" + Guid.NewGuid().ToString("N");
        job = await client.Jobs.CreateAsync(
                    resourceGroup,
                    accountName,
                    transformName,
                    jobName,
                    new Job
                    {
                        Input = jobInput,
                        Outputs = jobOutputs,
                    });
    }
    catch (Exception exception)
    {
        if (exception.GetBaseException() is ApiErrorException apiException)
        {
            Console.Error.WriteLine(
                $"ERROR: API call failed with error code '{apiException.Body.Error.Code}' and message '{apiException.Body.Error.Message}'.");
        }
        throw exception;
    }

    return job;
}

Kode galat pekerjaan

Lihat Kode galat.

Langkah berikutnya

Sampel Azure Media Services v3 menggunakan .NET