mimoLive® - Manual del usuario

Selectores genéricos
Sólo coincidencias exactas
Buscar en el título
Buscar en el contenido
Selectores de tipo de entrada

Automatización

Índice

Optimice su producción con la capa de automatización de mimoLive

La capa de automatización de mimoLive se desarrolló originalmente como una prueba de concepto, pero desde entonces ha demostrado ser una herramienta increíblemente útil para los usuarios. Esta capa puede utilizarse para automatizar el encendido y apagado de capas en una secuencia específica o en momentos predeterminados, transportar información de una capa a otra, iniciar y detener Destinos de saliday mucho más.

Puede ser especialmente útil para crear producciones complejas con múltiples capas y entradas, ya que elimina la necesidad de conmutar y temporizar manualmente. Con esta capa, los usuarios pueden centrarse en crear contenidos atractivos mientras el software se encarga de la temporización y la secuenciación de su producción. Ahora, en la versión 2 de esta capa, hemos ampliado los comandos para llevar la automatización en mimoLive a un nivel completamente nuevo.

Ejemplo: Capa de automatización

Automatización

Los scripts de automatización en mimoLive no se ejecutan en tiempo real

Tenga en cuenta que la sincronización de los scripts de automatización en mimoLive puede no ser exacta debido a la naturaleza asíncrona de las solicitudes HTTP llamadas por el motor de renderización de vídeo. Estas secuencias de comandos dependen de las solicitudes HTTP a la API y la duración de estas solicitudes no se puede determinar con precisión, lo que resulta en posibles discrepancias de tiempo. Por favor, tenga esto en cuenta cuando utilice scripts de automatización en su flujo de trabajo de producción.

Requisito previo

Para que esta capa funcione es necesario activar la capa HTTP Servidor en mimoLive para activar el Control Remoto API. Ir a mimoLive -> Preferencias -> Mandos a distancia: Marque la opción "Permitir acceso de control remoto". (Actualmente la capa de automatización en mimoLive sólo funciona sin contraseña)

6102d04e 4eb3 4600 b410 0d2b2aef0767

Configurar la capa de automatización

Hay dos opciones sobre cómo debe comportarse la capa después de ser activada:

OpciónComportarse
Apagado automático de la capaPara esta opción sólo hay un script disponible. Una vez procesado este script, la capa se apagará sola. Esta opción puede utilizarse cuando una secuencia debe ejecutarse una sola vez.
Apagar la capa manualmente (por ejemplo, por el operario)En este caso hay tres scripts disponibles. Cuando la capa se activa, se procesa el script "On Live". Una vez hecho esto, el script "While Live" se procesa en un bucle sin fin. Cuando la capa se apaga, se procesa el script "Apagado".
Si no necesita una fase determinada, puede dejar vacía la secuencia de comandos asociada.

Comentarios sobre el código fuente

Para ayudarle a recordar la función de su script, le recomendamos que utilice comentarios en el mismo:

// First sleep for 5 seconds...
sleep(5)

// ...then start the stopwatch layer:
layerOn("7C4665C4-0E17-4F63-BCFF-B59D68D75956")

Los comentarios deben ir en una línea aparte.

Comandos de secuencias de comandos

El lenguaje de scripting es propio e incluye varios comandos. Esos comandos se enumeran en una hoja de trucos en la vista previa de capas de la derecha. Como la lista puede resultar un poco pequeña para leerla, puede ampliar la vista previa utilizando el botón situado encima y a la derecha del área de vista previa.

layerOn()

Este comando le permite activar una capa o una variante de capa.

// switching on a layer by its id
layerOn("4E38A868-DCB5-4E9C-AC75-231764229BFA")

// switching on a layer variant by its id
layerOn("4E38A868-DCB5-4E9C-AC75-231764229BFA/variants/5F18C566-F59F-45B4-8D40-27EF289D47B1")

// switching on a layer by its long API Endpoint URL
layerOn("/api/v1/documents/863743527/layers/4E38A868-DCB5-4E9C-AC75-231764229BFA")

