mimoLive® - Manuale d'uso

Selettori generici
Solo corrispondenze esatte
Ricerca nel titolo
Ricerca nel contenuto
Selettori del tipo di post

Automazione

Indice dei contenuti

Ottimizzare la produzione con il livello di automazione di mimoLive

Il livello di automazione mimoLive è stato originariamente sviluppato come proof of concept, ma da allora si è rivelato uno strumento incredibilmente utile per gli utenti. Questo livello può essere utilizzato per automatizzare l'accensione e lo spegnimento dei livelli in una sequenza specifica o in momenti predeterminati, per trasportare informazioni da un livello all'altro, per avviare e interrompere il processo di produzione dei dati. Destinazioni di uscitae molto altro ancora!

Può essere particolarmente utile per la creazione di produzioni complesse con più livelli e ingressi, in quanto elimina la necessità di commutazione e temporizzazione manuale. Con questo livello, gli utenti possono concentrarsi sulla creazione di contenuti coinvolgenti, mentre il software gestisce la temporizzazione e la sequenza della produzione. Ora, nella versione 2 di questo livello, abbiamo esteso i comandi per portare l'automazione in mimoLive ad un livello completamente nuovo.

Esempio: Livello di automazione

Automazione

Gli script di automazione in mimoLive non vengono eseguiti in tempo reale

Si noti che la tempistica degli script di automazione in mimoLive potrebbe non essere accurata a causa della natura asincrona delle richieste HTTP richiamate dal motore di rendering video. Questi script si basano su richieste HTTP all'API e la durata di queste richieste non può essere determinata con precisione, con conseguenti potenziali discrepanze di tempistica. Tenete presente questo aspetto quando utilizzate gli script di automazione nel vostro flusso di lavoro di produzione.

Prerequisito

Per far funzionare questo livello è necessario attivare l'opzione HTTP Server in mimoLive per attivare il Controllo Remoto API. Vai a mimoLive -> Preferenze -> Controlli remoti: Selezioni l'opzione "Consenti accesso al controllo remoto". (Attualmente il livello di automazione in mimoLive funziona solo senza password).

6102d04e 4eb3 4600 b410 0d2b2aef0767

Impostare il livello di automazione

Esistono due opzioni su come il livello deve comportarsi dopo essere stato attivato:

