Documentação Oficial

NetFluxo Live Streaming API

1. Como Funciona a Integração da Live

A plataforma NetFluxo Live Streaming foi projetada especificamente para transmissões ao vivo com palco para apresentadores e chat interativo para a plateia. Não é necessário instalar Node.js, WebSockets ou pacotes de streaming no seu servidor:

1. Palco & Plateia Apresentadores autenticados transmitem áudio, vídeo e tela no palco, enquanto os espectadores assistem e interagem via chat em tempo real.
2. Latência Sub-segundo Diferente do YouTube/HLS (que possuem de 10 a 15 segundos de atraso), a tecnologia WebRTC da NetFluxo entrega delay inferior a 400 milissegundos.
3. Leveza Total Um único arquivo index.php de apenas 3KB no seu Apache/cPanel é o suficiente para carregar toda a transmissão.

2. Instalação Básica (.ZIP)

Para colocar sua primeira transmissão ao vivo no ar:

  1. Baixe o pacote: No seu painel Minhas Compras, localize o card com o selo Live Streaming e clique em Baixar Módulo (.ZIP).
  2. Extraia os arquivos: Você receberá o arquivo index.php (palco principal) e o webhook-live.php (card de divulgação em tempo real).
  3. Envie para sua Hospedagem: No Gerenciador de Arquivos do cPanel (ou via FTP), abra a pasta public_html e crie uma pasta, por exemplo: public_html/live/. Envie o index.php para dentro dela.
  4. Acesse pelo navegador:
    https://seudominio.com.br/live/

3. Roteamento de Palcos & Salas

Caso tenha contratado mais de um palco ou evento simultâneo no mesmo domínio (ex: palco-principal e palco-vip), você define como a pasta carrega a transmissão:

Modo 1: Palco Padrão da Pasta

Entrada Direta

O arquivo conecta diretamente ao palco definido na variável $salaPadraoDestaPasta:

$salaPadraoDestaPasta = 'palco-principal';
Modo 2: Palco Dinâmico via URL

Parâmetro ?sala=

Você pode enviar links personalizados para seus espectadores alternarem entre os palcos pelo mesmo arquivo:

https://seudominio.com.br/live/?sala=palco-vip

4. Anatomia do index.php (Live Streaming)

Este é o código padrão fornecido no arquivo ZIP gerado para transmissões de Live Streaming:

index.php PHP 5.4 / 7.x / 8.x
<?php
/**
 * =====================================================================
 * NETFLUXO LIVE STREAMING - MÓDULO DE INTEGRAÇÃO NATIVO (MULTI-SALAS)
 * =====================================================================
 * Domínio Autorizado: seudominio.com.br
 * Palco / Sala Criada: Palco Principal (palco-principal)
 * Modalidade: EXCLUSIVA
 * Documentação Oficial: https://www.netfluxo.com.br/docs/doc-live.php
 * =====================================================================
 */

// 1. Mapeamento de Chaves por Sala (Array Associativo)
$apiKeys = array(
    'palco-principal' => 'nf_live_fe2b61dbea1047b19459571e8bd41f2d',
    'palco-vip'       => 'nf_live_a97a71817ec38a7e6911d155539eed1e'
);

$siteIdentifier = 'seudominio.com.br'; 

// 2. [EDITÁVEL] Integração de Espectadores Logados & Perfil Social
$paramName     = ''; // Ex: isset($_SESSION['nome']) ? $_SESSION['nome'] : 'Espectador';$paramUserId   = ''; // Ex: isset($_SESSION['user_id']) ?$_SESSION['user_id'] : ('guest_' . uniqid());
$paramUsername = ''; // Ex: isset($_SESSION['usuario']) ? $_SESSION['usuario'] : 'visitante';$paramAvatar   = ''; // Ex: isset($_SESSION['avatar']) ?$_SESSION['avatar'] : '';

// 3. [EDITÁVEL] Favicon personalizado da sala
$favIcon = "https://netfluxo.com.br/img/favicon.ico"; 

// 4. Escolha do Modo de Exibição da Sala:
$salaPadraoDestaPasta = 'palco-principal'; 

$paramSala = isset($_GET['sala']) ? $_GET['sala'] :$salaPadraoDestaPasta;
$primeiraChave = reset($apiKeys);$fallbackKey = $primeiraChave ? $primeiraChave : 'nf_live_fe2b61dbea1047b19459571e8bd41f2d';
$paramKey  = isset($apiKeys[$paramSala]) ?$apiKeys[$paramSala] :$fallbackKey;

$isHttps = (
    (isset($_SERVER['HTTPS']) &&$_SERVER['HTTPS'] === 'on') ||
    (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&$_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')
);
$protocolo =$isHttps ? 'https://' : 'http://';

$uriAtual = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';$caminhoLimpo = strtok($uriAtual, '?');$hostAtual = isset($_SERVER['HTTP_HOST']) ?$_SERVER['HTTP_HOST'] : 'seudominio.com.br';
$paramAppUrl  =$protocolo . $hostAtual .$caminhoLimpo;

// 5. Montagem da URL da Antessala com todos os parâmetros
$antessalaUrl = "https://videochat.netfluxo.com.br/antessala.live.html?" . http_build_query(array(
    'key'      => $paramKey,
    'sala'     => $paramSala,
    'domain'   => $siteIdentifier,
    'name'     => $paramName,
    'user_id'  => $paramUserId,
    'username' => $paramUsername,
    'avatar'   => $paramAvatar,
    'app_url'  => $paramAppUrl
));
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
  <title>Live Streaming | Meu Site</title>
  <link rel="icon" type="image/x-icon" href="<?php echo htmlspecialchars($favIcon, ENT_QUOTES, 'UTF-8'); ?>">
  <style>
    * { margin: 0; padding: 0; box-sizing: border-box; }
    html, body { width: 100%; height: 100%; height: 100dvh; overflow: hidden; background: #070b14; position: fixed; top: 0; left: 0; }
    iframe { position: absolute; top: 0; left: 0; width: 100vw; height: 100%; border: none; display: block; }
  </style>
</head>
<body>
  <iframe src="<?php echo htmlspecialchars($antessalaUrl, ENT_QUOTES, 'UTF-8'); ?>" allow="camera; microphone; display-capture; autoplay; clipboard-write" allowfullscreen></iframe>
</body>
</html>

5. Integração com Sessão de Usuários Logados

Se o seu portal possui banco de usuários (como WoWonder, WordPress, Laravel ou banco próprio), você pode preencher as variáveis do topo do index.php para que os visitantes entrem no chat da live já autenticados:

$paramName: Nome de exibição do espectador que aparecerá nas mensagens do chat ao vivo (Ex: "Lucas Fernandes"). Se deixado vazio, a antessala solicita o nome antes de entrar.
$paramUserId: ID numérico ou identificador persistente do usuário em seu banco. Essencial: é por esse ID que os moderadores do palco aplicam banimentos ou advertências, impedindo que o usuário burle punições trocando de nome.
$paramUsername: Arroba / login único do usuário (Ex: "lucas_f"). Sanitizado automaticamente sem espaços ou caracteres especiais.
$paramAvatar: URL pública e absoluta da foto de perfil (Ex: https://seudominio.com.br/uploads/lucas.jpg). Se vazio ou quebrado, o chat exibe a inicial do nome estilizada com gradiente.
Recurso Nativo Ativo

WebHooks & Cards Embed em Tempo Real (Zero F5)

Personalizar Card

O Card WebHook de Live Streaming é um componente reativo em tempo real que você pode embutir no portal do seu site parceiro. Ele monitora o palco via antena SSE, alternando automaticamente entre o status AO VIVO (com foto e nome do apresentador) e OFFLINE (com informações da próxima transmissão), sem exigir atualização de página (F5).

Como incluir no seu site (PHP ou HTML)

<!-- OPÇÃO 1: Inclusão direta em páginas PHP -->
      <?php include 'webhook-live.php'; ?>

      <!-- OPÇÃO 2: Inclusão via IFRAME com auto-ajuste de altura (Recomendada / Zero Conflito) -->
      <iframe src="https://videochat.netfluxo.com.br/webhook.live.html?sala=SLUG_DA_SALA&key=SUA_API_KEY" 
              style="width: 100%; border: none; overflow: hidden; background: transparent;" 
              scrolling="no" id="netfluxoLiveCardIframe"></iframe>

      <script>
      // O card da Live notifica a página pai em tempo real quando o tamanho mudar (Offline / Ao Vivo):
      window.addEventListener('message', function(event) {
        if (event.data && event.data.type === 'netfluxo-live-resize') {
          var ifr = document.getElementById('netfluxoLiveCardIframe');
          if (ifr) ifr.style.height = event.data.height + 'px';
        }
      });
      </script>

Disparos HTTP de Eventos (Server-to-Server)

HMAC-SHA256

Sempre que um apresentador abrir o palco ou encerrar a transmissão, o servidor NetFluxo envia uma requisição POST para a URL de Webhook cadastrada:

live.started live.ended participant.joined
// Validação da Assinatura no seu endpoint receptor (PHP):
      $payload   = file_get_contents('php://input');
      $timestamp = $_SERVER['HTTP_X_NETFLUXO_TIMESTAMP'] ?? '';
      $signature = $_SERVER['HTTP_X_NETFLUXO_SIGNATURE'] ?? '';
      $secret    = 'SUA_API_KEY_OU_WEBHOOK_SECRET';

      $esperado = hash_hmac('sha256', "{$timestamp}.{$payload}", $secret);

      if (!hash_equals($esperado, $signature)) {
          http_response_code(401);
          die('Assinatura inválida!');
      }

      $evento = json_decode($payload, true);
      // Evento autenticado com sucesso! Processar no backend...
Personalizador Visual do Card

Você pode alterar cores de fundo, bordas de status, textos e a cor dos botões com pré-visualização em tempo real através do painel.

Personalizar Card

7. Credenciais Agora.io (Exclusivo Live Privada)

Se você contratou a modalidade Live Exclusiva, sua transmissão é roteada via CDN WebRTC de alta performance da Agora.io, garantindo suporte para milhares de pessoas assistindo sem sobrecarregar sua hospedagem:

Passo 1: Criar Conta no Console

Acesse o portal oficial em console.agora.io e crie uma conta gratuita (você ganha 10.000 minutos grátis todos os meses).

Passo 2: Criar Projeto para Live

No menu lateral esquerdo, vá em Project Management e clique em Create a Project. Dê um nome ao seu projeto de streaming.

Passo 3: Modo de Autenticação Seguro

Selecione obrigatoriamente a opção: APP ID + APP Certificate (Token Security).

Passo 4: Salvar no Painel NetFluxo

Copie o App ID e revele o App Certificate primário. Acesse o seu painel Minhas Compras no NetFluxo, clique no botão Configurações (Agora.io) do seu card de Live e salve as duas chaves.

8. Perguntas Frequentes (FAQ Live)

Como o apresentador assume o palco para transmitir?

Na antessala da Live (antessala.live.html), existe o botão "Acesso da Apresentação & Moderação". O apresentador digita seu login e senha cadastrados no momento da contratação da sala. Ao autenticar, ele assume o microfone, câmera e compartilhamento de tela, transmitindo para todos os espectadores conectados.

Existe delay entre o que o apresentador fala e o que a plateia ouve?

Não. A tecnologia WebRTC da NetFluxo opera em tempo real com latência inferior a 400 milissegundos. Quando o apresentador faz uma pergunta ao vivo, os espectadores respondem no chat no mesmo instante.

Por que a transmissão exige certificado SSL (HTTPS)?

Os navegadores modernos (Chrome, Safari, Edge e Firefox) bloqueiam o acesso a microfone e câmera em sites sem HTTPS. Certifique-se de que seu domínio possui SSL ativo (o cadeado de segurança).

Como funciona a moderação do chat durante a Live?

Apresentadores e moderadores autenticados podem silenciar usuários, excluir mensagens inconvenientes ou banir espectadores indesejados da transmissão diretamente pela interface da Live, em tempo real.

Como funciona a moderação e o banimento em Salas Compartilhadas?

Nas salas da modalidade Compartilhada, onde múltiplos sites parceiros reúnem suas audiências no mesmo ambiente, cada domínio mantém soberania e autonomia total sobre suas punições.

Exemplo Prático (Isolamento Seletivo entre Domínios):

Se a moderação do Site A aplicar um banimento contra um usuário do Site B:

  • O usuário banido continua conseguindo acessar a sala normalmente pelos outros sites parceiros.
  • No entanto, ele fica completamente isolado do Site A: não assiste nem ouve o áudio/vídeo transmitido pelo Site A, e suas mensagens no chat não chegam aos usuários do Site A.
  • Da mesma forma, os participantes e moderadores do Site A não visualizam, não escutam e não interagem com esse usuário banido.

Essa arquitetura inteligente de cross-domain block garante que nenhum site interfira na operação ou na receita de outros parceiros, assegurando que a sua comunidade veja apenas aquilo que a sua equipe de moderação aprovar.