// switching on a layer with a defined variable
setVariable($myLayerID, "4E38A868-DCB5-4E9C-AC75-231764229BFA")
layerOn($myLayerID)

capaOff(<API ID de capa como expresión de cadena>)

Este comando le permite desactivar una capa o una variante de capa.

// switching off a layer by its id
layerOff("4E38A868-DCB5-4E9C-AC75-231764229BFA")

// switching off a layer variant by its id
layerOff("4E38A868-DCB5-4E9C-AC75-231764229BFA/variants/5F18C566-F59F-45B4-8D40-27EF289D47B1")

// switching off a layer by its long API Endpoint URL
layerOff("/api/v1/documents/863743527/layers/4E38A868-DCB5-4E9C-AC75-231764229BFA")

// switching off a layer with a defined variable
setVariable($myLayerID, "4E38A868-DCB5-4E9C-AC75-231764229BFA")
layerOff($myLayerID)

layerSetRecall(<Capa API Establecer ID como expresión de cadena>)

Este comando se puede utilizar para activar la recuperación de un determinado Conjunto de capas.

// recall a Layer Set by its id
layerSetRecall("E6950B7A-7457-44C5-81F7-972D9B04DBC3")

// recall a Layer Set by its long API Endpoint URL
layerSetRecall("/api/v1/documents/863743527/layer-sets/E6950B7A-7457-44C5-81F7-972D9B04DBC3")

// recall a Layer Set with a defined variable
setVariable($myLayerSetID, "E6950B7A-7457-44C5-81F7-972D9B04DBC3")
layerSetRecall($myLayerSetID)

outputOn(<Salida API ID de destino como expresión de cadena>)

Utilice este comando para activar un destino de salida.

// iniciar un Destino de Salida por su id
outputOn("1953186E-4176-4849-A8ED-5B47EE1627BD")

// inicie un Destino de salida por su URL larga del punto final de la API
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")

// iniciar un destino de salida con una variable definida
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOn($myOutputDestinationtID)

outputOff(<Salida API ID de destino como expresión de cadena>)

Utilice este comando para desactivar un destino de salida.

// detener un Destino de Salida por su id
outputOff("1953186E-4176-4849-A8ED-5B47EE1627BD")

// detener un Destino de Salida por su URL larga de punto final de API
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")

// detener un destino de salida con una variable definida
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOff($myOutputDestinationtID)

getLayerData($resultVariableName, , )

Este comando combina varios comandos en un solo paso de script: Lee la información de la capa del servidor HTTP y almacena un campo de datos específico de las respuestas JSON en una variable. Necesita la ruta exacta al valor que desea leer. Para los parámetros de entrada de las capas esta ruta suele empezar por "data.attributes.input-values".

// set up useful variables
setVariable($myScoreboardLayerID, "36FA76B4-11FE-4879-8DE1-307222512712")
setVariable($pathToHomeScore, "data.attributes.input-values.tvGroup_Control__Score_Home")

// read the score for the home team from the Basketball layer
getLayerData($currentHomeScore, $myScoreboardLayerID, $pathToHomeScore)

// The variable $currentHomeScore now contains the Home Score input value of the Basketball Score layer

getObjectIDByName($resultVariableName, , )

Este comando obtiene el punto final de la API para un objeto mimoLive específico por su nombre de visualización. Tenga en cuenta que el nombre de visualización puede ser cambiado fácilmente por el operador mimoLive en la interfaz de usuario mimoLive, lo que a su vez romperá el script de automatización si ya no puede encontrar el objeto específico. Por otro lado, este comando se puede utilizar para encontrar puntos finales de la API mediante programación sin necesidad de codificar los puntos finales de la API en el script.

Las opciones válidas para son: "fuente", "capa", "conjunto de capas", "salida-destino"

// Get the API Endpoint for the Basketball Score layer
getObjectIDByName($myBasketballScoreLayerID, "layer", "My Basketball Score Keeper")

