Compartilhar via


Empacotamento dinâmico nos Serviços de Mídia v3

Logotipo dos Serviços de Mídia v3


Aviso

Os Serviços de Mídia do Azure serão desativados em 30 de junho de 2024. Para obter mais informações, consulte o Guia de Desativação do AMS.

Os Serviços de Mídia do Azure fornecem recursos internos de empacotamento e servidor de origem para fornecer conteúdo em formatos de protocolo de streaming HLS e MPEG DASH. No AMS, o ponto de extremidade de streaming atua como o servidor de "origem" que envia o conteúdo formatado HLS e DASH para players cliente que dão suporte ao streaming de taxa de bits adaptável usando esses formatos populares. O ponto de extremidade de streaming também dá suporte a muitos recursos, como empacotamento dinâmico just-in-time com ou sem proteção de conteúdo, para alcançar todos os principais dispositivos (como dispositivos iOS e Android).

A maioria dos navegadores e dispositivos móveis no mercado atualmente dá suporte e entende os protocolos de streaming HLS ou DASH. Por exemplo, o iOS requer que os streams sejam entregues no formato HTTP Live Streaming (HLS) e os dispositivos Android dão suporte a HLS, bem como MPEG DASH em determinados modelos (ou por meio do uso do player de nível de aplicativo Exoplayer para dispositivos Android.

Nos Serviços de Mídia, um ponto de extremidade de streaming (origem) representa um serviço de origem e empacotamento dinâmico (just-in-time) que pode enviar conteúdo ativo e sob demanda diretamente para um aplicativo de player do cliente. Ele usa um dos protocolos de streaming de mídia comuns mencionados na seção a seguir. O Empacotamento dinâmico é um recurso que vem por padrão em todos os pontos de extremidade de streaming.

empacotamento dinâmico

As vantagens do empacotamento just-in-time são as seguintes:

  • Você pode armazenar todos os arquivos no formato de arquivo MP4 padrão.
  • Você não precisa armazenar várias cópias de formatos HLS e DASH empacotados estáticos no armazenamento de blobs, o que reduz a quantidade de conteúdo de vídeo armazenado e reduz os custos de armazenamento.
  • Você pode aproveitar instantaneamente as novas atualizações de protocolo e as alterações nas especificações sem precisar empacotar novamente o conteúdo estático em seu catálogo.
  • Você pode fornecer conteúdo com ou sem criptografia e DRM usando os mesmos arquivos MP4 no armazenamento.
  • Você pode filtrar ou alterar dinamicamente os manifestos com filtros globais ou de nível de ativo simples para remover faixas específicas, resoluções, idiomas ou fornecer clipes de realce mais curtos dos mesmos arquivos MP4 sem recodificar ou renderizar novamente o conteúdo.

Preparar os arquivos de origem para entrega

Para aproveitar o empacotamento dinâmico, codifique seu arquivo de mezanino (origem) em um conjunto de arquivos MP4 de taxa de bits única ou múltipla (ISO Base Media 14496-12). Os arquivos de vídeo codificados e os arquivos de configuração de streaming estarão localizados em um ativo de saída. Nesse conjunto de arquivos, você pode usar o empacotamento dinâmico para entregar vídeo por meio dos protocolos de mídia de streaming.

Normalmente, você usará o codificador padrão dos Serviços de Mídia do Azure para gerar esse conteúdo usando as predefinições de codificação com reconhecimento de conteúdo ou as predefinições de taxa de bits adaptável. Ambos geram um conjunto de arquivos MP4 prontos para streaming e empacotamento dinâmico.

Como alternativa, você pode optar por codificar usando um serviço externo, local ou em suas próprias VMs ou aplicativos de funções sem servidor. O conteúdo codificado externamente pode ser carregado em um ativo para streaming desde que ele atenda aos requisitos de codificação para formatos de streaming de taxa de bits adaptável. Um projeto de exemplo de carregamento de um MP4 já codificado para streaming está disponível nos exemplos do SDK do .NET - consulte Transmitir arquivos MP4 existentes.

O empacotamento dinâmico dos Serviços de Mídia do Azure dá suporte apenas a arquivos de áudio e vídeo no formato de contêiner MP4. Os arquivos de áudio também precisam ser codificados em um contêiner MP4 ao usar codecs alternativos, como Dolby.

Disponibilizar vídeos para streaming

Para disponibilizar vídeos no ativo codificado para clientes para reprodução, publique o ativo usando um Localizador de Streaming e crie as URLs de streaming HLS e DASH apropriadas. Alterando o protocolo usado na consulta de formato de URL, o serviço fornecerá o manifesto de streaming apropriado (HLS, MPEG DASH.)

Como resultado, você só precisa armazenar e pagar pelos arquivos em um único formato de armazenamento (MP4), e os Serviços de Mídia vão gerar e fornecer os manifestos HLS ou DASH apropriados com base nas solicitações dos players de clientes.

Se você planeja proteger seu conteúdo usando a criptografia dinâmica dos Serviços de Mídia, confira os Protocolos de streaming e tipos de criptografia.

Entregar HLS

Empacotamento dinâmico de HLS

O cliente de streaming pode especificar os seguintes formatos de HLS. É recomendável usar o formato CMAF para compatibilidade com os players e dispositivos iOS mais recentes. Para dispositivos herdados, os formatos v4 e v3 também estão disponíveis, simplesmente alterando a cadeia de caracteres de consulta de formato.

Protocolo Cadeia de formato Exemplo
HLS CMAF format=m3u8-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-cmaf)
HLS V4 format=m3u8-aapl https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-aapl)
HLS V3 format=m3u8-aapl-v3 https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-aapl-v3)

