Integração com IPTV middleware¶
Importante
Versão beta 2.1. O que está descrito aqui existe apenas na versão beta 2.1: ela é instalada a partir do repositório beta e somente com uma licença; a versão estável 2.0.2 e a versão de demonstração não têm isso. A versão beta é fornecida sem garantias, e o suporte é prestado na medida do possível (Programa de testes beta).
Desde a versão 2.1.1.516, o nó entende o esquema de endereços e de autorização por token com o qual os IPTV middleware e os players já trabalham com servidores de streaming: Ministra (Stalker), Microimpuls Smarty, TVIP TMS e players com arquivo catchup="flussonic". Esse middleware pode ser apontado para o Perfect Streamer sem alterar nele os modelos de endereços dos canais: o middleware entrega ao assinante um link com token, e o nó verifica o token junto ao middleware.
Habilitam-se duas coisas: as formas de endereço no servidor HTTP de streaming e o servidor de verificação de tokens (Servidor de verificação de tokens). Ambas são configuradas no console, assim como no arquivo de configuração (Alterar um parâmetro) e pela API HTTP (Gerenciamento pela API HTTP).
Endereços dos canais¶
O interruptor «URLs compatíveis com Flussonic» na seção «Middleware» da tela «Servidor HTTP de streaming» (Servidor HTTP de streaming; a chave flussonic-urls em /config/http-server), desabilitado por padrão. Quando ele está habilitado, cada fluxo com «Nome do fluxo no URL» definido (URL e autorização) fica disponível também por estes endereços, ao lado dos anteriores:
Endereço |
O que entrega |
|---|---|
|
transmissão ao vivo HLS |
|
transmissão ao vivo DASH |
|
transmissão ao vivo MPEG-TS; o fluxo precisa ter a distribuição por HTTP habilitada |
|
arquivo DVR (DVR: arquivo do fluxo) a partir do momento |
|
timeshift: arquivo a partir de um momento passado (ou de |
O endereço completo é http://<nó>:<porta>/<nome>/index.m3u8?token=<token>. Cada requisição precisa levar o token (de no máximo 512 caracteres). O nome de um pacote adaptativo (Pacotes adaptativos) dá a sua playlist adaptativa. Se o arquivo ou o timeshift for solicitado a partir de um momento em que a gravação ainda não acontecia, a playlist master responde 200 e a playlist da variante (media) responde 404.
Nesses endereços um fluxo não pode se chamar hls, dash, llhls, http, rsv nem ter um nome de 17 caracteres formado por h e 16 dígitos hexadecimais. No editor do fluxo, na aba «OTT», abaixo de «Nome do fluxo no URL», o console mostra esses endereços com o nome do fluxo e, para um nome assim, um aviso (Configurar fluxo).
Servidor de verificação de tokens¶
O token é verificado pelo middleware. O endereço dele é definido como um servidor na aba «Remoto (faturamento)» da tela «Usuários / Logins» (Usuários / Logins; uma entrada em /config/cs/server). No campo «Conector» escolhe-se um dos servidores de tokens:
ministra— «Ministra / Stalker (token)»Ministra (Stalker). O endereço é
http://<portal>/stalker_portal/server/api/chk_flussonic_tmp_link.php. No Ministra, define-se para o canal o tipo de link temporárioFlussonic, o tipo de arquivoFlussonic DVRe o endereço do arquivohttp://<nó>:<porta>/<nome>/index.m3u8.smarty— «Smarty (token)»Microimpuls Smarty. O endereço é
http://<smarty>/tvmiddleware/api/streamservice/token/check/. A máscara do fluxo é/$prefix/index.m3u8?token=$token, a máscara do arquivo é/$prefix/index-$flpbt-$flpdur.m3u8?token=$token.flussonic— «Flussonic auth backend (token)»Qualquer outro middleware (por exemplo, TVIP TMS) que verifique tokens pelo mesmo protocolo. O endereço é o seu endereço de verificação.
Um servidor de tokens verifica apenas os tokens desses endereços; ele não atende o acesso com login e senha. Por isso, no console, ele tem apenas «Nome», «URL», «Tempo limite (s)» e a seção «Servidor de tokens», enquanto a senha, a contabilização de sessões, o prefixo e o sufixo do login, o rastreamento e a análise da resposta ficam ocultos. O nó exige a chave password, mas não a repassa a esses servidores: o console a preenche sozinho. Se um servidor de tokens for mudado para «Universal (HTTP)», o console pede uma senha real. Ao gravar pela API, password recebe qualquer valor não vazio.
Acesso e verificações repetidas¶
Sem token — recusa. Uma requisição sem token, com token rejeitado ou quando o servidor de verificação está indisponível recebe a resposta 403. Se o servidor não respondeu ou respondeu com erro, consulta-se o próximo; uma recusa (401 ou 403) é definitiva.
Middleware indisponível. Com a caixa «Permitir enquanto o backend estiver fora» (
auth-fail-open=true), novos espectadores são admitidos enquanto todos os servidores de verificação estão indisponíveis e são verificados de novo dentro de 30 s. Uma recusa do middleware não é anulada por essa chave.Verificação repetida. Uma sessão em andamento é verificada de novo com o período definido pelo middleware (cabeçalho de resposta
X-AuthDuration, por padrão 180 s) ou com o período definido no campo «Nova verificação»: «Padrão do perfil», «Nunca» ou «A cada N segundos» (chaveauth-recheck:-1,0ou um número de segundos até 86400). Uma recusa na verificação repetida interrompe a visualização desse espectador. Os links do Ministra não são verificados de novo: eles vivem poucos segundos.Sessões por usuário. Os cabeçalhos de resposta
X-Max-SessionseX-UserIdlimitam o número de sessões de um mesmo usuário por HLS, DASH e MPEG-TS juntos. Ao atingir o limite, fecha-se a sessão inativa há mais tempo; nesse caso, uma nova conexão MPEG-TS não é aceita.O token não fica visível. O token não é gravado no log nem exibido no console: na tela «Clientes» (Clientes), a sessão aparece como
tok:<16 dígitos hexadecimais>.Reserva OTT. As sessões com token não participam da reserva OTT (Reserva OTT/DVR).
O Ministra carrega a programação a partir da exportação XMLTV do servidor EPG (/xmltv, Fornecimento de XMLTV).
Limitações¶
Timeshift — somente HLS (TS) de um único fluxo.
Prévias, playlists só de vídeo e de faixas separadas (
video.m3u8,tracks-*) e o arquivo em MPEG-TS não são entregues: esses endereços respondem 404.A integração foi verificada em emuladores desses middleware; em sistemas em produção, ainda não.