// switch this layer on
layerOn($myBasketballScoreLayerID)
Captura de pantalla 2024 06 11 a las 15.20.42

dormir(<Segundos> como número)

La orden sleep() detendrá la ejecución del script durante el intervalo de tiempo dado expresado en segundos.

// pause the script execution for 12 seconds
sleep(12)

// pause the script execution for 35.6 seconds
sleep(35.6)

// pause the script execution for a time interval specified by a variable
setVariable($mySleepInterval, 17)
sleep($mySleepInterval)

sleepUntil(<Hora como expresión de cadena>)

El comando sleepUntil() permite al script hacer una pausa hasta que se alcance el tiempo especificado. Si el tiempo ya ha pasado, el script espera hasta el día siguiente. El formato de la hora es HH:MM o HH:MM:SS en un periodo de 24 horas.

// sleep until 5:15pm
sleepUntil("17:15:00")

// sleep until 9:12am
sleepUntil("9:12")

// sleep until a time specified by a variable
setVariable($myWakeUpTime, "9:41")
sleepUntil($myWakeUpTime)

dormirEnElMinuto()

Este comando de script pausa el script hasta que se alcanza la siguiente fracción de hora "al minuto".

// go on every 20 minutes: on the hour, 20 and 40 minutes past the hour:
sleepOnTheMinute(20)

// go on "on the hour"
sleepOnTheMinute(60)

// go on every 10 minutes past the hour (specified by a variable)
setVariable($myWakeUpMinute, 10)
sleepOnTheMinute($myWakeUpMinute)

setVariable($variableName, <valor>)

Para definir una variable local, utilice setVariable comando. Debe especificar un nombre de variable (que empiece por $) y el valor que debe contener esta variable. El valor puede ser un número, texto (entre comillas) o los valores booleanos verdaderofalso.

setVariable($myText, "This is a text")
setVariable($myNumber, 15.73)
setVariable($myBoolValue, false)

setGlobal($variableName, <valor>)

Una variable global puede utilizarse tanto en la capa actual como en cualquier capa de Automatización situada por encima de ella. Esta funcionalidad es especialmente útil para compartir la misma información en varias capas de Automatización, como los puntos finales de la API de una determinada capa. Para el valor de la variable, se aplican las mismas reglas que para la variable setVariable mando.

Tenga en cuenta que las variables globales son accesibles a otras capas de Automatización siempre que la capa de origen esté activa. Esta disposición le permite cambiar las variables globales activando una capa diferente con definiciones de variables globales distintas. La mejor práctica en este escenario es establecer la opción 'Desactivar capa' de la capa de Automatización en 'Manualmente' y definir las globales en el script 'En vivo'.

setGlobal($myGlobalText, "This is a text")
setGlobal($myGlobalNumber, 15.73)
setGlobal($myGlobalBoolValue, false)

concat($resultVariableName, )

Este comando de script concatena cadenas y almacena el resultado como una cadena.

// define some variables
setVariable($myVariableA, "This is")
setVariable($myVariableB, "text.")

// concatenate those variables and store the result into a new one
concat($myResultVariable, $myVariableA + " a " + $myVariableB)

// The variable $myResultVariable contains "This is a text.".

math($resultadoNombreVariable, )

Este comando realiza cálculos matemáticos sencillos, incluyendo sumas (+), restas (-), multiplicaciones (*) y divisiones (/). Tenga en cuenta que los cálculos se realizan en el orden en que aparecen y NO siguen la regla PEMDAS/BODMAS.

// define some variables
setVariable($myVariableA, 3)
setVariable($myVariableB, 5)

// perform the calculation
math($myResult, $myVariableA + 2 * $myVariableB)

// The result in $myResult is 25 (!) and not 13

if(, , ) [else] endif

Este si compara dos expresiones numéricas utilizando un comparador especificado. Si la comparación es verdadera, se ejecuta(n) la(s) orden(es) siguiente(s). En caso contrario, se omiten los comandos siguientes hasta que aparezca un si no o endif se alcanza.