OpzioneComportamento
Spegnimento automatico del livelloPer questa opzione è disponibile un solo script. Una volta elaborato questo script, il livello si disattiva da solo. Questa opzione può essere utilizzata se una sequenza deve essere eseguita una sola volta.
Spegnimento manuale del livello (ad es. da parte dell'operatore)In questo caso sono disponibili tre script. Quando il layer viene commutato in modalità live, viene elaborato lo script "On Live". Una volta fatto ciò, lo script "While Live" viene elaborato in un ciclo infinito. Quando il layer viene spento, viene elaborato lo script "Turned Off".
Se non si ha bisogno di una determinata fase, si può lasciare vuoto lo script associato.

Codice sorgente Commenti

Per aiutarvi a ricordare la funzione del vostro script, vi consigliamo di utilizzare i commenti nel vostro script:

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

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

I commenti devono essere in una riga separata.

Comandi di scripting

Il linguaggio di scripting è proprietario e comprende diversi comandi. Questi comandi sono elencati in una scheda informativa nell'anteprima dei livelli sulla destra. Poiché l'elenco potrebbe essere un po' piccolo da leggere, può espandere l'anteprima utilizzando il pulsante situato sopra e a destra dell'area di anteprima.

layerOn()

Questo comando le permette di attivare un livello o una variante di livello.

// 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)

layerOff(<API ID del livello come Espressione stringa>.)

Questo comando le permette di spegnere un livello o una variante di livello.

// 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(<Livello API Imposta ID come espressione stringa>)

Questo comando può essere utilizzato per attivare il richiamo per un determinato Set di livelli.

// 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(<API Output ID di destinazione come espressione di stringa>)

Utilizzare questo comando per attivare una destinazione di uscita.

// avvia una destinazione di uscita in base al suo id
outputOn("1953186E-4176-4849-A8ED-5B47EE1627BD")

// avvia una Destinazione di uscita tramite il suo URL Endpoint API lungo
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")

// avvia una Destinazione di uscita con una variabile definita
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOn($myOutputDestinationtID)

outputOff(<API Output ID di destinazione come espressione di stringa>)

Utilizzare questo comando per disattivare una destinazione di uscita.

// ferma una destinazione di uscita in base al suo id
outputOff("1953186E-4176-4849-A8ED-5B47EE1627BD")

// ferma una Destinazione di uscita tramite il suo URL Endpoint API lungo
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")

// arresta una Destinazione di uscita con una variabile definita
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOff($myOutputDestinationtID)

getLayerData(1TP11NomeVariabileRisultato, ).

Questo comando combina più comandi in un'unica fase di script: Legge le informazioni sul livello dal server HTTP e memorizza un campo dati specifico dalle risposte JSON in una variabile. È necessario il percorso esatto del valore che desidera leggere. Per i parametri di input dei livelli, questo percorso inizia solitamente con "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(1TP11NomeVariabileRisultato, ).

Questo comando ottiene l'Endpoint API per un oggetto mimoLive specifico in base al suo nome visualizzato. Tenga presente che il nome visualizzato può essere facilmente modificato dall'operatore mimoLive nell'interfaccia utente mimoLive, e che a sua volta interromperà lo script di automazione se non riesce più a trovare l'oggetto specifico. D'altra parte, questo comando può essere utilizzato per trovare gli endpoint API in modo programmatico, senza la necessità di codificare gli endpoint API nello script.

Le opzioni valide per sono: "sorgente", "livello", "set di livelli", "uscita-destinazione".

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

// switch this layer on
layerOn($myBasketballScoreLayerID)
Schermata 2024 06 11 alle 15.20.42

dormire(<Secondi> come numero)

Il comando sleep() metterà in pausa l'esecuzione dello script per l'intervallo di tempo indicato, espresso in secondi.

// 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(<Tempo come espressione di stringa>)

Il comando sleepUntil() permette allo script di fermarsi fino al raggiungimento dell'ora specificata. Se il tempo è già trascorso, lo script attende fino al giorno successivo. Il formato dell'ora è HH:MM o HH:MM:SS in un periodo di 24 ore.

// 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)

sleepOnTheMinute()

Questo comando di script mette in pausa lo script fino al raggiungimento della prossima frazione di ora '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)

setVariabile($variableName, <valore>)

Per definire una variabile locale, utilizzi il parametro setVariabile comando. Deve specificare il nome di una variabile (che inizia con una $) e il valore che questa variabile deve contenere. Il valore può essere un numero, un testo (racchiuso tra virgolette), o i valori booleani verofalso.

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

setGlobal($variableName, <valore>)

Una variabile globale può essere utilizzata sia nel livello corrente che in qualsiasi livello di automazione superiore. Questa funzionalità è particolarmente utile per condividere le stesse informazioni su più livelli di automazione, come ad esempio i punti finali API di un determinato livello. Per il valore della variabile, si applicano le stesse regole che valgono per la variabile setVariabile comando.

Tenga presente che le variabili globali sono accessibili ad altri livelli di automazione finché il livello di origine è attivo. Questa disposizione consente di cambiare le variabili globali attivando un livello diverso con definizioni di variabili globali distinte. La prassi migliore in questo scenario è impostare l'opzione 'Switch Layer Off' del livello di automazione su 'Manualmente' e definire le variabili globali nello script 'On Live'.

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

concat($resultVariableName, )

Questo comando di script concatena le stringhe e memorizza il risultato come una stringa.

// 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(1TP11NomeVariabile Risultato, )

Questo comando esegue semplici calcoli matematici, tra cui addizione (+), sottrazione (-), moltiplicazione (*) e divisione (/). Tenga presente che i calcoli vengono eseguiti nell'ordine in cui appaiono e NON seguono la regola 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

Questo se confronta due espressioni numeriche utilizzando un comparatore specificato. Se il confronto è vero, vengono eseguiti i comandi successivi. Altrimenti, i comandi successivi vengono saltati fino a quando non viene eseguito un comando altro o endif viene raggiunto.

I comparatori validi sono:

“==”uguale
“!=”non uguale
“>”maggiore di
"<"meno di
“>=”maggiore o uguale a
"<="inferiore o uguale a
// 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

Questo ifStringa confronta due espressioni di stringhe utilizzando un comparatore specificato. Il confronto si basa sul codice dei caratteri ASCII di ogni lettera delle stringhe. Se il confronto è vero, vengono eseguiti i comandi successivi. In caso contrario, i comandi successivi vengono saltati fino a quando non viene eseguito un comando altro o endif viene raggiunto.

Per i comparatori validi, veda il 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 del livello come Espressione stringa>.) - ifLayerIsOff(<API ID del livello come Espressione stringa>.) [else] endif

