Ir al contenido

Variables

En senta-streamer hay varios tipos de variables que puedes usar en los perfiles:

  • Variables estándar: ${i} - flujo de entrada, ${o} - flujo de salida
  • Variables personalizadas (texto, booleano y selección)

Después de la palabra clave WHERE en el perfil, comienza un Array JSON con la especificación de las variables.

Para cada variable se crea un objeto con los siguientes campos:

  • desc - descripción de la variable, que usamos en el comando
  • name - nombre, que se usará en el formulario para agregar flujo
  • description - descripción de la variable, que se usará en el formulario para agregar flujo (opcional)
  • command - parte del comando, donde $value será reemplazado por el valor del formulario para agregar flujo (ejemplo -gpu $value).
  • default - valor por defecto, puede estar vacío

Por ejemplo:

Ventana de terminal
// Perfil simple de inicio para codificación HD h264
// Puedes cambiarlo, bifurcarlo y compartirlo con otros
ffmpeg -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": "Selecciona la GPU que usará el flujo, deja vacío si no usas GPU",
    "command": "-gpu $value",
    "default": ""
   }
}
]

En este ejemplo:

Variables estándar:

Variables estándar (no necesitas escribir información sobre ellas): ${i} - flujo de entrada, puedes usar más de una entrada, en el menú para agregar flujo se numerarán desde 0 (entrada #0, entrada #1 …) ${o} - flujo de salida, puedes usar más de una salida, en el menú para agregar flujo se numerarán desde 0

Variables personalizadas:

(en este ejemplo, puedes agregar lo que necesites): ${gpu} - número del adaptador gpu

Nota: el valor por defecto en este ejemplo está vacío (en el comando NO se añade -gpu), pero puedes establecer un valor por defecto

Al formar la línea de comando, las variables de texto reemplazan la variable por el texto personalizado.

Ejemplo de una variable de texto:

{
"desc": "logo",
"data": {
"name": "Logo path",
"description": "Indica la ruta al archivo de imagen con el logo",
"command": "-i $value",
"default": ""
}
}

En el perfil, la variable ${logo} será reemplazada por -i $value.

En el editor de flujos, se añade un campo con la etiqueta Logo path, con la descripción Indica la ruta al archivo de imagen con el logo, y su valor reemplazará $value.

Al final, tenemos un perfil:

Ventana de terminal
ffmpeg -i ${i} ${logo} bla-bla ${o}
NAME "TEST"
WHERE
[
{
   "desc": "logo",
"data": {
"name": "Logo path",
"description": "Indica la ruta al archivo de imagen con el logo",
"command": "-i $value",
"default": ""
}
}
]

En la configuración del flujo, especificamos:

input#0: 'inp.ts'
output#0: 'udp://out:1234'
logo: 'logo.ts'

Como resultado, el comando de inicio será:

Ventana de terminal
ffmpeg -i inp.ts -i logo.ts bla-bla udp://out:1234

Las variables booleanas insertan texto al formar el comando de inicio si el valor es true y no lo insertan si el valor es false.

Para establecer este tipo necesitas añadir "extendtion": {"type": "checkbox",} en la estructura de la variable

Ejemplo:

// Ejemplo de variable booleana
// Esta variable se usa para establecer la opción -y, que es necesaria para sobrescribir el archivo de salida
"desc": "rev",
"data": {
"name": "Rewrite file",
"description": "Esta opción es necesaria si como salida usas un archivo local",
"command": "-y",
"default": "",
"extendtion": {
  "type": "checkbox",
}
}

Esta variable añade la bandera -y si la casilla está marcada.

Son similares a las variables de texto, solo que el usuario puede elegir entre valores predefinidos. Es útil, por ejemplo, para establecer la resolución de imagen o el códec.

Debes añadir "extendtion": {"type": "select"} en la estructura de la variable y agregar las opciones predefinidas en "options": [...]

Ejemplo.

// Ejemplo de variable de selección
// Esta variable se usa para seleccionar el códec de video
"desc": "cv",
"data": {
"name": "Video codec",
"description": "Para copiar el códec original selecciona copy",
"command": "-c:v $value",
"default": "",
"extendtion": {
  "type": "select",
  "options": [
   "h264_nvenc",
   "libx264",
   "libx265",
   "hevc_nvenc",
   "libaom-av1",
   "libvpx",
   "libvpx-vp9",
   "copy"
  ]
}
}

Esta funcionalidad se está desarrollando para la integración con otros sistemas, como Astra Cesbo. Pero puedes usarla manualmente. Por el momento, se ha implementado la generación automática de entradas.

Por ejemplo, un sistema externo puede enviar flujos con direcciones udp://192.168.0.1:9000 - udp://192.168.0.1:9999 a Senta para su posterior transcodificación. Sin embargo, para crear un proceso, necesitamos saber un puerto disponible (ya que el puerto puede estar ocupado por otro flujo). Para permitir que Senta asigne un puerto, necesitamos:

Ir a Configuración, donde hay una sección llamada Configuración de generación automática de entradas. Allí, establecemos el puerto inicial: 9000, puerto final: 9999, e IP de la interfaz: 192.168.0.1. Luego, aplicamos la configuración.

Ejemplo de entrada

Al crear un proceso, asignamos la dirección de entrada como udp://${host}:${port} ( o asignamos la dirección al crear el flujo presionando el botón Set auto generation). Así, se crea un proceso con la entrada udp://192.168.0.1:9000, suponiendo que el puerto 9000 esté libre en el servidor.

Senta monitorea los puertos libres/ocupados. Cuando se elimina un flujo, el puerto que ocupaba queda libre.