Conecte-se à API de Serviços de Mídia v3 - Node.js

logotipo dos Serviços de Mídia v3


Você está procurando a documentação dos Serviços de Mídia v2?

Este artigo mostra como se conectar ao SDK do node.js dos Serviços de Mídia do Azure v3 usando o método de entrada da entidade de serviço. Você trabalhará com arquivos no repositório de exemplos media-services-v3-node-tutorials. O exemplo HelloWorld-ListAssets contém o código para a conexão e lista os Ativos na conta.

Pré-requisitos

Importante

Examine as convenções de nomenclatura dos Serviços de Mídia do Azure para entender as principais restrições de nomenclatura em entidades.

Clonar o repositório de exemplos do Node.JS

Você trabalhará com alguns arquivos nos Exemplos do Azure. Clone o repositório de exemplos do Node.JS.

git clone https://github.com/Azure-Samples/media-services-v3-node-tutorials.git

Instalar os pacotes do Node.js

Instalar @azure/arm-mediaservices

npm install @azure/arm-mediaservices

Instalar @azure/ms-rest-nodeauth

Instale a versão mínima de "@azure/ms-rest-nodeauth": "^3.0.0".

npm install @azure/ms-rest-nodeauth@"^3.0.0"

Para este exemplo, você usará os seguintes pacotes no arquivo package.json.

Pacote Descrição
@azure/arm-mediaservices SDK dos Serviços de Mídia do Azure.
Para verificar se você está usando o pacote mais recente dos Serviços de Mídia do Azure, verifique a instalação de npm @azure/arm-mediaservices.
@azure/ms-rest-nodeauth Necessário para autenticação do AAD usando a Entidade de Serviço ou Identidade Gerenciada
@azure/storage-blob SDK de armazenamento. Usado ao carregar arquivos nos ativos.
@azure/ms-rest-js Usado para entrar.
@azure/storage-blob Usado para carregar e baixar arquivos nos Ativos nos Serviços de Mídia do Azure para codificação.
@azure/abort-controller Usado junto com o cliente de armazenamento para atingir o tempo limite de operações de download de execução prolongada

Criar o arquivo package.json

  1. Crie um arquivo package.json usando seu editor favorito.
  2. Abra o arquivo e cole o seguinte código:
{
  "name": "media-services-node-sample",
  "version": "0.1.0",
  "description": "",
  "main": "./index.ts",
  "dependencies": {
    "@azure/arm-mediaservices": "^8.0.0",
    "@azure/abort-controller": "^1.0.2",
    "@azure/ms-rest-nodeauth": "^3.0.6",
    "@azure/storage-blob": "^12.4.0",
  }
}

Conectar ao cliente Node.js usando o TypeScript

Exemplo de arquivo .env

Copie o conteúdo desse arquivo para um arquivo chamado .env. Ele deve ser armazenado na raiz do repositório de trabalho. Esses são os valores obtidos na página de Acesso à API para sua conta dos Serviços de Mídia no portal.

Para acessar os valores necessários para inserir no arquivo .env, é recomendável primeiro ler e revisar o artigo Como acessar a API. Você pode usar o portal do Azure ou a CLI para obter os valores necessários para inserir no arquivo de variáveis de ambiente deste exemplo.

Depois de criar o arquivo .env, você pode começar a trabalhar com os exemplos.

# Values from the API Access page in the portal
AZURE_CLIENT_ID=""
AZURE_CLIENT_SECRET= ""
AZURE_TENANT_ID= ""

# Change this to match your AAD Tenant domain name. 
AAD_TENANT_DOMAIN = "microsoft.onmicrosoft.com"

# Set this to your Media Services Account name, resource group it is contained in, and location
AZURE_MEDIA_ACCOUNT_NAME = ""
AZURE_LOCATION= ""
AZURE_RESOURCE_GROUP= ""

# Set this to your Azure Subscription ID
AZURE_SUBSCRIPTION_ID= ""

# You must change these if you are using Gov Cloud, China, or other non standard cloud regions
AZURE_ARM_AUDIENCE= "https://management.core.windows.net"
AZURE_ARM_ENDPOINT="https://management.azure.com"

# DRM Testing
DRM_SYMMETRIC_KEY="add random base 64 encoded string here"

