Empacotamento dinâmico nos Serviços de Multimédia v3

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.

Os Serviços de Multimédia do Azure fornecem capacidades de empacotamento e servidor de origem incorporados para fornecer conteúdo em formatos de protocolo de transmissão em fluxo HLS e MPEG DASH. No AMS, o ponto final de transmissão em fluxo funciona como o servidor de "origem" que envia conteúdo HLS e DASH formatado para os jogadores cliente que suportam a transmissão em fluxo de velocidade de transmissão adaptável através desses formatos populares. O Ponto Final de Transmissão em Fluxo também suporta muitas funcionalidades, como just-in-time, empacotamento dinâmico com ou sem proteção de conteúdo, para chegar a todos os dispositivos principais (como dispositivos iOS e Android).

A maioria dos browsers e dispositivos móveis no mercado suporta e compreende os protocolos de transmissão em fluxo HLS ou DASH. Por exemplo, o iOS requer que os fluxos sejam entregues no formato HTTP Live Streaming (HLS) e os dispositivos Android suportam HLS, bem como MPEG DASH em determinados modelos (ou através da utilização do jogador de nível de aplicação Exoplayer para dispositivos Android.

Nos Serviços de Multimédia, um ponto final de transmissão em fluxo (origem) representa um empacotamento dinâmico (just-in-time) e um serviço de origem que pode fornecer o seu conteúdo em direto e a pedido diretamente a uma aplicação de leitor de cliente. Utiliza um dos protocolos de multimédia de transmissão em fluxo comuns mencionados na secção seguinte. O empacotamento dinâmico é uma funcionalidade que vem padrão em todos os pontos finais de transmissão em fluxo.

empacotamento dinâmico

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

  • Pode armazenar todos os seus ficheiros no formato de ficheiro MP4 padrão.
  • Não precisa de armazenar várias cópias de formatos HLS e DASH em pacote estáticos no armazenamento de blobs, o que reduz a quantidade de conteúdos de vídeo armazenados e reduz os custos de armazenamento.
  • Pode tirar partido instantaneamente de novas atualizações de protocolo e alterações às especificações sem ter de voltar a empacotar o conteúdo estático no seu catálogo.
  • Pode fornecer conteúdo com ou sem encriptação e DRM com os mesmos ficheiros MP4 no armazenamento.
  • Pode filtrar ou alterar dinamicamente os manifestos com filtros globais ou de nível de recurso simples para remover faixas específicas, resoluções, idiomas ou fornecer clips de realce mais curtos dos mesmos ficheiros MP4 sem voltar a codificar ou voltar a compor o conteúdo.

Para preparar os ficheiros de origem para entrega

Para tirar partido do empacotamento dinâmico, codificar o ficheiro mezanino (origem) num conjunto de ficheiros MP4 de velocidade de transmissão única ou múltipla (ISO Base Media 14496-12). Os ficheiros de vídeo codificados e os ficheiros de configuração de transmissão em fluxo estarão localizados num recurso de saída. A partir deste conjunto de ficheiros, pode utilizar o empacotamento dinâmico para entregar vídeo através dos protocolos de multimédia de transmissão em fluxo.

Normalmente, irá utilizar o codificador padrão dos Serviços de Multimédia do Azure para gerar este conteúdo com as predefinições de Codificação com Deteção de Conteúdo ou as predefinições de Velocidade de Transmissão Adaptável. Ambos geram um conjunto de ficheiros MP4 prontos para transmissão em fluxo e empacotamento dinâmico.

Em alternativa, pode optar por codificar com um serviço externo, no local ou nas suas próprias VMs ou aplicações de funções sem servidor. O conteúdo codificado externamente pode ser carregado para um recurso para transmissão em fluxo, desde que cumpra os requisitos de codificação para formatos de transmissão em fluxo de velocidade de transmissão adaptáveis. Um projeto de exemplo de carregamento de um MP4 pré-codificado para transmissão em fluxo está disponível nos exemplos do SDK .NET – veja Transmitir ficheiros Mp4 existentes.

O empacotamento dinâmico dos Serviços de Multimédia do Azure suporta apenas ficheiros de vídeo e áudio no formato de contentor MP4. Os ficheiros de áudio também têm de ser codificados num contentor MP4 ao utilizar codecs alternativos, como o Dolby.

Disponibilizar vídeos para transmissão em fluxo

Para disponibilizar vídeos no recurso codificado aos clientes para reprodução, publique o recurso com um Localizador de Transmissão em Fluxo e crie os URLs de transmissão em fluxo HLS e DASH adequados. Ao alterar o protocolo utilizado na consulta do formato URL, o serviço irá fornecer o manifesto de transmissão em fluxo adequado (HLS, MPEG DASH.)

Como resultado, só precisa de armazenar e pagar os ficheiros em formato de armazenamento único (MP4) e os Serviços de Multimédia irão gerar e servir os manifestos HLS ou DASH adequados com base nos pedidos dos seus leitores cliente.

Se planear proteger os seus conteúdos através da encriptação dinâmica dos Serviços de Multimédia, veja Protocolos de transmissão em fluxo e tipos de encriptação.

Entregar HLS

Empacotamento dinâmico HLS

O cliente de transmissão em fluxo pode especificar os seguintes formatos HLS. Recomendamos que utilize o formato CMAF para compatibilidade com os leitores e dispositivos iOS mais recentes. Para dispositivos legados, os formatos v4 e v3 também estão disponíveis ao alterar simplesmente a cadeia 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)

