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:
Escolher o tipo de input: std.
Indicar o caminho do FFmpeg no campo Cmd: /usr/bin/ffmpeg.
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.
Escolher o tipo de input: std.
Indicar o caminho do interpretador de comandos no campo Cmd: /bin/bash.
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).