Los comparadores válidos son:

“==”es igual a
“!=”no es igual a
“>”superior a
"<"menos de
“>=”mayor o igual que
"<="menos o qual que
// define a variable
setVariable($myVariable, 3)

// test if the variable is bigger than 10
if($myVariable, ">", 10)
   setVariable($text, "is bigger than 10")
else
   setVariable($text, "is less or equal 10")
endif

// The result in $text is "is less or equal 10"

ifString(, , ) [else] endif

Este ifString compara dos expresiones de cadena utilizando un comparador especificado. La comparación se basa en el código de caracteres ASCII de cada letra de las cadenas. Si la comparación es verdadera, se ejecutan los comandos siguientes. En caso contrario, los comandos siguientes se omiten hasta que aparezca un si no o endif se alcanza.

Para conocer los comparadores válidos, consulte el comando if.

// define a variable
setVariable($myVariable, "mimoLive")

// test if the variable is "mimoLive"
if($myVariable, "==", "mimoLive")
   setVariable($text, "yes")
else
   setVariable($text, "no")
endif

// The result in $text is "yes"

ifLayerIsOn(<API ID de capa como expresión de cadena>) - ifLayerIsOff(<API ID de capa como expresión de cadena>) [else] endif

Estos si comprueban si una determinada capa está activa o no. Si se cumple la condición especificada (la capa está activada o desactivada), se procesan los comandos siguientes. En caso contrario, los comandos siguientes se omiten hasta que se produzca un si no o endif se alcanza.

setVariable($myLayerA, "D6A326CA-72E6-45E5-836D-9795F8F534F4")
setVariable($myLayerB, "8C58DEA7-CCBE-44CB-A60F-97C5BD456C68")

ifLayerIsOn($myLayerA)
   // the layer is live, switch it off
   layerOff($myLayerA)
else
   // the layer is currently off, switch it on
   layerOn($myLayerA)
endif

ifLayerIsOff($myLayerB)
   // the layer is currently off, switch it on
   layerOn($myLayerB)
endif

ifLayerSetIsActive(<API ID de capa como expresión de cadena>) - ifLayerSetIsInactive(<API ID de capa como expresión de cadena>) [else] endif

Estos si afirmaciones prueban si un determinado Conjunto de capas está activo o no. Si es así, se procesan los comandos siguientes. En caso contrario, se omiten los comandos siguientes hasta que aparezca un si no o endif se alcanza.

setVariable($myLayerSetA, "CEF07AFA-B552-40F8-821C-CF424EB93500")
setVariable($myLayerSetB, "E4B15B8B-EE34-4CCE-BDE7-58120A65E83A")
setVariable($myLayer, "8C58DEA7-CCBE-44CB-A60F-97C5BD456C68")


ifLayerSetIsActive($myLayerSetA)
   // the layer set A is active, switch layer on
   layerOn($myLayer)
else
   // the layer set A is currently inactive, switch the layer off
   layerOff($myLayer)
endif

ifLayerSetIsInactive($myLayerSetB)
   // the layer set B is currently inactive, switch the layer off
   layerOn($myLayer)
endif

ifLayerData(, , , ) [else] endif

Este complejo comando le permite probar cualquier parámetro de una capa que el HTTP API proporciona. Necesita especificar una capa por su ID de API, la ruta clave dentro de los datos JSON devueltos por la API HTTP, un comparador (como una cadena entre comillas, por ejemplo, "=="), y un valor.

Los valores válidos del comparador son:

“==”es igual a
“!=”no es igual a
“>”superior a
"<"menos de
“>=”mayor o igual que
"<="menos o qual que
// Example: Testing if the audio volume is turned up on a layer

setVariable($myLayerA, "D6A326CA-72E6-45E5-836D-9795F8F534F4")
setVariable($myLayerB, "8C58DEA7-CCBE-44CB-A60F-97C5BD456C68")

