# Transmissão dinâmica adaptável por HTTP

O Streaming Adaptativo Dinâmico sobre HTTP (Dynamic Adaptive Streaming over HTTP, DASH), também conhecido como MPEG-DASH, é uma técnica de streaming de taxa de bits adaptável que permite streaming de alta qualidade de conteúdo de mídia pela Internet fornecido por servidores web HTTP convencionais. Semelhante à solução HTTP Live Streaming (HLS) da Apple, o MPEG-DASH funciona dividindo o conteúdo em uma sequência de pequenos segmentos, que são servidos por HTTP. Um sistema de streaming baseado em servidor web HTTP antigo chamado SProxy foi desenvolvido e implantado nos Laboratórios Hewlett Packard em 2006. Ele mostrou como usar solicitações de intervalo HTTP para dividir o conteúdo em pequenos segmentos. O SProxy mostra a eficácia do streaming baseado em segmentos, obtendo melhor penetração na Internet devido à ampla implantação de firewalls e reduzindo a transmissão de tráfego desnecessária se um usuário decidir encerrar a sessão de streaming antes de chegar ao fim. Cada segmento contém um curto intervalo de tempo de reprodução de conteúdo que pode ter muitas horas de duração, como um filme ou a transmissão ao vivo de um evento esportivo. O conteúdo é disponibilizado em uma variedade de taxas de bits diferentes, ou seja, segmentos alternativos codificados em diferentes taxas de bits cobrindo intervalos curtos alinhados de tempo de reprodução. Enquanto o conteúdo está sendo reproduzido por um cliente MPEG-DASH, o cliente usa um algoritmo de adaptação de taxa de bits (ABR) para selecionar automaticamente o segmento com a maior taxa de bits possível que pode ser baixado a tempo para reprodução sem causar paradas ou eventos de re-buffering na reprodução. O cliente de referência MPEG-DASH atual dash.js oferece algoritmos de adaptação de taxa de bits baseados em buffer (BOLA) e híbridos (DYNAMIC). Dessa forma, um cliente MPEG-DASH pode se adaptar perfeitamente às mudanças nas condições da rede e fornecer reprodução de alta qualidade com poucas paradas ou eventos de re-buffering.
MPEG-DASH é a primeira solução de streaming de taxa de bits adaptável baseada em HTTP que é um padrão internacional. O MPEG-DASH não deve ser confundido com um protocolo de transporte — o protocolo de transporte que o MPEG-DASH usa depende de qual versão do HTTP é usada: TCP sobre HTTP e HTTP/2, ou UDP sobre HTTP/3. O MPEG-DASH usa a infraestrutura existente de servidor web HTTP que é usada para entrega de essencialmente todo o conteúdo da World Wide Web. Ele permite que dispositivos como televisores conectados à Internet, decodificadores de TV, computadores de mesa, smartphones, tablets, etc. recebam conteúdo multimídia (vídeo, TV, rádio, etc.) transmitido pela Internet, lidando com condições variáveis de recebimento da Internet. Padronizar uma solução de streaming adaptável tem como objetivo fornecer confiança ao mercado de que a solução pode ser adotada para implantação universal, em comparação a soluções semelhantes, mas mais proprietárias, como o Smooth Streaming da Microsoft ou o HDS da Adobe. Ao contrário do HDS, ou Smooth Streaming, o DASH é independente de codec, o que significa que pode usar conteúdo codificado com qualquer formato de codificação, como H.265, H.264, VP9, etc.

## Padronização