Observação

As diretrizes anteriores da Apple recomendavam que o fallback para redes de baixa largura de banda era para fornecer um fluxo somente de áudio. No momento, o codificador dos Serviços de Mídia gera automaticamente uma faixa somente de áudio. As diretrizes da Apple agora estabelecem que a faixa somente de áudio não deve ser incluída, principalmente para a distribuição da Apple TV. Para impedir que o player utilize como padrão uma faixa somente de áudio, sugerimos que você use a marca "audio-only=false" na URL que remove a representação somente de áudio em HLS ou que você simplesmente use HLS-V3. Por exemplo, http://host/locator/asset.ism/manifest(format=m3u8-aapl,audio-only=false).

Taxa de empacotamento de HLS para VOD

Para controlar a taxa de empacotamento do conteúdo do VOD para formatos de HLS mais antigos, você pode definir a marcação de metadados de fragmentsPerHLSSegment no arquivo .ism para controlar a taxa de empacotamento padrão de 3:1 para segmentos TS entregues dos manifestos de formato de HLS v3 e v4 mais antigos. Essa alteração de configuração exige que você modifique diretamente o arquivo. ism no armazenamento para ajustar a taxa de empacotamento.

Exemplo de manifesto de servidor do .ism com fragmentsPerHLSSegment definido como 1.

   <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <smil xmlns="http://www.w3.org/2001/SMIL20/Language">
      <head>
         <meta name="formats" content="mp4" />
         <meta name="fragmentsPerHLSSegment" content="1"/>
      </head>
      <body>
         <switch>
         ...
         </switch>
      </body>
   </smil>

Entregar DASH

Empacotamento dinâmico de DASH

O cliente de streaming pode especificar os seguintes formatos de MPEG-DASH:

Protocolo Cadeia de formato Exemplo
MPEG-DASH CMAF format=mpd-time-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-cmaf)
CSF MPEG-DASH (herdado) format=mpd-time-csf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-csf)

Entregar manifestos Smooth Streaming

Empacotamento dinâmico de Smooth Streaming

O cliente de streaming pode especificar os seguintes formatos de Smooth Streaming:

Protocolo Observações/exemplos
Smooth Streaming https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest
Smooth Streaming 2.0 (manifesto herdado) Por padrão, o formato de manifesto do Smooth Streaming contém a marca de repetição (r-tag). No entanto, alguns players não dão suporte à r-tag. Os clientes com esses players podem usar um formato que desabilita a r-tag:

https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=fmp4-v20)

Observação

O Smooth Streaming requer que o áudio e o vídeo estejam presentes em sua transmissão.

Fluxo de trabalho do streaming sob demanda