Questi se verifica se un determinato livello è attualmente attivo o meno. Se la condizione specificata è soddisfatta (il livello è acceso o spento), vengono elaborati i comandi successivi. In caso contrario, i comandi successivi vengono saltati fino a quando non si verifica un altro o endif viene raggiunto.

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 del livello come Espressione stringa>.) - ifLayerSetIsInactive(<API ID del livello come Espressione stringa>.) [else] endif

Questi se Le dichiarazioni verificano se un certo Set di livelli è attualmente in vita o no. In caso affermativo, vengono elaborati i comandi successivi. In caso contrario, i comandi successivi vengono saltati fino a quando non si verifica un altro o endif viene raggiunto.

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

Questo comando complesso le permette di testare qualsiasi parametro di un livello che il programma HTTP API fornisce. Deve specificare un livello tramite il suo ID API, il percorso della chiave all'interno dei dati JSON restituiti dall'API HTTP, un comparatore (come una stringa tra virgolette, ad esempio, "=="), e un valore.

I valori validi del comparatore sono:

“==”uguale
“!=”non uguale
“>”maggiore di
"<"meno di
“>=”maggiore o uguale a
"<="inferiore o uguale a
// 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

loop([]) [break] endloop

Il anello le permette di eseguire il codice più volte. Se non specifica il numero di iterazioni, il ciclo verrà eseguito all'infinito. Il comando pausa le permette di uscire dal ciclo in qualsiasi momento. endloop è necessario per contrassegnare la fine del blocco di comando che deve essere eseguito in loop.

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()

Il httpRichiesta() attiva l'URL indicato. Ciò offre una grande flessibilità nel modo in cui può utilizzare questo comando di script. In mimoLivePuò anche attivare azioni in altri documenti o script remoti. Per maggiori dettagli su mimoLiveComandi API HTTP, consulti la sezione HTTP API per esplorare tutte le possibili chiamate API.

// accendere un livello
httpRequest("http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive")

httpRequestJSON($resultVariableName, )

Questo comando legge la risposta della chiamata HTTP come JSON e memorizza i dati nella variabile di risultato specificata. Dopodiché, può accedere ai dati tramite il comando getJSONData() comando.

getJSONData($resultVariableName, $jsonDataVariable, )

Questo comando recupera un valore di dati specifico da una struttura JSON memorizzata in una variabile. Deve specificare la variabile che contiene i dati JSON ($jsonDataVariabile), il percorso dei dati all'interno della struttura JSON (.) e la variabile in cui il risultato deve essere memorizzato (1TP11NomeVariabileRisultato). Ciò consente un'estrazione precisa dei dati per un'ulteriore elaborazione o per l'utilizzo nel suo script.

// ottenere tutti i dati di un livello
httpRequestJSON($myLayerData, "http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B")

// ottenere il valore del quadrante del volume
getJSONData($volumenDial, $myLayerData, "data.attributes.volume")

// Ora, la variabile $volumenDial conterrà un valore compreso tra 0 e 1.

> Punto di interruzione del debugger

Quando il debugger di script è abilitato e la modalità di debug è impostata su 'Continuamente', l'esecuzione dello script si fermerà in corrispondenza di questo marcatore e attenderà fino a quando l'operatore mimoLive farà clic sul pulsante 'Passo successivo'. Per ulteriori informazioni sulle possibilità di debug, consulti la sezione 'Best Practices - Debug degli script'.

