Variáveis de perfil FFmpeg: um comando, vários streams
Variáveis
Seção intitulada “Variáveis”No Senta há vários tipos de variáveis que você pode usar nos perfis:
- Variáveis padrão:
${i}- stream de entrada,${o}- stream de saída - Variáveis personalizadas (texto, booleanas e de seleção)
Especificação de variáveis personalizadas
Seção intitulada “Especificação de variáveis personalizadas”Após a palavra-chave WHERE no perfil, inicia-se um array JSON com a especificação das variáveis.
Para cada variável é criado um objeto com os seguintes campos:
desc- descrição da variável, que usamos no comandoname- nome que será usado no formulário de adição de streamdescription- descrição da variável, que será usada no formulário de adição de stream (opcional)command- parte do comando, em que$valueserá substituído pelo valor do formulário de adição de stream (exemplo-gpu $value).default- valor padrão; pode ficar vazio.
Por exemplo:
// Simple startup profile for HD h264 encoding// You can change it, fork it and share it with othersffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc ${gpu} -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}NAME "HD h264"WHERE[ { "desc": "gpu", "data": { "name": "GPU", "description": "Select GPU which stream will use, set empty if you don't use GPU", "command": "-gpu $value", "default": "" } }]Neste exemplo:
Variáveis padrão:
Variáveis padrão (não é preciso descrevê-las):
${i} - stream de entrada, você pode usar mais de 1 entrada; no menu de adição de stream elas serão numeradas a partir de 0 (input #0, input #1 …)
${o} - stream de saída, você pode usar mais de 1 saída; no menu de adição de stream elas serão numeradas a partir de 0
Variáveis personalizadas:
(neste exemplo, você pode adicionar o que precisar):
${gpu} - número do adaptador de GPU
Nota: neste exemplo o valor padrão é vazio (no comando NÃO se adiciona -gpu), mas você pode definir um valor padrão
Variáveis de texto
Seção intitulada “Variáveis de texto”Ao montar a linha de comando, as variáveis de texto substituem a variável por um texto personalizado.
Exemplo de variável de texto:
{"desc": "logo","data": { "name": "Logo path", "description": "Print the path to the image file with the logo", "command": "-i $value", "default": ""}}No perfil, a variável ${logo} será substituída por -i $value.
No editor de streams, é adicionado um campo com o rótulo Logo path, com a descrição Print the path to the image file with the logo, e o valor dele substituirá $value.
No final, temos o perfil:
ffmpeg -i ${i} ${logo} bla-bla ${o}NAME "TEST"WHERE[ { "desc": "logo", "data": { "name": "Logo path", "description": "Print the path to the image file with the logo", "command": "-i $value", "default": "" } }]Nas configurações do stream, vamos especificar:
input#0: 'inp.ts'output#0: 'udp://out:1234'logo: 'logo.ts'Como resultado, o comando de execução será:
ffmpeg -i inp.ts -i logo.ts bla-bla udp://out:1234Variáveis booleanas
Seção intitulada “Variáveis booleanas”As variáveis booleanas inserem texto ao montar o comando de execução se o valor for true e não o inserem se o valor for false.
Para definir esse tipo, é necessário adicionar "extension": {"type": "checkbox",} na estrutura da variável
Exemplo:
// Example of boolean variable// This variable is used to set -y option, whitch need to rewrite output file"desc": "rev","data": { "name": "Rewrite file", "description": "This option need if as output you use local file", "command": "-y", "default": "", "extension": { "type": "checkbox", }}Esta variável adiciona a flag -y se a caixa de seleção estiver marcada.
Variáveis de seleção
Seção intitulada “Variáveis de seleção”Semelhantes às variáveis de texto, mas o usuário pode escolher entre valores predefinidos. É conveniente usá-las, por exemplo, para definir a resolução da imagem ou o codec
É necessário adicionar "extension": {"type": "select"} na estrutura da variável e adicionar as opções predefinidas em "options": [...]
Exemplo.
// Example of selector variable// This variable is used to select the video codec"desc": "cv","data": { "name": "Video codec", "description": "To copy original codec set copy", "command": "-c:v $value", "default": "", "extension": { "type": "select", "options": [ "h264_nvenc", "libx264", "libx265", "hevc_nvenc", "libaom-av1", "libvpx", "libvpx-vp9", "copy" ] }}Variável de geração automática
Seção intitulada “Variável de geração automática”Esta funcionalidade está sendo desenvolvida para integração com outros sistemas, como o Astra Cesbo. Mas você pode usá-la manualmente. No momento, foi implementada a geração automática de entradas.
Por exemplo, um sistema externo pode enviar ao Senta streams com endereços udp://192.168.0.1:9000 - udp://192.168.0.1:9999 para transcodificação posterior. No entanto, para criar um processo, precisamos saber qual porta está disponível (pois a porta pode já estar ocupada por outro stream). Para que o Senta aloque uma porta, precisamos:
Ir em Settings, onde há uma seção chamada Auto input generation settings. Lá definimos a porta inicial: 9000, a porta final: 9999 e o IP da interface (Interface IP): 192.168.0.1. Depois, aplicamos as configurações.

Ao criar um processo, atribuímos o endereço de entrada como udp://${host}:${port} (
ou atribuímos o endereço ao criar o stream, pressionando o botão Set auto generation). Assim, é criado um processo com a entrada udp://192.168.0.1:9000, supondo que a porta 9000 esteja livre no servidor.
O Senta monitora as portas livres/ocupadas. Quando um stream é removido, a porta que ele ocupava é liberada.