Os procedimentos a seguir mostram um fluxo de trabalho de streaming comum dos Serviços de Mídia, em que o empacotamento dinâmico é usado juntamente com o Media Encoder Standard, nos Serviços de Mídia do Microsoft Azure.

  1. Carregue um arquivo de entrada, por exemplo, um MP4, um QuickTime/MOV ou outro formato de arquivo com suporte. Esse arquivo também é denominado arquivo de mezanino ou de origem. Para obter a lista de formatos com suporte, confira Formatos compatíveis com o Encoder Standard.

  2. Codifique seu arquivo de mezanino em um conjunto de taxa de bits adaptável H.264/AAC MP4.

    Se já tiver arquivos codificados e quiser apenas copiar e transmitir os arquivos, use: APIs CopyVideo e CopyAudio. Um novo arquivo MP4 com um manifesto de streaming (arquivo .ism) será criado como resultado.

    Além disso, basta gerar o arquivo .ism e .ismc em um arquivo previamente codificado, desde que ele seja codificado usando as configurações corretas para streaming de taxa de bits adaptável (normalmente, é GOPS de 2 segundos, distâncias de quadro chave de 2s mín e máx e codificação do modo taxa de bits constante (CBR)).

    Consulte a streaming de amostra do SDK do .NET de MP4 existente para obter detalhes sobre como gerar o .ism (manifesto do servidor) e o .ismc (manifestos do cliente) para streaming de um arquivo MP4 existente e já codificado.

  3. Publicar o ativo de saída que contém o conjunto MP4 de taxa de bits adaptável. Você publica criando um localizador de streaming.

  4. Criar URLs que segmentam diferentes formatos (HLS, MPEG-DASH e Smooth Streaming). O ponto de extremidade de streaming cuidaria de servir o manifesto correto e solicitações para todos esses formatos diferentes.

O caminho de download está presente na imagem acima apenas para mostrar que é possível baixar um arquivo MP4 diretamente por meio do ponto de extremidade de streaming (origem) (você especifica a política de streaming para download no localizador de streaming).
O empacotador dinâmico não está alterando o arquivo. Opcionalmente, você pode usar as APIs do Armazenamento de Blobs do Azure para acessar um MP4 diretamente para download progressivo se deseja ignorar os recursos do ponto de extremidade de streaming (origem).

Codificar para MP4s de taxa de bits adaptável

Os artigos a seguir mostram exemplos de como codificar um vídeo com os Serviços de Mídia:

Confira a lista de codecs e formatos de entrada do Standard Encoder com suporte.

Fluxo de trabalho de streaming ao vivo

Um evento ao vivo pode ser definido como uma passagem (um codificador dinâmico local envia um fluxo de taxa de bits múltipla) ou uma Codificação Ativa (um codificador dinâmico local envia um fluxo de taxa de bits única).

Aqui está um fluxo de trabalho comum para transmissão ao vivo com empacotamento dinâmico:

  1. Crie um evento ao vivo.
  2. Obtenha a URL de ingestão e configure seu codificador local para usar a URL no envio do feed de contribuição.
  3. Obtenha a URL de visualização e use-a para verificar se a entrada do codificador está sendo recebida.
  4. Crie um novo ativo.
  5. Crie uma saída dinâmica e use o nome do ativo que você criou.
    A saída dinâmica arquiva o fluxo no ativo.
  6. Crie um localizador de streaming com os tipos internos da política de streaming.
    Se você pretende criptografar seu conteúdo, reveja a Visão geral da proteção de conteúdo.
  7. Liste os caminhos no localizador de streaming para retornar as URLs a serem usadas.
  8. Obtenha o nome do host para o ponto de extremidade de streaming do qual você deseja transmitir.
  9. Criar URLs que segmentam diferentes formatos (HLS, MPEG-DASH e Smooth Streaming). O ponto de extremidade de streaming serve o manifesto correto e solicita os diferentes formatos.

Para obter informações sobre transmissão ao vivo nos Serviços de Mídia v3, confira Visão geral de transmissão ao vivo.

Codecs de vídeo compatíveis com o Empacotamento Dinâmico

O empacotamento dinâmico dá suporte a arquivos de vídeo no formato de arquivo de contêiner MP4 e contêm vídeo codificado com H.264 (MPEG-4 AVC ou AVC1) ou H.265 (HEVC, hev1 ou hvc1).

Observação

