TV 3.0: como criar apps com ATSC 3.0 na prática para devs

TV 3.0: como criar apps com ATSC 3.0 na prática para devs

A televisão aberta no Brasil está prestes a passar pela maior mudança técnica desde a digitalização. E, diferentemente do que aconteceu na transição do sinal analógico para o digital, dessa vez quem programa tem papel central. Segundo o Olhardigital.com.br, a chamada TV 3.0 quer unir a experiência tradicional da TV aberta aos recursos que já conhecemos das plataformas de streaming e da web. Mas o que isso significa na prática, do ponto de vista de quem desenvolve software? É isso que quero destrinchar aqui.

O que muda tecnicamente na TV 3.0

A TV 3.0 brasileira é, na essência, a adoção do ATSC 3.0 (Advanced Television Systems Committee), padrão norte-americano que já está em operação nos EUA desde 2017 e que o Brasil vem testando nos últimos anos. O grande diferencial técnico é que o ATSC 3.0 abandona o MPEG-TS (Transport Stream) usado no ATSC 1.0 e no SBTVD e migra para uma pilha totalmente IP-based, baseada em ROUTE (Real-time Object delivery over Unidirectional Transport) e DASH (Dynamic Adaptive Streaming over HTTP).

Para um dev, esse é o ponto-chave. O sinal que chega na antena da televisão deixa de ser “só vídeo” e passa a ser tratado como um stream de objetos HTTP. Isso abre a porta para que as emissoras embutam, no mesmo fluxo, aplicações HTML5, manifests interativos, conteúdo sob demanda e até APIs locais no receptor.

Na minha experiência com desenvolvimento web, sempre que um meio migra para HTTP/IP surge uma explosão de possibilidades — e também de armadilhas. A mesma coisa aconteceu com a telefonia quando o SIP apareceu e com o rádio quando o RDS evoluiu para o híbrido. A TV 3.0 está nesse mesmo movimento.

A pilha técnica por baixo do capô

Quando você abre um canal numa TV com ATSC 3.0, o receptor baixa, via broadcast, um DASH manifest chamado Service Announcement. Esse manifest lista os serviços disponíveis, os componentes de áudio e vídeo, legendas e as aplicações interativas. A partir daí, três caminhos coexistem:

  1. Broadcast puro: áudio e vídeo continuam chegando via RF, sem necessidade de internet. Isso garante resiliência — algo que Luana Bravo, diretora executiva da SET, destacou na entrevista ao Olhar Digital.
  2. Broadband (HBB): a TV usa a conexão de internet do usuário para puxar conteúdo complementar, personalização e dados adicionais.
  3. Aplicações embarcadas: apps HTML5/CSS/JS rodando num runtime dentro do próprio receptor (especificação ATSC A/344).

Esse terceiro caminho é o mais interessante para quem programa. O runtime é compatível com W3C, suporta CSS moderno, JavaScript e até WebGL em alguns receptores. É, na prática, um navegador embarcado — só que sem a barra de URL e com APIs proprietárias para acessar o sintonizador, o áudio principal, legendas e o estado do buffer.

Na Prática: o que dá para construir hoje

Se você quiser experimentar o desenvolvimento de apps para ATSC 3.0, o caminho mais curto é usar o simulador acudo mantido pela ATSC. Ele permite criar receivers e serviços localmente, sem precisar de equipamento RF. Abaixo, um exemplo simplificado de um manifesto de aplicação interativa (ilustrativo, baseado em A/344):

{
  "serviceId": "br.yuridev.demo",
  "appUrl": "https://cdn.yurideveloper.com.br/tv30/quiz.html",
  "interactive": true,
  "fallbackBroadcast": {
    "video": "1080p_hdr",
    "audio": "immersive_5_1_4"
  },
  "capabilities": [
    "secondScreen",
    "purchaseIntent",
    "altAudioTracks"
  ]
}

Esse manifesto é entregue junto com o serviço broadcast. Quando o usuário pressiona o botão vermelho no controle remoto, o receptor baixa o appUrl, abre num WebView seguro e passa o contexto (canal atual, timecode, audiência) via uma API JavaScript local. O segundo fluxo mais comum é o chamado “second screen” — o celular pareado com a TV via protocolo companion. Para esse caso, o handshake típico usa WebSocket com autenticação por token curto:

// Cliente second screen (browser/mobile)
const socket = new WebSocket('wss://receiver.local:7682/tv30');

socket.addEventListener('open', () => {
  socket.send(JSON.stringify({
    type: 'HANDSHAKE',
    device: 'mobile',
    pairingCode: prompt('Digite o código da TV'),
    capabilities: ['touch', 'accelerometer']
  }));
});

socket.addEventListener('message', (evt) => {
  const msg = JSON.parse(evt.data);
  if (msg.type === 'SYNC') {
    document.querySelector('#time').textContent = msg.currentTime;
  }
  if (msg.type === 'PURCHASE_PROMPT') {
    showCheckout(msg.product); // abre fluxo de compra integrado
  }
});

Note uma coisa importante: como o broadcast é unidirecional, qualquer retorno do usuário (compra, voto, formulário) precisa obrigatoriamente sair pelo canal broadband. Por isso a TV 3.0 não substitui a internet — ela depende dela para o “lado interativo”. E aqui mora um dos pontos que pouca gente comenta.

O que evitar: armadilhas comuns

Quando se trabalha com ATSC 3.0 ou DASH em produção, alguns erros aparecem com frequência e derrubam projetos-piloto:

  • Assumir que toda TV tem internet: a especificação exige fallback broadcast. Se o seu app trava quando o Wi-Fi cai, você quebra a UX prometida pela TV 3.0. Teste sempre em modo offline.
  • Ignorar a latência do broadcast: o sinal RF tem delay maior que streaming broadband (em geral, 3 a 6 segundos). Se o seu app reage a eventos em tempo real, sincronize o timecode usando a API MediaSync do runtime.
  • Confundir DRM de streaming com DRM de broadcast: ATSC 3.0 usa um esquema próprio baseado em certificados gravados no hardware do receptor. Não adianta tentar plugar Widevine ou PlayReady diretamente.
  • Subestimar o consumo de banda: 4K HDR com áudio imersivo 5.1.4 pode exigir 25–35 Mbps por stream. Em regiões metropolitanas isso é tranquilo, mas no interior ainda é gargalo.
  • Esquecer de acessibilidade: a TV 3.0 traz múltiplos áudios (áudio descrição, dublagem alternativa, narração esportiva). Se o app não respeita a trilha ativa no receptor, você ignora uma fatia importante da audiência.

Na minha vivência, esses são exatamente os pontos onde a empolgação inicial com “TV interativa” esbarra em requisitos não-funcionais: sincronia, offline-first, acessibilidade e DRM. Planeje isso desde a primeira sprint ou vai engasgar no meio.

Comparação com o que já existe

Vale colocar a TV 3.0 lado a lado com o que o mercado já entrega para entender de verdade onde ela compete:

Critério TV 3.0 (ATSC 3.0) Streaming (Netflix, Globoplay) Smart TV apps (Tizen, WebOS)
Cobertura sem internet Sim Não Não
Personalização por usuário Parcial (via broadband) Total Total
Interatividade no conteúdo Alta (apps HTML5) Média (limitada ao app) Baixa
Custo marginal por usuário Quase zero após o broadcast Alto (CDN por demanda) Alto
Privacidade por padrão Alta (sem login obrigatório) Baixa (login forçado) Média

A grande sacada está no último ponto. Em tempos de LGPD e de crescente rejeição a rastreamento, a TV aberta tem uma carta forte: dá para assistir sem entregar dado algum. A TV 3.0 preserva isso no broadcast puro e só captura dados quando o usuário opta pelo app interativo. Esse é um diferencial difícil de copiar no streaming.

O que isso significa para o mercado de dev

Na prática, abre uma frente nova de trabalho que estava dominada por integradores de broadcast. Hoje, a maioria dos apps para TV é fragmentada por plataforma (Tizen, WebOS, Android TV, Roku). Com o ATSC 3.0, o runtime é padronizado e o app é, em essência, um pacote web. Isso derruba a barreira de entrada: um dev front-end com conhecimento de DASH, Service Workers e acessibilidade consegue entrar no jogo.

Há ainda oportunidades em camadas adjacentes: testes automatizados de receivers, ferramentas de authoring para emissoras, dashboards de telemetria de audiência e middleware de second screen. Tudo isso é terreno praticamente virgem no Brasil. Quem se posicionar primeiro vai ditar os padrões.

FAQ — Perguntas que um dev faria

1. Preciso aprender um framework novo para desenvolver apps de TV 3.0?
Não. O runtime é W3C-compliant. Se você já trabalha com HTML5, CSS moderno e JavaScript, o esforço principal é entender as APIs proprietárias (sintonizador, MediaSync, second screen) e o ciclo de vida do receiver — nada que um dev sênior não absorva em algumas semanas.

2. Como funciona o DRM no ATSC 3.0?
Ele usa um esquema de assinatura de conteúdo baseado em certificados gravados no hardware do receptor. Para devs, isso se traduz em chamadas à API getDRMSession() do runtime. Widevine e PlayReady não se aplicam diretamente ao broadcast.

3. A TV 3.0 substitui o streaming?
Não. Ela é complementar. O broadcast entrega o “filé” (evento ao vivo, alta audiência simultânea) a custo marginal quase zero. O streaming cuida do catálogo personalizado, recomendações e funcionalidades que exigem login. Os dois devem conviver.

4. Dá para testar sem ter uma TV compatível?
Sim. O projeto acudo da ATSC e o libatsc3 permitem montar um pipeline completo (emissão + recepção) em Linux. Para prototipar apps, um browser comum já serve como aproximação razoável durante o desenvolvimento.

5. Quem está investindo nisso no Brasil hoje?
A SET (Sociedade Brasileira de Engenharia de Televisão) coordena os testes, com participação de emissoras como Globo, SBT, Record e Band, além de fabricantes como Samsung e LG, e integradores como EiTV e Linear. Também há chamadas públicas recentes da Anatel e do Ministério das Comunicações ligadas ao tema.

Se você trabalha com web e quer surfar essa onda sem virar refém de plataforma fechada, comece estudando ATSC 3.0 A/344, as guidelines do DASH-IF e o HbbTV (padrão europeu, conceitualmente próximo). É um terreno com pouca gente capacitada e demanda emergente real.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.