Executar o aplicativo de exemplo HelloWorld-ListAssets

  1. Altere o diretório na pasta AMSv3Samples
cd AMSv3Samples
  1. Instale os pacotes usados no arquivo packages.json.
npm install 
  1. Altere o diretório na pasta HelloWorld-ListAssets.
cd HelloWorld-ListAssets
  1. Inicie o Visual Studio Code na pasta AMSv3Samples. É necessário que ele seja iniciado na pasta em que a pasta ".vscode" e os arquivos tsconfig.json estão localizados
cd ..
code .

Abra a pasta de HelloWorld-ListAssets e abra o arquivo index.ts no editor do Visual Studio Code.

Enquanto estiver no arquivo index.ts, pressione F5 para iniciar o depurador. Você deverá ver uma lista de ativos exibida se já tiver ativos na conta. Se a conta estiver vazia, você verá uma lista vazia.

Para ver rapidamente os ativos listados, use o portal para carregar alguns arquivos de vídeo. Cada um dos ativos serão criados automaticamente e executar novamente esse script retornará os nomes.

Uma análise mais detalhada do exemplo HelloWorld-ListAssets

O exemplo HelloWorld-ListAssets mostra como se conectar ao cliente dos Serviços de Mídia com uma Entidade de Serviço e listar os Ativos na conta. Confira os comentários no código para obter uma explicação detalhada do que ele faz.

import * as msRestNodeAuth from "@azure/ms-rest-nodeauth";
import { AzureMediaServices } from '@azure/arm-mediaservices';
import { AzureMediaServicesOptions } from "@azure/arm-mediaservices/esm/models";
// Load the .env file if it exists
import * as dotenv from "dotenv";
dotenv.config();

export async function main() {
  // Copy the samples.env file and rename it to .env first, then populate it's values with the values obtained 
  // from your Media Services account's API Access page in the Azure portal.
  const clientId = process.env.AZURE_CLIENT_ID as string;
  const secret = process.env.AZURE_CLIENT_SECRET as string;
  const tenantDomain = process.env.AAD_TENANT_DOMAIN as string;
  const subscriptionId = process.env.AZURE_SUBSCRIPTION_ID as string;
  const resourceGroup = process.env.AZURE_RESOURCE_GROUP as string;
  const accountName = process.env.AZURE_MEDIA_ACCOUNT_NAME as string;

  let clientOptions: AzureMediaServicesOptions = {
    longRunningOperationRetryTimeout: 5, // set the time out for retries to 5 seconds
    noRetryPolicy: false // use the default retry policy.
  }

  const creds = await msRestNodeAuth.loginWithServicePrincipalSecret(clientId, secret, tenantDomain);
  const mediaClient = new AzureMediaServices(creds, subscriptionId, clientOptions);

  // List Assets in Account
  console.log("Listing Assets Names in account:")
  var assets = await mediaClient.assets.list(resourceGroup, accountName);

  assets.forEach(asset => {
    console.log(asset.name);
  });

  if (assets.odatanextLink) {
    console.log("There are more than 1000 assets in this account, use the assets.listNext() method to continue listing more assets if needed")
    console.log("For example:  assets = await mediaClient.assets.listNext(assets.odatanextLink)");
  }
}

main().catch((err) => {
  console.error("Error running sample:", err.message);
});

Mais exemplos

Os exemplos a seguir estão disponíveis no repositório

Nome do projeto Caso de uso
Live/index.ts Exemplo de uma transmissão ao vivo básica. AVISO, não deixe de verificar se todos os recursos foram limpos e não estão sendo cobrados no portal ao usar o recurso ao vivo
StreamFilesSample/index.ts Exemplo básico para carregar um arquivo local ou uma codificação de uma URL de origem. Exemplo mostra como usar o SDK de armazenamento para baixar conteúdo e mostra como transmitir para um player
StreamFilesWithDRMSample/index.ts Demonstra como codificar e transmitir usando o DRM do Widevine e do PlayReady
VideoIndexerSample/index.ts Exemplo de uso das predefinições de Vídeo e do Analisador de Áudio para gerar metadados e insights de um arquivo de vídeo ou áudio

Confira também

Próximas etapas

Explore a documentação de referência do Node.js dos Serviços de Mídia e confira as amostras que explicam como usar a API dos Serviços de Mídia com o Node.js.