As resoluções de até 4K e taxa de quadros de até 60 quadros por segundo foram testadas com o empacotamento dinâmico.

Codecs de áudio suportados por embalagem dinâmica

O empacotamento dinâmico também dá suporte a arquivos de áudio armazenados no formato de contêiner de arquivo MP4 contendo o fluxo de áudio codificado em um dos seguintes codecs:

  • AAC (AAC-LC, HE-AAC v1 ou HE-AAC v2).

  • Dolby Digital Plus (AC-3 ou E-AC3 avançado). O áudio codificado deve ser armazenado no formato de contêiner MP4 para funcionar com o Empacotamento dinâmico.

  • Dolby Atmos

    O streaming de conteúdo Dolby Atmos tem suporte para padrões como o protocolo MPEG-DASH com formato CSF (Common Streaming Format) ou MP4 fragmentado CMAF (Common Media Application Format) e via HTTP Live Streaming (HLS) com CMAF.

  • DTS
    Os codecs DTS com suporte pelos formatos de pacote DASH-CSF, DASH-CMAF, HLS-M2TS e HLS-CMAF são:

    • DTS Digital Surround (dtsc)
    • DTS-HD High Resolution e DTS-HD Master Audio (dtsh)
    • DTS Express (dtse)
    • DTS-HD Lossless (no core) (dtsl)

O empacotamento dinâmico é compatível com múltiplas faixas de áudio com DASH ou HLS (versão 4 ou posterior) para ativos de streaming que têm várias faixas de áudio com vários codecs e idiomas.

Para todos os codecs de áudio acima, o áudio codificado deve ser armazenado no formato de contêiner MP4 para funcionar com o Empacotamento dinâmico. O serviço não dá suporte a formatos de arquivo de fluxo elementares brutos no armazenamento de blobs (por exemplo, o seguinte não teria suporte: .dts, .ac3.)

Somente arquivos com a extensão .mp4 de .mp4a têm suporte para empacotamento de áudio.

Limitações

Limitação de iOS em áudio AAC 5.1

Dispositivos iOS da Apple não são compatíveis com o codec de áudio AAC 5.1. O áudio multicanal precisa ser codificado usando codecs Dolby Digital ou Dolby Digital Plus.

Para obter informações detalhadas, confira especificação de criação de HLS para dispositivos Apple.

Observação

Os Serviços de Mídia não dão suporte à codificação de Dolby Digital, Dolby Digital Plus ou Dolby Digital Plus com formatos de áudio multicanal Dolby Atmos.

Áudio Dolby Digital

Atualmente, o empacotamento dinâmico dos Serviços de Mídia não é compatível com arquivos que contenham áudio Dolby Digital (AC3), pois isso é considerado um codec herdado pela Dolby.

Manifestos

No empacotamento dinâmico dos Serviços de Mídia, os manifestos do cliente de streaming para HLS, MPEG-DASH e Smooth Streaming são gerados dinamicamente com base na consulta de formato na URL.

Um arquivo de manifesto inclui o streaming de metadados, como: tipo da trilha (áudio, vídeo ou texto), nome da trilha, hora de início e término, taxa de bits (qualidades), idiomas da trilha, janela de apresentação (janela deslizante de duração fixa) e codec de vídeo (FourCC). Também instrui o player a recuperar o próximo fragmento, fornecendo informações sobre os próximos fragmentos de vídeo executáveis que estão disponíveis e sua localização. Os fragmentos (ou segmentos) são os "pedaços" reais de um conteúdo de vídeo.

Exemplos

HLS