Tipi di dati

API Punti finali

Il parametro deve essere un endpoint API per un livello, una variante di livello, un set di livelli, una sorgente o una destinazione di output. Può ottenere questi Endpoint API facendo clic con il pulsante destro del mouse sull'oggetto nel documento mimoLive. Dovrebbe apparire un menu contestuale con una voce di menu 'Copia Endpoint API negli Appunti'.

Questa azione copierà il punto finale API di questo oggetto negli appunti. Se lo incolla altrove, avrà un aspetto simile a questo:

/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

Per i comandi relativi ai livelli, può ridurre il API I punti finali alla parte importante solo rimuovendo il prefisso "/api/v1/documents//layers/" . Questo renderà il suo script più breve, come mostrato qui:

// 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")

 

Le migliori pratiche

Endpoint API

Come ottenere gli endpoint API

  • Cliccando con il tasto destro del mouse sul livello e selezionando "Copia endpoint API".
  • utilizzando il comando getAPIEndpoint() (vedere la documentazione).

Indirizzare gli endpoint API

Può utilizzare l'endpoint API completo o rimuovere la parte "/api/v1/documents//" per assicurarsi che il suo script funzioni anche quando viene copiato in un altro documento. Tuttavia, l'ID del documento è importante se desidera indirizzare un punto API in un altro documento mimoLive.

Script di debug

C'è un debugger di script incorporato nel livello Automazione. Può passare il livello in modalità di debug impostando il parametro del livello 'Debug' su on.

TBD.

Idee di scripting

Pubblicare un annuncio ogni 10 minuti

In combinazione con un'opzione "PIP Il livello "Finestra" e una "sorgente Playlist multimediale" contenente più brevi filmati pubblicitari consentono di riprodurre una pubblicità ogni 10 minuti. Assicurarsi di deselezionare l'opzione "Non-Stop" nella sorgente Media Playlist. In questo modo ogni volta che la PIP Se la finestra è impostata su "live", riproduce un annuncio dalla sorgente Playlist e si spegne. Dopo 10 minuti verrà riprodotto l'annuncio successivo.

Eseguire un pungiglione prima di passare a un determinato livello.

È necessario preparare un breve video stinger che avrà una transizione interna fino a coprire tutto lo schermo (ad esempio, dopo 1 secondo). Dopo 1 secondo si passa in diretta al livello che si desidera rivelare. Posizionare questo livello sotto il livello che riproduce il video stinger. Ora che il video stinger copre lo schermo, la commutazione del livello sottostante non può essere vista. Il video stinger dovrebbe continuare a rivelare il livello sottostante. Assicurarsi che il video stinger sia renderizzato con il codec video ProRes4444, in modo da avere la trasparenza necessaria per la transizione.

Creare un'apertura di spettacolo complessa

Poiché è possibile attivare e disattivare i livelli uno dopo l'altro per un periodo di tempo più lungo, è possibile avere più livelli di testo o di annotazione, livelli di piazzamento che mostrano la grafica o persino terzi inferiori che riempiono lo schermo per creare il proprio spettacolo animato. Siate creativi!

Attivare un telecomando HTTP URL con un tocco sulla superficie del telecomando

Se è necessario attivare un HTTP Richiesta tramite un pulsante sul vostro Superficie di controllo remoto è possibile aggiungere un livello di automazione alla pila di livelli e impostare l'opzione "Switch Layer Off" di tale livello su "Automatically". Ora è possibile inserire un singolo comando httpRequest() nel campo di script "On Live". Sulla superficie di controllo remoto aggiungere il pulsante Live di questo livello al layout. Una volta premuto questo pulsante sulla superficie di controllo remoto, il HTTP sarà eseguita la richiesta.

Il vostro feedback

Come valuta la sua esperienza con questa funzione di mimoLive?

Manuale d'uso: Aggiornamenti recenti

Soluzione

Newsletter via e-mail

Italiano

Partecipate alla dimostrazione Zoom® in diretta 24/7

*necessario

Devi caricare i contenuti da reCAPTCHA per inviare il modulo. Si prega di notare che in questo modo si condividono i dati con provider di terze parti.

Ulteriori informazioni