A tecnologia MPEG-DASH foi desenvolvida sob MPEG. O trabalho no DASH começou em 2010; tornou-se um Projeto de Norma Internacional em janeiro de 2011 e uma Norma Internacional em novembro de 2011. O padrão MPEG-DASH foi publicado em abril de 2012, mas foi revisado em 2019 e novamente em 2022 como .
DASH é uma tecnologia relacionada ao Adobe Systems HTTP Dynamic Streaming, Apple Inc. HTTP Live Streaming (HLS) e Microsoft Smooth Streaming. O DASH é baseado no Adaptive HTTP streaming (AHS) no 3GPP Release 9 e no HTTP Adaptive Streaming (HAS) no Open IPTV Forum Release 2. Como parte de sua colaboração com o MPEG, o 3GPP Release 10 adotou o DASH (com codecs e modos de operação específicos) para uso em redes sem fio.
O DASH Industry Forum (DASH-IF) promove e catalisa ainda mais a adoção do MPEG-DASH e ajuda na transição de uma especificação para um negócio real. Ela é composta por grandes empresas de streaming e mídia, incluindo Microsoft, Netflix, Google, Ericsson, Samsung, Adobe, etc., e cria diretrizes sobre o uso do DASH para diferentes casos de uso na prática.
O MPEG-DASH está integrado em outros padrões, por exemplo, o MPEG-DASH é suportado no HbbTV (a partir da versão 1.5).

## Visão geral

DASH é uma tecnologia de streaming de taxa de bits adaptável onde um arquivo multimídia é particionado em um ou mais segmentos e entregue a um cliente usando HTTP. Uma descrição de apresentação de mídia (MPD) descreve informações de segmento (tempo, URL, características de mídia como resolução de vídeo e taxas de bits) e pode ser organizada de diferentes maneiras, como SegmentList, SegmentTemplate, SegmentBase e SegmentTimeline, dependendo do caso de uso. Os segmentos podem conter quaisquer dados de mídia, no entanto, a especificação fornece orientações e formatos específicos para uso com dois tipos de contêineres: formato de arquivo de mídia base ISO (por exemplo, formato de arquivo MP4) ou fluxo de transporte MPEG-2.
O DASH é independente de codecs de áudio/vídeo. Uma ou mais representações (ou seja, versões em diferentes resoluções ou taxas de bits) de arquivos multimídia estão normalmente disponíveis, e a seleção pode ser feita com base nas condições da rede, capacidades do dispositivo e preferências do usuário, permitindo streaming de taxa de bits adaptável e justiça QoE (Qualidade da Experiência). O padrão DASH não especifica a lógica de streaming de taxa de bits adaptável (ABR). O DASH também é independente do protocolo da camada de aplicação subjacente. Assim, o DASH pode ser usado com qualquer protocolo, por exemplo, DASH sobre CCN.
Em 27 de julho de 2015, a MPEG LA anunciou um apelo à apresentação de patentes relacionadas com o MPEG-DASH, a fim de criar um único conjunto de patentes para esta tecnologia. A MPEG LA anunciou sua licença de portfólio de patentes MPEG-DASH. A MPEG-LA afirma que as patentes incluídas são essenciais para o padrão MPEG Dynamic Adaptive Streaming over HTTP.

## Implementações

O MPEG-DASH está disponível nativamente no Android através do ExoPlayer, nas Smart TVs Samsung 2012+, LG Smart TV 2012+, Sony TV 2012+, Philips NetTV 4.1+, Panasonic Viera 2013+ e Chromecast. O YouTube e a Netflix já oferecem suporte a MPEG-DASH, e diferentes reprodutores de MPEG-DASH estão disponíveis.
Embora o MPEG-DASH não seja diretamente suportado no HTML5, existem implementações JavaScript do MPEG-DASH que permitem o uso do MPEG-DASH em navegadores da web usando as extensões de fonte de mídia HTML5 (MSE). Existem também implementações de JavaScript, como o player bitdash que suporta DRM para MPEG-DASH usando as extensões de mídia criptografadas HTML5. Em combinação com WebGL, o streaming de taxa de bits adaptável baseado em HTML5 do MPEG-DASH também permite o streaming eficiente de vídeo 360° para casos de uso ao vivo e sob demanda.

### Clientes e bibliotecas

