Share via


Tutorial: Codificar um ficheiro remoto com base no URL e transmitir o vídeo - CLI do Azure

Logótipo dos Serviços de Multimédia v3


Aviso

Os Serviços de Multimédia do Azure serão descontinuados a 30 de junho de 2024. Para obter mais informações, veja o Guia de Extinção do AMS.

Este tutorial mostra como codificar e transmitir vídeos facilmente em vários browsers e dispositivos com os Serviços de Multimédia do Azure e a CLI do Azure. Pode especificar conteúdo de entrada através de URLs HTTPS ou SAS ou caminhos para ficheiros no armazenamento de Blobs do Azure.

O exemplo neste artigo codifica o conteúdo que torna acessível através de um URL HTTPS. Atualmente, os Serviços de Multimédia v3 não suportam a codificação de transferência segmentada através de URLs HTTPS.

No final deste tutorial, poderá transmitir um vídeo em fluxo.

Reproduzir o vídeo

Criar uma conta dos Media Services

Antes de poder encriptar, codificar, analisar, gerir e transmitir conteúdo multimédia em fluxo no Azure, tem de criar uma conta dos Serviços de Multimédia. Essa conta tem de estar associada a uma ou mais contas de armazenamento.

A sua conta dos Serviços de Multimédia e todas as contas de armazenamento associadas têm de estar na mesma subscrição do Azure. Recomendamos que utilize contas de armazenamento que estejam no mesmo local que a conta dos Serviços de Multimédia para limitar os custos de latência e saída de dados.

Criar um grupo de recursos

az group create -n amsResourceGroup -l westus2

Criar uma conta de armazenamento do Azure

Neste exemplo, vamos criar um General-Purpose conta LRS Standard v2.

Se quiser experimentar contas de armazenamento, utilize --sku Standard_LRS. Quando estiver a escolher um SKU para produção, considere utilizar --sku Standard_RAGRSo , que fornece replicação geográfica para a continuidade do negócio. Para obter mais informações, veja Contas de armazenamento.

az storage account create -n amsstorageaccount --kind StorageV2 --sku Standard_LRS -l westus2 -g amsResourceGroup

Criar uma conta dos Media Services do Azure

az ams account create --n amsaccount -g amsResourceGroup --storage-account amsstorageaccount -l westus2

Obtém uma resposta como esta:

{
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount",
  "location": "West US 2",
  "mediaServiceId": "8b569c2e-d648-4fcb-9035-c7fcc3aa7ddf",
  "name": "amsaccount",
  "resourceGroup": "amsResourceGroupTest",
  "storageAccounts": [
    {
      "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Storage/storageAccounts/amsstorageaccount",
      "resourceGroup": "amsResourceGroupTest",
      "type": "Primary"
    }
  ],
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Iniciar o ponto final da transmissão em fluxo

O seguinte comando da CLI do Azure inicia o Ponto Final de Transmissão em Fluxo predefinido.

az ams streaming-endpoint start  -n default -a amsaccount -g amsResourceGroup

Obtém uma resposta como esta:

{
  "accessControl": null,
  "availabilitySetName": null,
  "cdnEnabled": true,
  "cdnProfile": "AzureMediaStreamingPlatformCdnProfile-StandardVerizon",
  "cdnProvider": "StandardVerizon",
  "created": "2019-02-06T21:58:03.604954+00:00",
  "crossSiteAccessPolicies": null,
  "customHostNames": [],
  "description": "",
  "freeTrialEndTime": "2019-02-21T22:05:31.277936+00:00",
  "hostName": "amsaccount-usw22.streaming.media.azure.net",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/streamingendpoints/default",
  "lastModified": "2019-02-06T21:58:03.604954+00:00",
  "location": "West US 2",
  "maxCacheAge": null,
  "name": "default",
  "provisioningState": "Succeeded",
  "resourceGroup": "amsResourceGroup",
  "resourceState": "Running",
  "scaleUnits": 0,
  "tags": {},
  "type": "Microsoft.Media/mediaservices/streamingEndpoints"
}

Se o ponto final de transmissão em fluxo já estiver em execução, receberá esta mensagem:

(InvalidOperation) The server cannot execute the operation in its current state.

Criar uma transformação para codificação de velocidade de transmissão adaptável

Crie uma Transformação para configurar tarefas comuns para codificar ou analisar vídeos. Neste exemplo, fazemos codificação de velocidade de transmissão adaptável. Em seguida, submetemos uma tarefa na transformação que criámos. A tarefa é o pedido aos Serviços de Multimédia para aplicar a transformação à entrada de conteúdo de vídeo ou áudio especificada.

az ams transform create --name testEncodingTransform --preset AdaptiveStreaming --description 'a simple Transform for Adaptive Bitrate Encoding' -g amsResourceGroup -a amsaccount

Obtém uma resposta como esta:

{
  "created": "2019-02-15T00:11:18.506019+00:00",
  "description": "a simple Transform for Adaptive Bitrate Encoding",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/transforms/testEncodingTransform",
  "lastModified": "2019-02-15T00:11:18.506019+00:00",
  "name": "testEncodingTransform",
  "outputs": [
    {
      "onError": "StopProcessingJob",
      "preset": {
        "odatatype": "#Microsoft.Media.BuiltInStandardEncoderPreset",
        "presetName": "AdaptiveStreaming"
      },
      "relativePriority": "Normal"
    }
  ],
  "resourceGroup": "amsResourceGroup",
  "type": "Microsoft.Media/mediaservices/transforms"
}

Criar um elemento de saída

Crie um Recurso de saída para utilizar como saída da tarefa de codificação.

az ams asset create -n testOutputAssetName -a amsaccount -g amsResourceGroup

Obtém uma resposta como esta:

{
  "alternateId": null,
  "assetId": "96427438-bbce-4a74-ba91-e38179b72f36",
  "container": null,
  "created": "2019-02-14T23:58:19.127000+00:00",
  "description": null,
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/assets/testOutputAssetName",
  "lastModified": "2019-02-14T23:58:19.127000+00:00",
  "name": "testOutputAssetName",
  "resourceGroup": "amsResourceGroup",
  "storageAccountName": "amsstorageaccount",
  "storageEncryptionFormat": "None",
  "type": "Microsoft.Media/mediaservices/assets"
}

Iniciar uma tarefa com a entrada HTTPS

Quando submete trabalhos para processar vídeos, tem de indicar aos Serviços de Multimédia onde encontrar o vídeo de entrada. Uma opção é especificar um URL HTTPS como entrada da tarefa, conforme mostrado neste exemplo.

Quando executa az ams job starto , pode definir uma etiqueta no resultado da tarefa. Em seguida, pode utilizar a etiqueta para identificar para que serve o recurso de saída.

  • Se atribuir um valor à etiqueta, defina "--output-assets" como "assetname=label".

  • Se não atribuir um valor à etiqueta, defina "--output-assets" como "assetname=".

    Repare que adicionamos "=" ao output-assets.

az ams job start --name testJob001 --transform-name testEncodingTransform --base-uri 'https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/' --files 'Ignite-short.mp4' --output-assets testOutputAssetName= -a amsaccount -g amsResourceGroup

Obtém uma resposta como esta:

{
  "correlationData": {},
  "created": "2019-02-15T05:08:26.266104+00:00",
  "description": null,
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/transforms/testEncodingTransform/jobs/testJob001",
  "input": {
    "baseUri": "https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/",
    "files": [
      "Ignite-short.mp4"
    ],
    "label": null,
    "odatatype": "#Microsoft.Media.JobInputHttp"
  },
  "lastModified": "2019-02-15T05:08:26.266104+00:00",
  "name": "testJob001",
  "outputs": [
    {
      "assetName": "testOutputAssetName",
      "error": null,
      "label": "",
      "odatatype": "#Microsoft.Media.JobOutputAsset",
      "progress": 0,
      "state": "Queued"
    }
  ],
  "priority": "Normal",
  "resourceGroup": "amsResourceGroup",
  "state": "Queued",
  "type": "Microsoft.Media/mediaservices/transforms/jobs"
}

Verificar o estado

Em cinco minutos, verifique o estado da tarefa. Deve ser "Concluído". Não está concluído, verifique novamente dentro de alguns minutos. Quando terminar, avance para o passo seguinte e crie um Localizador de Transmissão em Fluxo.

az ams job show -a amsaccount -g amsResourceGroup -t testEncodingTransform -n testJob001

Criar um localizador de transmissão em fluxo e obter um caminho

Após a conclusão da codificação, o passo seguinte consiste em disponibilizar o vídeo no recurso de saída aos clientes para reprodução. Para tal, crie primeiro um Localizador de Transmissão em Fluxo. Em seguida, crie URLs de transmissão em fluxo que os clientes podem utilizar.

Criar um localizador de transmissão

az ams streaming-locator create -n testStreamingLocator --asset-name testOutputAssetName --streaming-policy-name Predefined_ClearStreamingOnly  -g amsResourceGroup -a amsaccount

Obtém uma resposta como esta:

{
  "alternativeMediaId": null,
  "assetName": "output-3b6d7b1dffe9419fa104b952f7f6ab76",
  "contentKeys": [],
  "created": "2019-02-15T04:35:46.270750+00:00",
  "defaultContentKeyPolicyName": null,
  "endTime": "9999-12-31T23:59:59.999999+00:00",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/streamingLocators/testStreamingLocator",
  "name": "testStreamingLocator",
  "resourceGroup": "amsResourceGroup",
  "startTime": null,
  "streamingLocatorId": "e01b2be1-5ea4-42ca-ae5d-7fe704a5962f",
  "streamingPolicyName": "Predefined_ClearStreamingOnly",
  "type": "Microsoft.Media/mediaservices/streamingLocators"
}

Obter caminhos do localizador de transmissão em fluxo

az ams streaming-locator get-paths -a amsaccount -g amsResourceGroup -n testStreamingLocator

Obtém uma resposta como esta:

{
  "downloadPaths": [],
  "streamingPaths": [
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=m3u8-aapl)"
      ],
      "streamingProtocol": "Hls"
    },
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=mpd-time-csf)"
      ],
      "streamingProtocol": "Dash"
    },
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest"
      ],
      "streamingProtocol": "SmoothStreaming"
    }
  ]
}