Aqui está um exemplo de um arquivo de manifesto HLS, também chamado de uma lista de reprodução principal HLS:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="aac_eng_2_128041_2_1",LANGUAGE="eng",DEFAULT=YES,AUTOSELECT=YES,URI="QualityLevels(128041)/Manifest(aac_eng_2_128041_2_1,format=m3u8-aapl)"
#EXT-X-STREAM-INF:BANDWIDTH=536608,RESOLUTION=320x180,CODECS="avc1.64000d,mp4a.40.2",AUDIO="audio"
QualityLevels(381048)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=536608,RESOLUTION=320x180,CODECS="avc1.64000d",URI="QualityLevels(381048)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=884544,RESOLUTION=480x270,CODECS="avc1.640015,mp4a.40.2",AUDIO="audio"
QualityLevels(721495)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=884544,RESOLUTION=480x270,CODECS="avc1.640015",URI="QualityLevels(721495)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=1327398,RESOLUTION=640x360,CODECS="avc1.64001e,mp4a.40.2",AUDIO="audio"
QualityLevels(1154816)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1327398,RESOLUTION=640x360,CODECS="avc1.64001e",URI="QualityLevels(1154816)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=2413312,RESOLUTION=960x540,CODECS="avc1.64001f,mp4a.40.2",AUDIO="audio"
QualityLevels(2217354)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=2413312,RESOLUTION=960x540,CODECS="avc1.64001f",URI="QualityLevels(2217354)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=3805760,RESOLUTION=1280x720,CODECS="avc1.640020,mp4a.40.2",AUDIO="audio"
QualityLevels(3579827)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=3805760,RESOLUTION=1280x720,CODECS="avc1.640020",URI="QualityLevels(3579827)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=139017,CODECS="mp4a.40.2",AUDIO="audio"
QualityLevels(128041)/Manifest(aac_eng_2_128041_2_1,format=m3u8-aapl)

MPEG-DASH

Aqui está um exemplo de um arquivo de manifesto MPEG-DASH, também chamado MPEG-DASH Media Presentation Description (MPD):

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediaPresentationDuration="PT1M10.315S" minBufferTime="PT7S">
   <Period>
      <AdaptationSet id="1" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.2" lang="en">
         <SegmentTemplate timescale="10000000" media="QualityLevels($Bandwidth$)/Fragments(aac_eng_2_128041_2_1=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(aac_eng_2_128041_2_1=i,format=mpd-time-csf)">
            <SegmentTimeline>
               <S d="60160000" r="10" />
               <S d="41386666" />
            </SegmentTimeline>
         </SegmentTemplate>
         <Representation id="5_A_aac_eng_2_128041_2_1_1" bandwidth="128041" audioSamplingRate="48000" />
      </AdaptationSet>
      <AdaptationSet id="2" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640020" maxWidth="1280" maxHeight="720" startWithSAP="1">
         <SegmentTemplate timescale="10000000" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
            <SegmentTimeline>
               <S d="60060000" r="10" />
               <S d="42375666" />
            </SegmentTimeline>
         </SegmentTemplate>
         <Representation id="1_V_video_1" bandwidth="3579827" width="1280" height="720" />
         <Representation id="1_V_video_2" bandwidth="2217354" codecs="avc1.64001F" width="960" height="540" />
         <Representation id="1_V_video_3" bandwidth="1154816" codecs="avc1.64001E" width="640" height="360" />
         <Representation id="1_V_video_4" bandwidth="721495" codecs="avc1.640015" width="480" height="270" />
         <Representation id="1_V_video_5" bandwidth="381048" codecs="avc1.64000D" width="320" height="180" />
      </AdaptationSet>
   </Period>
</MPD>

Smooth Streaming

Aqui está um exemplo de um arquivo de manifesto de Smooth Streaming:

<?xml version="1.0" encoding="UTF-8"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="2" Duration="703146666" TimeScale="10000000">
   <StreamIndex Chunks="12" Type="audio" Url="QualityLevels({bitrate})/Fragments(aac_eng_2_128041_2_1={start time})" QualityLevels="1" Language="eng" Name="aac_eng_2_128041_2_1">
      <QualityLevel AudioTag="255" Index="0" BitsPerSample="16" Bitrate="128041" FourCC="AACL" CodecPrivateData="1190" Channels="2" PacketSize="4" SamplingRate="48000" />
      <c t="0" d="60160000" r="11" />
      <c d="41386666" />
   </StreamIndex>
   <StreamIndex Chunks="12" Type="video" Url="QualityLevels({bitrate})/Fragments(video={start time})" QualityLevels="5">
      <QualityLevel Index="0" Bitrate="3579827" FourCC="H264" MaxWidth="1280" MaxHeight="720" CodecPrivateData="0000000167640020ACD9405005BB011000003E90000EA600F18319600000000168EBECB22C" />
      <QualityLevel Index="1" Bitrate="2217354" FourCC="H264" MaxWidth="960" MaxHeight="540" CodecPrivateData="000000016764001FACD940F0117EF01100000303E90000EA600F1831960000000168EBECB22C" />
      <QualityLevel Index="2" Bitrate="1154816" FourCC="H264" MaxWidth="640" MaxHeight="360" CodecPrivateData="000000016764001EACD940A02FF9701100000303E90000EA600F162D960000000168EBECB22C" />
      <QualityLevel Index="3" Bitrate="721495" FourCC="H264" MaxWidth="480" MaxHeight="270" CodecPrivateData="0000000167640015ACD941E08FEB011000003E90000EA600F162D9600000000168EBECB22C" />
      <QualityLevel Index="4" Bitrate="381048" FourCC="H264" MaxWidth="320" MaxHeight="180" CodecPrivateData="000000016764000DACD941419F9F011000003E90000EA600F14299600000000168EBECB22C" />
      <c t="0" d="60060000" r="11" />
      <c d="42375666" />
   </StreamIndex>