* Shaka Player é o reprodutor de vídeo DASH HTML5 de código aberto do Google para conexões de baixa largura de banda.
* O VLC media player 3.0 lançou um novo plugin cliente para MP4/MPEG e transmissões ao vivo.
* A estrutura multimídia FOSS multiplataforma GStreamer oferece suporte a MPEG-DASH e WebM DASH desde pelo menos a versão 1.4.
* A biblioteca de código aberto libdash é independente de plataforma e roda em plataformas móveis como Android, iOS, Windows Phone.
* bitmovin fornece o player bitdash MPEG-DASH para HTML5 e Flash.
* VideoJS é um reprodutor de vídeo HTML5 de código aberto, compatível com HLS, DASH, WebM e MP4 progressivo para streaming ao vivo e VOD.
* Clappr é um reprodutor de vídeo HTML5 de código aberto, usa HTMLVideoElement, suporta DASH, HLS, progressivo, inserção de anúncios, sobreposições dinâmicas, imagem em imagem

### Servidores

Observe que nenhum suporte específico é necessário do servidor para conteúdo DASH, com exceção de transmissão ao vivo.
* O Wowza Streaming Engine oferece suporte à reprodução MPEG-DASH com DVR e fornece publicação DASH Stream Target para Akamai.
* O Brightcove Zencoder tem suporte para transcodificação/transmuxação MPEG-DASH.
* As soluções de processamento de vídeo da Elemental Technologies são compatíveis com DASH.
* O Helix Universal Server tem suporte para DASH em vários modos.
* O Nimble Streamer tem suporte para MPEG-DASH ao vivo e VOD. Para VOD, ele suporta codecs H.265 e H.264
* O Unified Origin suporta MPEG-DASH.

### Serviços

* Akamai CDN suporta DASH.
* O Amazon CloudFront CDN é compatível com DASH.
* O Amazon Web Services Elastic Transcoder tem suporte para MPEG-DASH.
* A plataforma Azure Media Services oferece suporte para MPEG-DASH.
* A Bitmovin fornece o serviço de transcodificação baseado em nuvem bitcodin.com que suporta MPEG-DASH.
* O Cloudflare Stream oferece suporte à transcodificação para DASH no VP9 antes de ser fornecido ao usuário final.
* O Cloudinary fornece transcodificação automática com suporte para MPEG-DASH.
* O Lumen CDN suporta DASH.
* O CDN da Limelight Networks oferece suporte a DASH.
* O Project Shield CDN oferece suporte a DASH.
* O Tata Communications CDN oferece suporte a DASH.
* Monitoramento de alarme DogalZeka MS2, transcodificação e gravação com suporte de entrada/saída DASH.$^[$
* A plataforma Resi Live Stream oferece suporte à ingestão, transcodificação e entrega CDN de MPEG-DASH.$^[$

### Geradores de conteúdo

* DASHEncoder do ITEC.
* MP4Box e sua estrutura multimídia do GPAC na Télécom Paris
* dashcast da Télécom Paris suporta transmissão ao vivo MPEG-DASH
* Empacotador MPEG-DASH do MediaGoom
* Ferramentas de código aberto e SDK Bento4

### Outro

* O ITEC oferece um serviço de validação para arquivos MPEG-DASH Media Presentation Description (MPD)
* Vários conjuntos de dados DASH são oferecidos pelo Instituto de Tecnologia da Informação (ITEC) da Universidade Alpen-Adria de Klagenfurt, o grupo GPAC da Telecom ParisTech e Digital TV Labs.
* A BBC tem fluxos de teste DASH, incluindo DASH sobre HTTP/2.
* O Widevine DRM suporta DASH e extensões de mídia criptografadas.
* A Mividi fornece uma ferramenta de software para analisar e monitorar fluxos MPEG-DASH ao vivo.

## Players e servidores suportados
### Clientes

O Windows 10 costumava ter suporte nativo para streaming DASH no EdgeHTML, um mecanismo de navegador proprietário que era usado no Microsoft Edge (agora conhecido como Edge Legacy) antes da transição para o mecanismo de navegador Blink baseado no Chromium. O Edge Legacy foi incluído no Windows 10 até a versão 2004. Ele foi substituído pelo Edge Chromium na versão 20H2.

### Clientes

O suporte ao DASH em outros navegadores e sistemas operacionais está disponível por meio do Media Source Extensions.
| Produto | Tipo de produto | Plataforma | Transmissão ao vivo | Sem DRM | A partir da versão | Editor |
| Microsoft Edge | Web browser | Windows 10 | Suporte nativo no Edge Legacy.Suporte via Media Source Extensions no Edge Chromium. | Não | Suportado nativamente no mecanismo EdgeHTML do Edge Legacy da versão 12 a 18. Não há suporte nativo no Edge Chromium da versão 79 até o presente. | Microsoft |
| VLC media player | Media player | Windows, macOS, Linux, Android, iOS, Windows Phone | Sim | Sim | v3.0 | VideoLAN |
| Media Player Classic - Home Cinema (MPC-HC) Media Player Classic - Black Edition (MPC-BE) | Media player | Windows | Sim | Sim | v2.0.0 (MPC-HC) v1.5.0 (MPC-BE) O suporte para reprodução de fluxos DASH pode ser instável. | MPC-HC Community Forum, Alexander Vodiannikov |
| MX Player | Media player | Android | Sim | Não | v1.9.18 O suporte para reprodução de fluxos DASH está instável no momento. | J2 Interactive |
| NexPlayer | SDK | HTML5 (MSE Browsers), Android (mobile, TV, STB), iOS, Chromecast, Windows, Mac, Linux, Tizen, WebOS | Sim | Não | — | NexStreaming |
| Dash.js | SDK | HTML5 (MSE Browsers) | Sim | Não | — | Dash Industry Forum |
| Shaka Player | SDK | HTML5 (MSE Browsers) | Sim | Não | — | Google |
| Rx-Player | SDK | HTML5 (MSE Browsers) | Sim | Não | — | Canal+ |
| bitdash | SDK | HTML5 (MSE Browsers), Android, LG TVs, Samsung TVs, Xbox One, Universal Windows Platform | Sim | Não | — | Bitmovin |
| PRESTOplay | SDK | HTML5 (MSE Browsers), Android, iOS, Windows, Mac | Sim | Não | — | castLabs |
| THEOplayer | SDK | HTML5 (MSE Browsers), Android (mobile, TV, STB), iOS, Chromecast, Windows, Mac, Linux, Tizen, WebOS | Sim | Não | — | THEO Technologies NV |
| Viblast Player | SDK | HTML5 (MSE Browsers), Android, iOS | Sim | Não | — | Viblast Team |
| Radiant Media Player | SDK | HTML5 (MSE Browsers), Android, iOS, Windows, Mac, Linux | Sim | Não | — | Radiant Media Player |
| Videogular | SDK | HTML5 (MSE Browsers) | Sim | Não | — | |
| Fluid Player | SDK | HTML5 (MSE Browsers) | Sim | Não | — | ExoClick |
| GStreamer | Multimedia framework | — | Sim | Não | 1.4 | GStreamer Team |
| Libdash | Multimedia framework | — | Sim | Não | — | bitmovin, ITEC Team |
| GPAC | Multimedia framework | — | Sim | Não | — | Telecom ParisTech inc. |

## Titulares de patentes

| Organização | Patentes |
| Maxell | 15 |
| The Netherlands Organisation for Applied Scientific Research (TNO) | 8 |
| Nippon Telegraph and Telephone (NTT) | 5 |
| Fraunhofer | 4 |
| Columbia University | 4 |
| Amotech Co., Ltd. | 2 |
| AVerMedia Technologies, Inc. | 2 |
| Cable Television Laboratories, Inc. | 2 |
| Helios Streaming, LLC | 2 |
| JVC Kenwood | 1 |
| Lough Corrib Intellectual Property Limited | 1 |