RecursosDOCUMENTAÇÃO

Guia de início rápido: integre live streaming na sua plataforma em minutos

Mai 2025·12 min de leitura

Integrar live streaming a uma plataforma existente costumava demandar semanas de trabalho: configurar servidores de mídia, lidar com transcodificação, montar uma CDN, implementar autenticação... Com a EdTurb, todo esse stack já está pronto. Você só precisa das chamadas de API certas.

Este guia cobre do zero ao primeiro stream funcional. Ao final, você terá uma sala de transmissão criada, tokens de acesso gerados e um botão "Ir ao Vivo" funcionando na sua interface.

Pré-requisitos

  • Conta EdTurb com API Key, disponível no dashboard em Configurações → API.
  • Node.js 18 ou superior (ou Python 3.10+, PHP 8.1+, Go 1.21+ para outras linguagens).
  • Conhecimento básico de requisições HTTP e async/await.

Guarde sua API Key em uma variável de ambiente (EDTURB_API_KEY). Nunca a exponha no frontend ou em repositórios públicos, ela concede acesso completo à sua conta.

Passo 1, Instalação do SDK

Instale o pacote via npm ou yarn:

bash
npm install @edturb/node-sdk
# ou
yarn add @edturb/node-sdk

Passo 2, Inicializando o cliente

O EdTurbClient é o ponto de entrada para toda a API. Instancie-o uma vez e reutilize ao longo da aplicação:

javascript
import { EdTurbClient } from "@edturb/node-sdk";

const client = new EdTurbClient({
  apiKey: process.env.EDTURB_API_KEY,
});

// Opcional: definir região preferencial
// const client = new EdTurbClient({
//   apiKey: process.env.EDTURB_API_KEY,
//   region: "sa-east-1", // São Paulo
// });

Passo 3, Criando uma sala de transmissão

Uma sala (room) é a unidade fundamental da EdTurb. Cada evento ao vivo precisa de uma sala. Ela encapsula as configurações de streaming, a lista de participantes e as permissões.

javascript
const room = await client.rooms.create({
  name: "aula-introducao-react",   // identificador amigável
  maxViewers: 5000,                // limite de espectadores simultâneos
  latencyMode: "low",              // "low" | "standard"
  recording: {
    enabled: true,                 // gravar automaticamente
    storage: "edturb",             // ou "s3" com suas credenciais
  },
});

console.log(room.id);    // "rm_abc123"
console.log(room.ingestUrl); // URL RTMP para o software de streaming

Reutilizando salas

Salas são persistentes, você pode usar a mesma sala para múltiplos eventos, simplificando o gerenciamento. O estado de "ao vivo" é controlado pelo stream, não pela sala.

Passo 4, Gerando tokens de acesso

Cada participante, streamer ou espectador, precisa de um token JWT assinado pela EdTurb para entrar na sala. Gere esses tokens no seu backend e envie-os ao frontend:

javascript
// Token para o streamer (quem transmite)
const streamerToken = await client.auth.createToken({
  roomId: room.id,
  userId: "user-456",          // ID do usuário na sua plataforma
  role: "streamer",            // pode publicar vídeo e áudio
  expiresIn: "2h",
  metadata: {
    name: "Prof. Carlos Lima",
  },
});

// Token para espectadores (quem assiste)
const viewerToken = await client.auth.createToken({
  roomId: room.id,
  userId: "viewer-789",
  role: "viewer",              // apenas recebe, não publica
  expiresIn: "4h",
});

Gere sempre os tokens no servidor, nunca no cliente. O SDK de frontend recebe o token pronto e o usa para autenticar a conexão com a sala.

Passo 5, Conectando o frontend

No lado do browser, use o SDK web para conectar o usuário à sala usando o token gerado:

javascript
import { EdTurbClient } from "@edturb/web-sdk";

const client = new EdTurbClient();
const actions = client.getActions();
const store   = client.getStore();

// Conectar à sala com o token recebido do backend
await actions.join({
  roomId: "<room-id>",
  authToken: streamerToken,   // ou viewerToken para espectadores
});

// Iniciar transmissão ao vivo (apenas role: "streamer")
await actions.startLive();

Passo 6, Monitorando o stream

Use webhooks para receber notificações de eventos importantes sem precisar fazer polling:

javascript
// Registrar endpoint de webhook no dashboard ou via API:
await client.webhooks.create({
  url: "https://suaplataforma.com/webhooks/edturb",
  events: [
    "stream.started",
    "stream.ended",
    "viewer.joined",
    "recording.ready",
  ],
});

// No seu servidor Express/Next.js:
// POST /webhooks/edturb
export async function POST(req) {
  const event = await req.json();

  if (event.type === "recording.ready") {
    const { url, duration } = event.data;
    // Salvar URL do VOD no seu banco de dados
  }
}

Erros comuns e como resolver

  • 401 Unauthorized: verifique se a API Key está correta e não foi revogada no dashboard.
  • Token expirado (403): reduza o expiresIn ou implemente refresh automático antes do vencimento.
  • Stream não inicia: confirme que o role do token é 'streamer', tokens 'viewer' não têm permissão de publicar.
  • Alta latência inesperada: verifique se latencyMode está como 'low' e se o GOP do encoder está configurado para ≤ 2 segundos.

Próximos passos

  • Configure gravação automática com entrega em S3 ou armazenamento EdTurb.
  • Adicione reações e chat em tempo real usando o SDK de presença.
  • Implemente analytics em tempo real para monitorar viewers, bitrate e latência.
  • Explore o modo 'stage' para convidar espectadores a transmitir ao vivo.