Nota

As diretrizes anteriores da Apple recomendavam que a contingência para redes de largura de banda baixa fosse fornecer um fluxo apenas de áudio. Atualmente, o codificador dos Serviços de Multimédia gera automaticamente uma faixa apenas de áudio. As diretrizes da Apple indicam agora que a faixa apenas de áudio não deve ser incluída, especialmente para a distribuição da Apple TV. Para impedir que o leitor predefina para uma faixa apenas de áudio, sugerimos que utilize a etiqueta "audio-only=false" no URL que remove a representação apenas de áudio no HLS ou simplesmente utilize HLS-V3. Por exemplo, http://host/locator/asset.ism/manifest(format=m3u8-aapl,audio-only=false).

Proporção de embalagem HLS para VOD

Para controlar a proporção de embalagem de conteúdo VOD para formatos HLS mais antigos, pode definir a etiqueta de metadados fragmentsPerHLSSegment no ficheiro .ism para controlar a proporção de embalagem predefinida de 3:1 para segmentos TS fornecidos a partir dos manifestos de formato v3 e v4 HLS mais antigos. Esta alteração de definição requer que modifique diretamente o ficheiro .ism no armazenamento para ajustar a proporção de embalagem.

Exemplo de manifesto do servidor .ism com fragmentosPerHLSSegment 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 DASH

O cliente de transmissão em fluxo pode especificar os seguintes formatos 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)
MPEG-DASH CSF (legado) 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 de Transmissão em Fluxo Uniforme

Empacotamento dinâmico de Transmissão em Fluxo Uniforme

O cliente de transmissão em fluxo pode especificar os seguintes formatos de Transmissão em Fluxo Uniforme:

Protocolo Notas/exemplos
Transmissão em Fluxo Uniforme https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest
Smooth Streaming 2.0 (manifesto legado) Por predefinição, o formato de manifesto Transmissão em Fluxo Uniforme contém a etiqueta de repetição (r-tag). No entanto, alguns jogadores não suportam o r-tag. Os clientes com estes leitores podem utilizar um formato que desativa a etiqueta r:

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

Nota

A Transmissão em Fluxo Uniforme requer que o áudio e o vídeo estejam presentes na sua transmissão em fluxo.

Fluxo de trabalho de transmissão em fluxo a pedido

Os passos seguintes mostram um fluxo de trabalho de transmissão em fluxo dos Serviços de Multimédia comum em que o empacotamento dinâmico é utilizado juntamente com o Codificador Standard nos Serviços de Multimédia do Azure.

  1. Carregue um ficheiro de entrada, como um MP4, QuickTime/MOV ou outro formato de ficheiro suportado. Este ficheiro também é conhecido como o ficheiro de origem ou mezanino. Para obter a lista de formatos suportados, veja Formats Supported by the Standard Encoder (Formatos Suportados pelo Codificador Standard).

  2. Codifique o ficheiro mezanino num conjunto de velocidade de transmissão adaptável H.264/AAC MP4.

    Se já tiver ficheiros codificados e quiser apenas copiar e transmitir em fluxo os ficheiros, utilize: CopyVideo e CopyAudio APIs. Como resultado, será criado um novo ficheiro MP4 com um manifesto de transmissão em fluxo (ficheiro .ism).

    Além disso, pode simplesmente gerar o ficheiro .ism e .ismc num ficheiro pré-codificado, desde que seja codificado com as definições certas para a transmissão em fluxo de velocidade de transmissão adaptável (normalmente, são GOPs de 2 segundos, Distâncias de fotogramas de chave de 2s min e máx. e codificação do modo de Velocidade de Transmissão Constante (CBR).

    Veja o exemplo do SDK mp4 .NET existente em fluxo para obter detalhes sobre como gerar o .ism (manifesto do servidor) e .ismc (manifestos de cliente) para transmissão em fluxo a partir de um ficheiro MP4 pré-codificado existente.

  3. Publique o elemento de saída que contém o conjunto MP4 de velocidade de transmissão adaptável. Publica ao criar um localizador de transmissão em fluxo.

  4. Crie URLs que visam diferentes formatos (HLS, MPEG-DASH e Transmissão em Fluxo Uniforme). O ponto final de transmissão em fluxo trataria de servir o manifesto e os pedidos corretos para todos estes formatos diferentes.

O caminho de transferência está presente na imagem acima apenas para mostrar que pode transferir um ficheiro MP4 diretamente através do ponto final de transmissão em fluxo (origem) (especifique a política de transmissão em fluxo transferível no localizador de transmissão em fluxo).
O empacotador dinâmico não está a alterar o ficheiro. Opcionalmente, pode utilizar as APIs de armazenamento de blobs do Azure para aceder diretamente a um MP4 para transferência progressiva se quiser ignorar as funcionalidades de ponto final de transmissão em fluxo (origem).

Codificar para MP4s de velocidade de transmissão adaptável

Os artigos seguintes mostram exemplos de como codificar um vídeo com os Serviços de Multimédia:

Veja a lista de codecs e formatos de entrada do Codificador Standard suportados.

Fluxo de trabalho de transmissão em fluxo em direto

Um evento em direto pode ser definido como um pass-through (um codificador em direto no local envia uma transmissão em fluxo de velocidade de transmissão múltipla) ou codificação em direto (um codificador em direto no local envia uma única transmissão em fluxo de velocidade de transmissão).

Eis um fluxo de trabalho comum para transmissão em fluxo em direto com empacotamento dinâmico:

  1. Criar um evento em direto.
  2. Obtenha o URL de ingestão e configure o codificador no local para utilizar o URL para enviar o feed de contribuição.
  3. Obtenha o URL de pré-visualização e utilize-o para verificar se a entrada do codificador está a ser recebida.
  4. Crie um novo recurso.
  5. Crie um resultado dinâmico e utilize o nome do recurso que criou.
    A saída em direto arquiva a transmissão para o elemento.
  6. Crie um localizador de transmissão em fluxo com os tipos de políticas de transmissão em fluxo incorporados.
    Se pretender encriptar os seus conteúdos, reveja Descrição geral da proteção de conteúdos.
  7. Liste os caminhos no localizador de transmissão em fluxo para obter os URLs a utilizar.
  8. Obtenha o nome do anfitrião do ponto final de transmissão em fluxo a partir do qual pretende transmitir em fluxo.
  9. Crie URLs que visam diferentes formatos (HLS, MPEG-DASH e Transmissão em Fluxo Uniforme). O ponto final de transmissão em fluxo trata de servir o manifesto e os pedidos corretos para os diferentes formatos.

Para obter informações sobre a transmissão em fluxo em direto nos Serviços de Multimédia v3, consulte Live streaming overview (Descrição geral da transmissão em fluxo em direto).

Codecs de vídeo suportados pelo Dynamic Packaging

O empacotamento dinâmico suporta ficheiros de vídeo que estão no formato de ficheiro de contentor MP4 e contêm vídeo codificado com H.264 (MPEG-4 AVC ou AVC1) ou H.265 (HEVC, hev1 ou hvc1).

Nota

Foram testadas resoluções de até 4K e taxas de fotogramas até 60 fotogramas/segundo com empacotamento dinâmico.

Codecs de áudio suportados pelo empacotamento dinâmico

O empacotamento dinâmico também suporta ficheiros de áudio armazenados no formato de contentor de ficheiros MP4 que contêm transmissão de áudio codificada num 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 tem de ser armazenado no formato de contentor MP4 para funcionar com o Empacotamento Dinâmico.

  • Dolby Atmos

    O conteúdo do Dolby Atmos de transmissão em fluxo é suportado para normas como o protocolo MPEG-DASH com o Common Streaming Format (CSF) ou o Common Media Application Format (CMAF) fragmentado MP4 e através de HTTP Live Streaming (HLS) com CMAF.

  • DTS
    Os codecs DTS suportados pelos formatos de embalagem 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 Sem Perda (sem núcleo) (dtsl)

O empacotamento dinâmico suporta várias faixas de áudio com DASH ou HLS (versão 4 ou posterior) para recursos de transmissão em fluxo que têm múltiplas faixas de áudio com vários codecs e idiomas.

Para todos os codecs de áudio acima, o áudio codificado tem de ser armazenado no formato de contentor MP4 para funcionar com o Empacotamento Dinâmico. O serviço não suporta formatos de ficheiros de fluxo elementar não processados no armazenamento de blobs (por exemplo, não seria suportado o seguinte – .dts, .ac3.)

Apenas os ficheiros com o .mp4 da extensão .mp4a são suportados para o empacotamento de áudio.

Limitações

Limitação do iOS no áudio do AAC 5.1

Os dispositivos Apple iOS não suportam codec de áudio AAC 5.1. O áudio multicanal tem de ser codificado com codecs Dolby Digital ou Dolby Digital Plus.

Para obter informações detalhadas, veja Especificação de criação do HLS para dispositivos apple.

Nota

Os Serviços de Multimédia não suportam a codificação do Dolby Digital, Dolby Digital Plus ou Dolby Digital Plus com formatos de áudio multicanal Dolby Atmos.

Áudio do Dolby Digital

Atualmente, o empacotamento dinâmico dos Serviços de Multimédia não suporta ficheiros que contenham áudio Dolby Digital (AC3) (uma vez que este é considerado um codec legado pelo Dolby).

Manifestos

No empacotamento dinâmico dos Serviços de Multimédia, os manifestos de cliente de transmissão em fluxo para HLS, MPEG-DASH e Smooth Streaming são gerados dinamicamente com base na consulta de formato no URL.

Um ficheiro de manifesto inclui metadados de transmissão em fluxo, como o tipo de faixa (áudio, vídeo ou texto), o nome da faixa, a hora de início e de fim, a velocidade de transmissão (qualidades), os idiomas de monitorização, a janela de apresentação (janela deslizante de duração fixa) e o codec de vídeo (FourCC). Também instrui o leitor a obter o fragmento seguinte, fornecendo informações sobre os próximos fragmentos de vídeo reproduzíveis que estão disponíveis e a sua localização. Os fragmentos (ou segmentos) são os "segmentos" reais dos conteúdos de vídeo.

Exemplos

HLS

Eis um exemplo de um ficheiro de manifesto HLS, também denominado lista de reprodução principal do 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

Eis um exemplo de um ficheiro de manifesto MPEG-DASH, também denominado 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>

Transmissão em Fluxo Uniforme

Eis um exemplo de um ficheiro de manifesto de Transmissão em Fluxo Uniforme:

<?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 for especificado um nome de faixa de áudio no ficheiro .ism, os Serviços de Multimédia adicionam um Label elemento dentro de um AdaptationSet para especificar as informações texturais 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 leitor pode utilizar o Label elemento para apresentar na IU.

Sinalização de faixas de descrição de áudio

Pode adicionar uma faixa de narração ao seu vídeo para ajudar os clientes com deficiências visuais a seguir a gravação de vídeo ao ouvir a narração. Tem de anotar uma faixa de áudio como descrição de áudio no manifesto. Para tal, adicione os parâmetros "acessibilidade" e "função" ao ficheiro .ism. É da sua responsabilidade definir estes parâmetros corretamente para sinalizar uma faixa de áudio como descrição de áudio. Por exemplo, adicione <param name="accessibility" value="description" /> e <param name="role" value="alternate" ao ficheiro .ism para uma faixa de áudio específica.

Manifesto de Transmissão em Fluxo Uniforme

Se estiver a reproduzir uma transmissão em fluxo de Transmissão em Fluxo Uniforme, o manifesto transportará valores e AccessibilityRole atributos para essa faixa de áudio. Por exemplo, Role="alternate" Accessibility="description" seria adicionado ao StreamIndex elemento para indicar que é uma descrição de áudio.

Manifesto DASH

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

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

Lista de reprodução do HLS

Para o HLS v7 e superior (format=m3u8-cmaf), a lista de reprodução seria executada AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video" quando a faixa de descrição de áudio é sinalizada.

Filtragem de Manifesto Dinâmico

Para controlar o número de faixas, formatos, velocidades de transmissão e janelas de tempo de apresentação que são enviadas aos leitores, pode utilizar a filtragem dinâmica com o empacotador dinâmico dos Serviços de Multimédia. Para obter mais informações, veja Pré-filtrar manifestos com o empacotador dinâmico.

Encriptação dinâmica para DRM

Pode utilizar a encriptação dinâmica para encriptar dinamicamente os seus conteúdos em direto ou a pedido com a AES-128 ou qualquer um dos três principais sistemas de gestão de direitos digitais (DRM): Microsoft PlayReady, Google Widevine e Apple FairPlay. Os Serviços de Multimédia também fornecem um serviço para fornecer chaves AES e licenças DRM a clientes autorizados. Para obter mais informações, veja encriptação dinâmica.

Nota

Widevine é um serviço fornecido pela Google Inc. e sujeito aos termos de serviço e Política de Privacidade da Google, Inc.

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: