Protocolo SRT

Protocolo aberto desenvolvido pela Haivision. Baseado no UDT; é amplamente difundido e oferece boas características de compensação de perdas de pacotes.

Casos de uso:

  • Peer entre instâncias do Perfect Streamer. No transmissor — é configurado no output, modo listen (padrão). Nesse modo podem ser conectados vários receptores. Para a autorização, devem ser registrados em Peer os logins dos receptores. No receptor — é configurado no input. São indicados o host e a porta do transmissor, bem como login e senha. Para transmitir login e senha, o streamer SRT usa o streamid no formato login|password.

  • Peer entre o Perfect Streamer e quaisquer streamers SRT de terceiros. No transmissor é possível configurar o modo cliente SRT desativando o listen. O streamid SRT, se necessário, é inserido no campo login. Para o modo listen está disponível a autorização por endereço IP — inserida no campo login em Peer. No receptor é possível ativar o modo listen, definir o streamid SRT no campo login e também indicar o host a partir do qual a recepção é permitida.

Trabalho no modo Listener: recepção e transmissão do fluxo do canal com indicação da porta de recepção.

As portas em modo listen devem ser únicas.

Há criptografia de fluxos disponível (Crypto protection) usando AES-128. Para ativar em ambos os lados, informe Crypt Passphrase como chave compartilhada.

Se o transmissor usa o modo listen (padrão), a iniciação da conexão acontece do lado do receptor, o transmissor exige autenticação e os receptores são registrados em peer. Login e senha são obrigatórios.

As opções do protocolo SRT seguem a descrição em API-socket-options.md

Reorder (SRTO_LOSSMAXTTL) — Valor até o qual a tolerância de reordenamento pode aumentar. A tolerância de reordenamento é o número de pacotes que devem seguir uma «lacuna» detectada nos números de sequência dos pacotes recebidos antes que um relatório de perda seja enviado (na esperança de que a lacuna seja causada por reordenamento de pacotes e não por perda). O valor da tolerância de reordenamento começa em 0 e aumenta quando o reordenamento de pacotes é detectado. Isso ocorre quando um pacote «atrasado» é recebido com um número de sequência maior que o do último recebido, mas sem o sinalizador de retransmissão. Diante de tal detecção, a tolerância de reordenamento é definida como o valor do intervalo entre o último número e o número de sequência desse pacote, mas não superior ao valor definido pelo parâmetro SRTO_LOSSMAXTTL. Por padrão, esse valor é 0, o que significa que esse mecanismo está desativado. SRTO_LOSSMAXTTL

Overhead (SRTO_OHEADBW, %) — Sobrecarga para recuperação de banda além da taxa de entrada (ver SRTO_INPUTBW), em percentual da taxa de entrada. Atua somente se SRTO_MAXBW estiver definido como 0. Remetente: configurável pelo usuário; padrão: 25%.

Recomendações: a sobrecarga destina-se a fornecer banda adicional para o caso de um pacote ter ocupado parte da banda mas ter sido perdido e precisar ser retransmitido. Portanto, a banda máxima efetiva deve ser suficientemente maior do que o bitrate do fluxo para deixar espaço para retransmissões, mas limitada para que os pacotes retransmitidos não levem a um aumento abrupto no uso da banda quando grandes grupos de pacotes forem perdidos. Não defina um valor muito baixo e evite 0 caso o parâmetro SRTO_INPUTBW esteja definido como 0 (automático). Caso contrário, seu fluxo será rapidamente interrompido em qualquer aumento de perda de pacotes. SRTO_OHEADBW

Max Band (SRTO_MAXBW, bps) — Esta opção é efetiva apenas quando SRTO_MAXBW é igual a 0 (relativo). Ela controla a banda máxima em conjunto com o parâmetro SRTO_OHEADBW pela fórmula: MAXBW = INPUTBW * (100 + OHEADBW) / 100. Se esta opção for definida como 0 (automático), o valor real de INPUTBW será estimado com base na taxa do fluxo de entrada (casos em que a aplicação chama a função srt_send*) durante a transmissão. O valor mínimo admissível da estimativa é limitado pelo parâmetro SRTO_MININPUTBW, ou seja, INPUTBW = MAX(INPUTBW_ESTIMATE; MININPUTBW).

Recomendações: defina nesse parâmetro o bitrate esperado da sua transmissão e mantenha o valor padrão de 25% para SRTO_OHEADBW. SRTO_INPUTBW

Timeout (SRTO_CONNTIMEO, ms) — Valor do timeout de conexão em milissegundos. É o tempo durante o qual o objeto que está se conectando tentará estabelecer conexão e aguardará resposta do endpoint remoto antes de encerrar a conexão com código de erro. SRTO_CONNTIMEO