</SmoothStreamingMedia>

Nomenclatura de faixas no manifesto

Se um nome de faixa de áudio estiver especificado no arquivo .ism, os Serviços de Mídia adicionarão um elemento Label dentro de um AdaptationSet para especificar as informações textuais da faixa de áudio específica. Um exemplo do manifesto DASH de saída:

<AdaptationSet codecs="mp4a.40.2" contentType="audio" lang="en" mimeType="audio/mp4" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
  <Label>audio_track_name</Label>
  <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
  <Representation audioSamplingRate="48000" bandwidth="131152" id="German_Forest_Short_Poem_english-en-68s-2-lc-128000bps_seg">
    <BaseURL>German_Forest_Short_Poem_english-en-68s-2-lc-128000bps_seg.mp4</BaseURL>
  </Representation>
</AdaptationSet>

O player pode usar o elemento Label a ser exibido em sua interface do usuário.

Sinalizar faixas de descrição de áudio

Você pode adicionar uma faixa de narração ao vídeo para ajudar clientes com deficiência visual a seguir a gravação do vídeo ouvindo a narração. Você precisa anotar uma faixa de áudio como descrição de áudio no manifesto. Para fazer isso, adicione os parâmetros “accessibility” e “role” ao arquivo .ism. Você tem a responsabilidade de definir esses parâmetros corretamente para sinalizar faixas de áudio como descrição de áudio. Por exemplo, adicione <param name="accessibility" value="description" /> e <param name="role" value="alternate" ao arquivo .ism para uma faixa de áudio específica.s

Manifesto Smooth Streaming

Se você estivesse executando um fluxo de Smooth Streaming, o manifesto transportaria valores nos atributos Accessibility e Role para essa faixa de áudio. Por exemplo, Role="alternate" Accessibility="description" seria adicionado no elemento StreamIndex para indicar que é uma descrição de áudio.

Manifesto DASH

Para o manifesto DASH, os dois elementos a seguir seriam adicionados para sinalizar a descrição de áudio:

<Accessibility schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="alternate"/>

Playlist HLS

Para HLS v7 e superior (format=m3u8-cmaf), sua playlist transportaria AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video" quando a faixa de descrição de áudio fosse sinalizada.

Filtragem de manifesto dinâmico

Para controlar o número de faixas, formatos, taxas de bits e janelas de tempo de apresentação que são enviadas aos players, você pode usar a filtragem dinâmica com o empacotador dinâmico dos Serviços de Mídia. Para saber mais, confira Pré-filtragem de manifestos com o empacotador dinâmico.

Criptografia dinâmica para DRM

Você pode usar criptografia dinâmica para criptografar dinamicamente seu conteúdo ao vivo ou sob demanda com o AES-128 ou qualquer um dos três sistemas principais de gerenciamento de direitos digitais (DRM): Microsoft PlayReady, Google Widevine e Apple FairPlay. Os Serviços de Mídia também fornecem um serviço para entrega de chaves AES e licenças DRM a clientes autorizados. Para saber mais, confira criptografia dinâmica.

Observação

O Widevine é um serviço fornecido pela Google Inc. e está sujeito aos termos de serviço e à política de privacidade da Google, Inc.

Obter ajuda e suporte

Você pode entrar em contato com os Serviços de Mídia com perguntas ou seguir nossas atualizações por um dos seguintes métodos: