Comment encoder avec une transformation personnalisée - CLIHow to encode with a custom transform - CLI

Lors de l’encodage avec Azure Media Services, vous pouvez commencer rapidement avec l’un des préréglages intégrés recommandés et basés sur les bonnes pratiques, comme illustré dans le démarrage rapide Streaming de fichiers.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. Vous pouvez également créer un préréglage personnalisé pour les besoins de votre scénario ou votre appareil.You can also build a custom preset to target your specific scenario or device requirements.

ConsidérationsConsiderations

Lorsque vous créez des préréglages personnalisés, les considérations suivantes s’appliquent :When creating custom presets, the following considerations apply:

  • Toutes les valeurs de hauteur et de largeur de contenu AVC doivent être un multiple de 4.All values for height and width on AVC content must be a multiple of 4.
  • Dans Azure Media Services v3, toutes les vitesses d’encodage sont données en bits par seconde.In Azure Media Services v3, all of the encoding bitrates are in bits per second. Cela diffère des préréglages avec nos API v2, qui utilisaient des kilobits par seconde comme unité.This is different from the presets with our v2 APIs, which used kilobits/second as the unit. Par exemple, si la vitesse de transmission dans v2 était de 128 (kilobits/seconde), elle sera définie sur 12 8000 (bits/seconde) dans v3.For example, if the bitrate in v2 was specified as 128 (kilobits/second), in v3 it would be set to 128000 (bits/second).

PrérequisPrerequisites

Créer un compte Media Services.Create a Media Services account.
Veillez à mémoriser le nom du groupe de ressources et le nom du compte Media Services.Make sure to remember the resource group name and the Media Services account name.

Utiliser l’interpréteur de commandes CLIUse CLI Shell

Il est recommandé d’utiliser Azure Cloud Shell pour exécuter des commandes CLI.It is recommended to use Azure Cloud Shell to execute CLI commands. Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour effectuer les étapes mentionnées dans cet article.Cloud Shell is a free, interactive shell that you can use to run the steps in this article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Il vous donne la possibilité de choisir l’expérience d’interpréteur de commandes la plus adaptée à votre façon de travailler.It provides the flexibility of choosing the shell experience that best suits the way you work. Les utilisateurs Linux peuvent choisir une expérience Bash, et les utilisateurs Windows l’option PowerShell.Linux users can opt for a Bash experience, while Windows users can opt for PowerShell.

Vous pouvez également installer l’interface CLI localement.You can also install the CLI locally. Consultez Installer Azure CLI pour obtenir des instructions pour votre plateforme.See Install the Azure CLI for instructions for your platform.

Se connecterSign in

L’utilisation d’une installation locale de l’interface CLI exige une connexion à Azure.Using a local install of the CLI requires signing in to Azure. Cette étape n’est pas obligatoire pour Azure Cloud Shell.This step is not required for Azure Cloud Shell. Connectez-vous avec la commande az login.Sign in with the az login command.

Si l’interface CLI peut ouvrir votre navigateur par défaut, elle le fera et chargera une page de connexion par la même occasion.If the CLI can open your default browser, it will do so and load a sign-in page. Sinon, vous devez ouvrir une page de navigateur et suivre les instructions sur la ligne de commande pour entrer un code d’autorisation après avoir accédé à https://aka.ms/devicelogin dans votre navigateur.Otherwise, you need to open a browser page and follow the instructions on the command line to enter an authorization code after navigating to https://aka.ms/devicelogin in your browser.

Spécifier l’emplacement des fichiersSpecify location of files

De nombreuses commandes CLI Media Services vous permettent de passer un paramètre avec un nom de fichier.Many Media Services CLI commands allow you to pass a parameter with a file name. Si vous utilisez Cloud Shell, vous pouvez charger votre fichier sur votre clouddrive (à l'aide de Bash ou de PowerShell).If you are using Cloud Shell, you can upload your file to your clouddrive (using Bash or PowerShell).

Charger des fichiers

Que vous utilisiez une interface CLI locale ou Cloud Shell, vous devez spécifier le chemin du fichier en fonction du système d'exploitation ou du Cloud Shell (Bash ou PowerShell) que vous utilisez.Whether you are using a local CLI or Cloud Shell, you need to specify the file path according to the OS or Cloud Shell (Bash or PowerShell) that you are using. Vous trouverez quelques exemples ci-dessous :Below are some examples:

Chemin d'accès relatif du fichier (tous les systèmes d'exploitation)Relative path to the file (all OS)

  • @"mytestfile.json"
  • @"../mytestfile.json"

Chemin d'accès absolu du fichier sous Linux/Mac et WindowsAbsolute file path on Linux/Mac and Windows OS

  • @ "/usr/home/mytestfile.json"
  • @"c:\tmp\user\mytestfile.json"

Utilisez {file} si la commande demande un chemin vers le fichier.Use {file} if the command is asking for a path to the file. Par exemple : az ams transform create -a amsaccount -g resourceGroup -n custom --preset .\customPreset.json.For example, az ams transform create -a amsaccount -g resourceGroup -n custom --preset .\customPreset.json.
Utilisez @{file} si la commande va charger le fichier spécifié.Use @{file} if the command is going to load the specified file. Par exemple : az ams account-filter create -a amsaccount -g resourceGroup -n filterName --tracks @tracks.json.For example, az ams account-filter create -a amsaccount -g resourceGroup -n filterName --tracks @tracks.json.

Définir un préréglage personnaliséDefine a custom preset

L’exemple suivant définit le corps de la demande d’une nouvelle transformation.The following example defines the request body of a new Transform. Nous définissons un ensemble de sorties à générer lorsque cette transformation est utilisée.We define a set of outputs that we want to be generated when this Transform is used.

Dans cet exemple, nous ajoutons tout d’abord une couche AacAudio pour l’encodage audio et deux couches H264Video pour l’encodage vidéo.In this example, we first add an AacAudio layer for the audio encoding and two H264Video layers for the video encoding. Dans les couches vidéo, nous attribuons des étiquettes pour pouvoir les utiliser dans les noms de fichiers de sortie.In the video layers, we assign labels so that they can be used in the output file names. Nous souhaitons ensuite que la sortie inclue également des miniatures.Next, we want the output to also include thumbnails. Dans l’exemple ci-dessous, nous spécifions des images au format PNG, générées à 50 % de la résolution de la vidéo d’entrée et à trois horodatages {25 %, 50 %, 75} de la longueur de la vidéo d’entrée.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. Pour fini, nous spécifions le format des fichiers de sortie : un pour la vidéo + audio et un autre pour les miniatures.Lastly, we specify the format for the output files - one for video + audio, and another for the thumbnails. Étant donné que nous avons plusieurs couches H264, nous devons utiliser des macros qui produisent des noms uniques par couche.Since we have multiple H264Layers, we have to use macros that produce unique names per layer. Nous pouvons utiliser une macro {Label} ou {Bitrate} ; l’exemple montre la première.We can either use a {Label} or {Bitrate} macro, the example shows the former.

Nous enregistrons cette transformation dans un fichier.We are going to save this transform in a file. Dans cet exemple, nous nommons ce fichier customPreset.json.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}"
        }
    ]
}

Créer une transformationCreate a new transform

Dans cet exemple, nous créons une transformation qui repose sur le préréglage personnalisé que nous avons défini précédemment.In this example, we create a Transform that is based on the custom preset we defined earlier. Lorsque vous créez une transformation, vous devez tout d’abord vérifier s’il en existe déjà une.When creating a Transform, you should first check if one already exist. Si la transformation existe, réutilisez-la.If the Transform exists, reuse it. La commande suivante show retourne la transformation customTransformName, si elle existe :The following show command returns the customTransformName transform if it exists:

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

La commande CLI suivante crée la transformation en fonction de la présélection personnalisée (définie plus tôt).The following 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

Pour que la plateforme Media Services applique la transformation au fichier vidéo ou audio spécifié, vous devez soumettre un travail relevant de cette transformation.For Media Services to apply the Transform to the specified video or audio, you need to submit a Job under that Transform. Pour obtenir un exemple complet illustrant la soumission d’un travail relevant d’une transformation, consultez le Démarre rapide : Diffuser des fichiers vidéo en streaming - CLI.For a complete example that shows how to submit a job under a transform, see Quickstart: Stream video files - CLI.

Voir aussiSee also

Interface de ligne de commande AzureAzure CLI