Copie o caminho http live streaming (HLS). Neste caso, é /e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=m3u8-aapl).

Criar o URL

Obter o nome do anfitrião do ponto final de transmissão em fluxo

az ams streaming-endpoint list -a amsaccount -g amsResourceGroup -n default

Copie o hostName valor. Neste caso, é amsaccount-usw22.streaming.media.azure.net.

Montar o URL

"https:// " + <valor> hostName + <valor de caminho Hls>

Eis um exemplo:

https://amsaccount-usw22.streaming.media.azure.net/7f19e783-927b-4e0a-a1c0-8a140c49856c/ignite.ism/manifest(format=m3u8-aapl)

Testar a reprodução com o Leitor de Multimédia do Azure

Nota

Se um jogador estiver alojado num site HTTPS, certifique-se de que inicia o URL com "https".

  1. Abra um browser e aceda a https://aka.ms/azuremediaplayer/.
  2. Na caixa URL , cole o URL que criou na secção anterior. Pode colar o URL no formato HLS, Dash ou Smooth. O Leitor de Multimédia do Azure utilizará automaticamente um protocolo de transmissão em fluxo adequado para reprodução no seu dispositivo.
  3. Selecione Atualizar Leitor.

Nota

O Leitor de Multimédia do Azure pode ser utilizado para fins de teste, mas não deve ser utilizado num ambiente de produção.

Limpar os recursos

Se já não precisar de nenhum dos recursos no seu grupo de recursos, incluindo os Serviços de Multimédia e as contas de armazenamento que criou para este tutorial, elimine o grupo de recursos.

Execute este comando da CLI do Azure:

az group delete --name amsResourceGroup

Obter ajuda e suporte

Pode contactar os Serviços de Multimédia com perguntas ou seguir as nossas atualizações através de um dos seguintes métodos: