FAQ

SRT e autorização por login e senha em software de terceiros

A autenticação por login e senha em SRT entre instâncias do Perfect Streamer é suportada nativamente e configurada nos campos correspondentes em output e input, mas o funcionamento com outros softwares não é garantido. Esta funcionalidade não é padronizada e está implementada de forma diferente em diversos softwares.

Para interoperabilidade entre Perfect Streamer e outros softwares, a autorização é feita criando um peer cujo nome equivale ao valor do stream ID. Por exemplo, no link:

srt://Stream_IP:port?streamid=!#::u=1234567890,password=1234567890

Nome do peer:

!#::u=1234567890,password=1234567890

A sintaxe do stream ID é irrelevante para o Perfect Streamer; valores de até 511 caracteres são suportados.

Diferentes programas que recebem SRT podem transmitir o stream ID também em seu próprio formato, portanto, se a recepção por meio de um determinado tipo de link com stream ID não funcionar, você pode ativar a opção de rastreamento na saída SRT do Perfect Streamer e verificar, no log de recepção do fluxo, o erro e o stream ID que o software de terceiros realmente emite. Com isso, é possível ajustar o stream ID — por exemplo, removendo caracteres excedentes no início da cadeia do stream ID que atrapalham a transferência do valor do stream ID pelo software de terceiros.

Trabalho com RTSP e RTMP no Perfect Streamer usando FFmpeg

Para RTMP e outros protocolos de transporte para os quais o Perfect Streamer não possui um input integrado, é possível usar o tipo de input STD do fluxo (stdin). Esse mesmo método serve como alternativa para fontes RTSP não padrão — para RTSP padrão, o Perfect Streamer dispõe de um input RTSP integrado. É possível usar FFmpeg, GStreamer e quaisquer outras aplicações que suportem stdout.

Vejamos a configuração no exemplo do FFmpeg:

  1. Escolher o tipo de input: std.

  2. Indicar o caminho do FFmpeg no campo Cmd: /usr/bin/ffmpeg.

  3. No campo Args, digite o comando para receber o fluxo:

-loglevel error -i rtmp://192.168.1.29/channelTV/chanelSD -c copy -f mpegts -

ou

-loglevel error -i rtsp://viewer:viewer200@172.31.91.197:554/play1.sdp -c copy -f mpegts -

Se o vídeo da câmera não tiver áudio, aparecerão erros na página do stream. Para evitá-los, nas configurações do tipo de stream selecione Only Video.

Descrição na documentação sobre a integração de aplicações de terceiros.

Trabalho com RTSP e RTMP no Perfect Streamer usando GStreamer

Para protocolos de transporte sem suporte integrado no Perfect Streamer (por exemplo, RTMP), e também como solução alternativa para fontes RTSP não padrão, pode-se usar o tipo de input STD (stdin) em um stream. Podem ser usados FFmpeg, GStreamer e quaisquer outras aplicações que suportem stdout.

Vejamos a configuração usando GStreamer.

  1. Escolher o tipo de input: std.

  2. Indicar o caminho do interpretador de comandos no campo Cmd: /bin/bash.

  3. No campo Args, digite o caminho para o script gerador do stream e outros argumentos:

/opt/conf/pss/scripts/rtmp.sh rtmp://192.168.1.2/live/mmtv2025air

ou

/opt/conf/pss/scripts/rtsp.sh rtsp://viewer1:viewer300@172.34.95.198:553/play1.sdp

A instrução completa está disponível no fórum.

Pacote de scripts: scripts_gstreamer.zip.

Recomendações para trabalhar com UDP multicast

Tarefa:

Receber de forma estável UDP multicast de centenas de Mbit/s (1 Gbit/s ou mais) em um único servidor.

Problema:

Recepção em placas de rede com interface RJ-45 — ao aumentar o tráfego acima de algumas centenas de megabits começam perdas crescentes em multicast. O ajuste das configurações da placa de rede não ajuda (era relevante em versões antigas dos sistemas operacionais; nos atuais já se utilizam configurações ótimas). Em qualquer placa de rede com chips de melhor qualidade (Intel, Broadcom etc.) o problema persiste, especialmente após ultrapassar 500 Mbit/s de tráfego. O bonding de duas placas de rede também não resolve.

Solução:

Para recepção e transmissão de UDP multicast, recomendamos utilizar placas de rede com interface SFP+, pois utilizam chips mais potentes. Uma placa de rede de baixo custo do nível Intel X520-DA1/2 (Intel 82599ES) é suficiente — seu uso elimina completamente o problema de perdas no tráfego UDP multicast acima de 1 Gbit/s.

Como benefício adicional, há queda notável da carga de CPU e GPU ao usar o transcodificador.

Recomendações para configurar a rede para multicast

Configurar os parâmetros de rede em /etc/sysctl.conf:

net.core.rmem_default=8388608
net.core.rmem_max=16777216

Aplicar:

sudo sysctl --system

Flussonic e SRT

Exemplo de link SRT para recepção no software «Flussonic»:

srt://Stream_IP:port?streamid=flussonic

Onde streamid é o login do cliente no software «Flussonic», definido em «Configuração – Ajustes de peers».

Ao adicionar um novo peer, basta indicar apenas o login — no link de teste consta «flussonic». O software «Flussonic» gera streamID automaticamente ao trabalhar com SRT, e se o login streamID não for indicado no link de recepção, o fluxo não será recebido e o «Perfect Streamer» não conseguirá entregá-lo.

De forma análoga, é possível definir streamID no formato login/senha, criando em «Perfect Streamer» um peer com o valor em Login or IP: !#::u=1234567890,password=1234567890

e registrando no «Flussonic» o link: srt://Stream_IP:port?streamid=!#::u=1234567890,password=1234567890

É possível indicar streamid/login no formato de endereço IP no «Perfect Streamer»:

  • 192.168.1.1 (IP único)

  • 192.168.1.1-192.168.1.254 (faixa de IP; no peer é obrigatório ativar a opção Login is IP)

Em ambos os casos, o link de recepção por IP no «Flussonic» será: srt://Stream_IP:port?streamid=*

Será feito o vínculo ao endereço IP do cliente e a recepção por esse link só será possível a partir desse IP (ou faixa de IPs).