ifLayerData($myLayerA,"data.attributes.volume",">",0.5)
   // The audio volume is bigger than 0.5 so turn layer B on
   layerOn($myLayerB)
else
   // The volume is lower than 0.5, lets turn layer B off
   layerOff($myLayerB)
endif

bucle([]) [break] endloop

En bucle le permite ejecutar código varias veces. Si no especifica el número de iteraciones, el bucle se ejecutará indefinidamente. El comando romper le permite salir del bucle en cualquier momento. endloop es necesario para marcar el final del bloque de comandos que debe reproducirse en bucle.

setVariable($myLayerA, "D6A326CA-72E6-45E5-836D-9795F8F534F4")

// blink layer A 4 times
loop(4)
   layerOn(setVariable(myLayerA)
   sleep(1)
   layerOff(setVariable(myLayerA)
   sleep(1)
endloop

// wait for volume of layer A will be bigger than 0.5
loop()
   ifLayerData($myLayerA,"data.attributes.volume",">",0.5)
      // The audio volume is bigger than 0.5 exit the loop now
      break
   endif
   sleep(1)
endloop

httpRequest()

En httpRequest() comando dispara la URL dada. Esto ofrece mucha flexibilidad en la forma de utilizar este comando de script. En mimoLiveincluso puede desencadenar acciones en otros documentos o scripts remotos. Para más detalles sobre mimoLivecomandos de la API HTTP, consulte el HTTP API documentación para explorar todas las posibles llamadas a la API.

// encender una capa
httpRequest("http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive")

httpRequestJSON($resultVariableName, )

Este comando lee la respuesta de la llamada HTTP como JSON y almacena los datos en la variable de resultado especificada. Después de esto, puede acceder a los datos mediante el comando getJSONData() mando.

getJSONData($resultVariableName, $jsonDataVariable, )

Este comando recupera un valor de datos específico de una estructura JSON almacenada en una variable. Debe especificar la variable que contiene los datos JSON ($jsonDataVariable), la ruta a los datos dentro de la estructura JSON (), y la variable donde debe almacenarse el resultado ($resultVariableName). Esto permite extraer con precisión los datos para procesarlos posteriormente o utilizarlos en su guión.

// obtener todos los datos de una capa
httpRequestJSON($myLayerData, "http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B")

// obtener el valor del dial de volumen
getJSONData($volumenDial, $myLayerData, "data.attributes.volume")

// Ahora, la variable $volumenDial contendrá un valor entre 0 y 1.

> Punto de ruptura del depurador

Cuando el depurador de scripts está activado y el modo de depuración está establecido en 'Continuamente', la ejecución del script se detendrá en este marcador y esperará hasta que el operador de mimoLive haga clic en el botón 'Siguiente paso'. Consulte 'Prácticas recomendadas - Depuración de scripts' para obtener más información sobre las posibilidades de depuración.

Tipos de datos

API Puntos finales

El parámetro debe ser un punto final de la API para una capa, una variante de capa, un conjunto de capas, una fuente o un destino de salida. Puede obtener estos puntos finales de la API haciendo clic con el botón derecho del ratón sobre el objeto en el documento mimoLive. Debería aparecer un menú contextual con un elemento de menú "Copiar punto final de API al portapapeles".

Esta acción copiará el punto final de la API para este objeto en el portapapeles. Si lo pega en otro lugar, tendrá un aspecto similar al siguiente:

/api/v1/documents/863743527/layers/D6A326CA-72E6-45E5-836D-9795F8F534F4

/api/v1/documents/863743527/layers/68F63C8F-2376-4CA3-9764-CC17CBFC5F8D/variants/3FF72CC3-AF80-4252-A879-F8AFD68DB922

/api/v1/documents/863743527/layer-sets/E6950B7A-7457-44C5-81F7-972D9B04DBC3

Para los comandos relacionados con la capa puede reducir el API Endpoints a la parte importante sólo eliminando el prefijo "/api/v1/documents//layers/" . Esto hará que su script sea más corto como se muestra aquí:

// switching on a layer:
layerOn("/api/v1/documents/863743527/layers/D6A326CA-72E6-45E5-836D-9795F8F534F4")
// OR
layerOn("D6A326CA-72E6-45E5-836D-9795F8F534F4")

// switching on a variant:
layerOn("/api/v1/documents/863743527/layers/68F63C8F-2376-4CA3-9764-CC17CBFC5F8D/variants/3FF72CC3-AF80-4252-A879-F8AFD68DB922")
// OR
layerOn("68F63C8F-2376-4CA3-9764-CC17CBFC5F8D/variants/3FF72CC3-AF80-4252-A879-F8AFD68DB922")

 

Buenas prácticas

Puntos finales de la API

Cómo obtener los puntos finales de la API

  • Haciendo clic con el botón derecho en la capa y seleccionando "Copiar punto final de API"
  • utilizando el comando getAPIEndpoint() (consulte la documentación)

Cómo dirigirse a los puntos finales de la API

Puede utilizar el punto final de la API completo o eliminar la parte "/api/v1/documents//" para asegurarse de que su script también funciona cuando se copia en otro documento. Sin embargo, el ID del documento es importante si desea dirigirse a un punto API en un documento mimoLive diferente.

Depuración de scripts

Hay un depurador de scripts integrado en la capa de Automatización. Puede poner la capa en modo depuración activando el parámetro de capa "Depuración".

TBD.

Ideas para guiones

Publique un anuncio cada 10 minutos

En combinación con un "PIP Ventana" y una "Fuente de lista de reproducción multimedia" que contenga varios clips cortos de películas publicitarias, puede reproducir una publicidad cada 10 minutos. Asegúrese de desmarcar la opción "Non-Stop" en la fuente Media Playlist. De este modo, cada vez que se reproduzca la PIP Window se pone en directo, reproducirá un anuncio de la fuente Playlist y se apagará. Transcurridos 10 minutos, se reproducirá el siguiente anuncio.

Ejecuta un aguijón antes de cambiar a una capa determinada

Necesitas preparar un video stinger corto que tendrá un In-transition hasta que cubra toda la pantalla (por ejemplo después de 1 seg). Después de 1 segundo cambia en vivo la capa que quieres revelar. Coloca esta capa debajo de la capa que está reproduciendo el vídeo. Ahora que el vídeo stinger está cubriendo la pantalla, el cambio de la capa de abajo no se puede ver. El vídeo stinger debería continuar revelando la capa de abajo. Por favor, asegúrese de que el vídeo stinger se renderiza en códec de vídeo ProRes4444 para que lleve consigo la transparencia necesaria para la transición.

Crear un inicio de espectáculo complejo

Como puedes activar y desactivar las capas una tras otra durante un período de tiempo más largo, puedes tener varias capas de texto o anotación, una capa de ubicación que muestre gráficos o incluso tercios inferiores que llenen la pantalla para crear tu propio inicio de espectáculo animado. ¡Da rienda suelta a tu creatividad!

Activar un mando a distancia HTTP URL mediante un toque en la superficie del mando a distancia

Si necesita activar un HTTP Solicitar mediante un botón en su Superficie de control remoto puede añadir una capa de Automatización a su pila de capas y establecer la opción "Desactivar capa" de esa capa en "Automáticamente". Ahora puede poner un único comando httpRequest() en el campo de script "On Live". En su Superficie de Control Remoto añada el botón En Directo de esta capa al diseño. Una vez que pulse este botón en su Superficie de Control Remoto, el comando HTTP se realizará la solicitud.

Su opinión

¿Cómo calificaría su experiencia con esta función de mimoLive?

Manual del usuario: Actualizaciones recientes

Solución

Boletín electrónico

Español

Únase a la demostración en directo 24/7 de Zoom

*requerido

Es necesario cargar contenido de reCAPTCHA para enviar el formulario. Ten en cuenta que al hacerlo compartirás datos con terceros proveedores.

Más información