Como codificar com uma transformação personalizada - Azure CLIHow to encode with a custom transform - Azure CLI

logotipo de serviços de mídia v3media services logo v3


Ao codificar com o Azure Media Services, pode começar rapidamente com uma das predefinições recomendadas, com base nas melhores práticas da indústria, como demonstra o quickstart dos ficheiros streaming.When encoding with Azure Media Services, you can get started quickly with one of the recommended built-in presets, based on industry best practices, as demonstrated in the Streaming files quickstart. Também pode construir uma predefinição personalizada para direcionar o seu cenário específico ou requisitos do dispositivo.You can also build a custom preset to target your specific scenario or device requirements.

ConsideraçõesConsiderations

Ao criar predefinições personalizadas, aplicam-se as seguintes considerações:When creating custom presets, the following considerations apply:

  • Todos os valores para altura e largura no conteúdo AVC devem ser múltiplos de 4.All values for height and width on AVC content must be a multiple of 4.
  • No Azure Media Services v3, todos os bitrates codificadores estão em bits por segundo.In Azure Media Services v3, all of the encoding bitrates are in bits per second. Isto é diferente das predefinições com as nossas APIs v2, que usavam quilobits/segundo como unidade.This is different from the presets with our v2 APIs, which used kilobits/second as the unit. Por exemplo, se o bitrate em v2 fosse especificado como 128 (quilobits/segundo), em v3 seria definido para 128000 (bits/segundo).For example, if the bitrate in v2 was specified as 128 (kilobits/second), in v3 it would be set to 128000 (bits/second).

Pré-requisitosPrerequisites

Criar uma conta de Serviços de ComunicaçãoSocial.Create a Media Services account.

Lembre-se do nome do grupo de recursos e do nome da conta dos Serviços de Comunicação Social.Make sure to remember the resource group name and the Media Services account name.

Defina uma predefinição personalizadaDefine a custom preset

O exemplo a seguir define o corpo de pedido de uma nova Transformação.The following example defines the request body of a new Transform. Definimos um conjunto de saídas que queremos ser geradas quando esta Transforma é usada.We define a set of outputs that we want to be generated when this Transform is used.

Neste exemplo, primeiro adicionamos uma camada AacAudio para a codificação de áudio e duas camadas H264Video para a codificação de vídeo.In this example, we first add an AacAudio layer for the audio encoding and two H264Video layers for the video encoding. Nas camadas de vídeo, atribuímos etiquetas para que possam ser usadas nos nomes dos ficheiros de saída.In the video layers, we assign labels so that they can be used in the output file names. Em seguida, queremos que a saída também inclua miniaturas.Next, we want the output to also include thumbnails. No exemplo abaixo especificamos imagens em formato PNG, geradas a 50% da resolução do vídeo de entrada, e em três vezes osmps - {25%, 50%, 75} do comprimento do vídeo de entrada.In the example below we specify images in PNG format, generated at 50% of the resolution of the input video, and at three timestamps - {25%, 50%, 75} of the length of the input video. Por último, especificamos o formato para os ficheiros de saída - um para vídeo + áudio e outro para as miniaturas.Lastly, we specify the format for the output files - one for video + audio, and another for the thumbnails. Como temos vários H264Layers, temos de usar macros que produzem nomes únicos por camada.Since we have multiple H264Layers, we have to use macros that produce unique names per layer. Podemos usar um {Label} ou {Bitrate} macro, o exemplo mostra o primeiro.We can either use a {Label} or {Bitrate} macro, the example shows the former.

Vamos salvar esta transformação num ficheiro.We are going to save this transform in a file. Neste exemplo, damos o nome ao customPreset.json ficheiro.In this example, we name the file customPreset.json.

{
    "@odata.type": "#Microsoft.Media.StandardEncoderPreset",
    "codecs": [
        {
            "@odata.type": "#Microsoft.Media.AacAudio",
            "channels": 2,
            "samplingRate": 48000,
            "bitrate": 128000,
            "profile": "AacLc"
        },
        {
            "@odata.type": "#Microsoft.Media.H264Video",
            "keyFrameInterval": "PT2S",
            "stretchMode": "AutoSize",
            "sceneChangeDetection": false,
            "complexity": "Balanced",
            "layers": [
                {
                    "width": "1280",
                    "height": "720",
                    "label": "HD",
                    "bitrate": 3400000,
                    "maxBitrate": 3400000,
                    "bFrames": 3,
                    "slices": 0,
                    "adaptiveBFrame": true,
                    "profile": "Auto",
                    "level": "auto",
                    "bufferWindow": "PT5S",
                    "referenceFrames": 3,
                    "entropyMode": "Cabac"
                },
                {
                    "width": "640",
                    "height": "360",
                    "label": "SD",
                    "bitrate": 1000000,
                    "maxBitrate": 1000000,
                    "bFrames": 3,
                    "slices": 0,
                    "adaptiveBFrame": true,
                    "profile": "Auto",
                    "level": "auto",
                    "bufferWindow": "PT5S",
                    "referenceFrames": 3,
                    "entropyMode": "Cabac"
                }
            ]
        },
        {
            "@odata.type": "#Microsoft.Media.PngImage",
            "stretchMode": "AutoSize",
            "start": "25%",
            "step": "25%",
            "range": "80%",
            "layers": [
                {
                    "width": "50%",
                    "height": "50%"
                }
            ]
        }
    ],
    "formats": [
        {
            "@odata.type": "#Microsoft.Media.Mp4Format",
            "filenamePattern": "Video-{Basename}-{Label}-{Bitrate}{Extension}",
            "outputFiles": []
        },
        {
            "@odata.type": "#Microsoft.Media.PngFormat",
            "filenamePattern": "Thumbnail-{Basename}-{Index}{Extension}"
        }
    ]
}

Criar uma nova transformaçãoCreate a new transform

Neste exemplo, criamos uma Transformação que se baseia na predefinição personalizada que definimos anteriormente.In this example, we create a Transform that is based on the custom preset we defined earlier. Ao criar uma Transform, deve primeiro verificar se já existe uma.When creating a Transform, you should first check if one already exist. Se a Transformação existe, reutilizá-la.If the Transform exists, reuse it. O seguinte show comando devolve a customTransformName transformação se existir:The following show command returns the customTransformName transform if it exists:

az ams transform show -a amsaccount -g amsResourceGroup -n customTransformName

O seguinte comando Azure CLI cria a Transformação com base na predefinição personalizada (definida anteriormente).The following Azure CLI command creates the Transform based on the custom preset (defined earlier).

az ams transform create -a amsaccount -g amsResourceGroup -n customTransformName --description "Basic Transform using a custom encoding preset" --preset customPreset.json

Para que os Serviços de Comunicação Social apliquem a Transformação ao vídeo ou áudio especificado, é necessário submeter um Job ao abrigo dessa Transformação.For Media Services to apply the Transform to the specified video or audio, you need to submit a Job under that Transform. Para um exemplo completo que mostre como submeter um trabalho sob uma transformação, consulte Quickstart: Stream video files - Azure CLI.For a complete example that shows how to submit a job under a transform, see Quickstart: Stream video files - Azure CLI.

Ver tambémSee also

CLI do AzureAzure CLI