Optimieren Sie Ihre Produktion mit der Automatisierungsschicht von mimoLive
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenDer mimoLive Automation Layer wurde ursprünglich als Proof of Concept entwickelt, hat sich aber inzwischen als unglaublich nützliches Werkzeug für die Benutzer erwiesen. Mit dieser Schicht können Sie das Ein- und Ausschalten von Schichten in einer bestimmten Reihenfolge oder zu bestimmten Zeiten automatisieren, Daten aus entfernten Quellen über HTTP abrufen und verarbeitete Informationen in die Eingabefelder der Schicht schieben, Output Destinations starten und stoppen und vieles mehr!
Automatisierungsskripte in mimoLive laufen nicht in Echtzeit
Bitte beachten Sie, dass das Timing von Automatisierungsskripten in mimoLive aufgrund der asynchronen Natur von HTTP-Anfragen, die von der Video-Rendering-Engine aufgerufen werden, möglicherweise nicht genau ist. Einige Skriptbefehle senden HTTP-Anfragen an die mimoLive API und die Länge dieser Anfragen kann nicht genau bestimmt werden, was zu möglichen Zeitabweichungen führt. Beachten Sie dies, wenn Sie Automatisierungsskripte in Ihrem Produktionsablauf verwenden.
Voraussetzung
Damit diese Ebene funktioniert, müssen Sie den HTTP-Server in mimoLive einschalten, um die Fernsteuerungs-API zu aktivieren. Gehen Sie zu mimoLive > Einstellungen > Fernbedienungen: Markieren Sie die Option "Fernsteuerungszugriff zulassen". (Derzeit funktioniert die Automatisierungsebene in mimoLive nur ohne Passwort)

Einrichten der Automatisierungsebene
Es gibt zwei Möglichkeiten, wie sich die Ebene nach dem Einschalten verhalten soll:
Option | Verhalten |
Schicht automatisch ausschalten | Diese Option ist einmalig, denn sobald das Skript ausgeführt wurde, schaltet sich die Ebene automatisch aus. Verwenden Sie diese Option, wenn ein Skript nur einmal ausgeführt werden soll. |
Schicht manuell ausschalten (z.B. durch den Bediener) | In diesem Modus sind drei Skripte verfügbar: - Live dabei - Wird einmal ausgeführt, wenn die Ebene live geschaltet wird. - Während Live - Läuft kontinuierlich in einer Endlosschleife, nachdem das Skript On Live beendet wurde. - Ausgeschaltet - Wird einmal ausgeführt, wenn die Ebene ausgeschaltet wird. Wenn die Ebene ausgeschaltet wird, wird das Skript While Live beendet, bevor das Skript Turned Off ausgeführt wird. Wenn Sie die Ebene wieder einschalten, können Sie den vorherigen Zustand wiederherstellen. |
Quellcode Kommentare
Um sich den Zweck und die Funktionalität Ihres Skripts zu merken, empfehlen wir, Kommentare in den Code einzufügen. Beginnen Sie jede Kommentarzeile mit //.
// First sleep for 5 seconds...
sleep(5)
// ...then start the Stop Watch layer:
layerOn("7C4665C4-0E17-4F63-BCFF-B59D68D75956")
Skripting-Befehle
Die Skriptsprache ist proprietär und umfasst mehrere Befehle. Diese Befehle sind in einem Spickzettel in der Ebenenvorschau auf der rechten Seite aufgeführt. Wenn diese Liste schwer zu lesen ist, können Sie die Vorschau erweitern, indem Sie auf die Schaltfläche über und rechts neben dem Vorschaubereich klicken.
layerOn()
Schaltet eine Ebene oder eine Ebenenvariante anhand ihrer ID oder API-Endpunkt-URL oder einer Variablen ein.
// 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 Ebenen-ID als String Ausdruck>)
Schaltet eine Ebene oder eine Ebenenvariante anhand ihrer ID oder API-Endpunkt-URL oder einer Variablen aus.
// 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(<API-Ebene ID als String-Ausdruck festlegen>)
Löst den Rückruf für ein bestimmtes Layer Set aus.
// 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-Ausgabe Ziel-ID als String-Ausdruck>)
Schaltet ein Ausgabeziel ein.
/// Starten Sie ein Ausgabeziel über seine ID
outputOn("1953186E-4176-4849-A8ED-5B47EE1627BD")
/// Starten Sie ein Ausgabeziel über seine lange API-Endpunkt-URL
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")
/// Starte ein Ausgabeziel mit einer definierten Variablen
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOn($myOutputDestinationtID)
outputOff(<API-Ausgabe Ziel-ID als String-Ausdruck>)
Schaltet ein Ausgabeziel aus.
// Ein Ausgabeziel anhand seiner ID anhalten
outputOff("1953186E-4176-4849-A8ED-5B47EE1627BD")
// Ein Ausgabeziel über seine lange API-Endpunkt-URL anhalten
outputOff("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")
// Ein Ausgabeziel mit einer definierten Variable anhalten
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOff($myOutputDestinationtID)
getLayerData(1TP11ErgebnisVariablenname, , )
Ruft Ebenendaten nach Schlüsselpfad ab.
Dieser Befehl kombiniert mehrere Befehle in einem Scriptschritt: Er ruft die Layer-Informationen vom HTTP-Server ab und speichert ein bestimmtes Datenfeld aus der JSON-Antwort in einer Variablen. Sie benötigen den genauen Pfad zu dem Wert, den Sie lesen möchten. Für den Eingabeparameter von Ebenen beginnt dieser Pfad normalerweise mit '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(1TP11ErgebnisVariablenname, , )
Ruft den API-Endpunkt für ein angegebenes mimoLive-Objekt anhand seines Anzeigenamens ab.
Denken Sie daran, dass der Anzeigename jederzeit vom Bediener in der mimoLive Benutzeroberfläche geändert werden kann. Wenn sich der Name ändert, kann das Automatisierungsskript fehlschlagen, weil es das angegebene Objekt nicht mehr finden kann. Andererseits ist dieser Befehl nützlich, um API-Endpunkte programmatisch zu finden, ohne ihre IDs im Skript hart codieren zu müssen.
Funktioniert für "Quelle", "Ebene", "Ebenen-Variante", "Ebenen-Set", "Ausgabe-Ziel".
// Get the API Endpoint for the Basketball Score layer
getObjectIDByName($myBasketballScoreLayerID, "layer", "My Basketball Score Keeper")
// switch this layer on
layerOn($myBasketballScoreLayerID)

schlafen(<Sekunden> als Zahl)
Pausiert die Skriptausführung für eine bestimmte Anzahl von Sekunden.
// 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(<Zeit als String-Ausdruck>)
Pausiert bis zu einer bestimmten Uhrzeit (HH:MM oder HH:MM:SS).
// 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()
Hält das Skript an, bis der nächste 'minutengenaue' Bruchteil einer Stunde erreicht ist.
// 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($variablenname, <Wert>)
Erzeugt oder ändert eine lokale Variable (beginnt mit $). Der Wert kann ein String, eine Zahl oder ein Boolean sein.
setVariable($myText, "This is a text")
setVariable($myNumber, 15.73)
setVariable($myBoolValue, false)
setGlobal($variablenname, <Wert>)
Erzeugt oder ändert eine globale Variable, die von allen Automatisierungsebenen gemeinsam genutzt wird.
Bitte beachten Sie, dass globale Variablen für andere Automatisierungsebenen zugänglich sind, solange die ursprüngliche Ebene aktiv ist. Auf diese Weise können Sie globale Variablen umschalten, indem Sie eine andere Ebene mit anderen globalen Variablendefinitionen aktivieren. Die beste Vorgehensweise in diesem Szenario ist, die Option 'Ebene ausschalten' der Automatisierungsebene auf 'Manuell' zu setzen und die globalen Variablen im Skript 'On Live' zu definieren.
setGlobal($myGlobalText, "This is a text")
setGlobal($myGlobalNumber, 15.73)
setGlobal($myGlobalBoolValue, false)
concat(1TP11ErgebnisVariablenname, )
Konkateniert String-Ausdrücke.
// 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.".
replace(, , , )
Mit diesem Befehl wird eine neue Zeichenkette erstellt, indem alle Vorkommen einer Suchzeichenkette in einer Quellzeichenkette ersetzt werden. Das Ergebnis wird in der angegebenen Ergebnisvariablen gespeichert.
// define a source string
setVariable($source, "Hello mimoLive, hello automation!")
// replace “hello” (lowercase) with “Hi”
replace($result, $source, "hello", "Hi")
// $result = "Hello mimoLive, Hi automation!"
math(1TP11ErgebnisVariablenname, )
Dieser Befehl führt einfache mathematische Berechnungen durch, einschließlich Addition (+), Subtraktion (-), Multiplikation (*) und Division (/). Bitte beachten Sie, dass die Berechnungen in der Reihenfolge ausgeführt werden, in der sie erscheinen und NICHT der PEMDAS/BODMAS-Regel folgen.
// 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
list(1TP18ErgebnisVariablenname, [, , ...])
Der Befehl list erstellt eine Liste und legt sie in der Ergebnisvariablen ab. Sie können die Listenvariable im Befehl getListItem verwenden, um durch diese Liste zu iterieren.
// create a list and put it into a variable
list($myList, "A", "B", "C", "D")
appendToList($listVariableName, )
Dieser Befehl fügt einen bestimmten Wert an eine bestehende Liste an.
// create a list and put it into a variable
list($myList, "A", "B", "C", "D")
// append an item to the list
appendToList($myList, "E")
// The result is a list with 5 items "A", "B", "C", "D" and "E"
getListItem(1TP18ErgebnisVariablenname, 1TP18ListenVariablenname, )
Mit diesem Befehl können Sie ein bestimmtes Element aus einer Liste abrufen, die mit dem Befehl list angegeben wurde. Bitte beachten Sie, dass die Elementnummer bei 1 beginnt, im Gegensatz zu vielen anderen Programmiersprachen, in denen Arrays oft mit dem Index 0 beginnen.
// create a list and put it into a variable
list($myList, "A", "B", "C", "D")
// get a specific list item
getListItem($myCharacter, $myList, 2)
// The result "B" is stored in variable $myCharacter
// The following is a more complex example on how to iterate through the list with a loop command
// define a list of layer IDs that should be turned on
list($myLayerIDs, "4ECB8ACC-DEF5", "9852-60E2C81", "DFD87A4D-9FC9", "4324-9B7C", "7B1C13-2CD28")
setvariable($iteration,1)
loop(5)
getListItem($myLayerID,$myLayerIDs,$iteration)
setLayerOn($myLayerID)
math($iteration,$iteration+1)
endloop()
getListCount($resultingListCountVariableName, $listVariableName)
Mit diesem Befehl können Sie die Anzahl der Elemente in einer Listenvariablen ermitteln, die Sie mit list() erstellt haben.
// create a list and put it into a variable
list($myList, "A", "B", "C", "D")
// get a specific list item
getListCount($myListCount, $myList)
// The result 4 is stored in variable $myListCount
if(, , ) [else] endif
Diese if
-Anweisung vergleicht zwei numerische Ausdrücke mit einem angegebenen Komparator. Wenn der Vergleich wahr ist, werden der oder die folgenden Befehle ausgeführt. Andernfalls werden die nachfolgenden Befehle übersprungen, bis ein else
oder endif
erreicht wird.
Gültige Vergleichsprodukte sind:
“==” | ist gleich |
“!=” | nicht gleich |
">" | größer als |
"<" | weniger als |
">=" | größer oder gleich als |
"<=" | weniger oder weniger als |
// 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
Diese ifString
-Anweisung vergleicht zwei String-Ausdrücke mit einem angegebenen Komparator. Der Vergleich basiert auf dem ASCII-Zeichencode jedes Buchstabens in den Zeichenketten. Wenn der Vergleich wahr ist, werden die folgenden Befehle ausgeführt. Andernfalls werden die nachfolgenden Befehle übersprungen, bis ein else
oder endif
erreicht wird.
Für gültige Vergleicher siehe den if-Befehl.
// 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 Ebenen-ID als String Ausdruck>) - ifLayerIsOff(<API Ebenen-ID als String Ausdruck>) [else] endif
Diese if
-Anweisungen testen, ob eine bestimmte Ebene gerade aktiv ist oder nicht. Wenn die angegebene Bedingung erfüllt ist (die Ebene ist ein- oder ausgeschaltet), dann werden die folgenden Befehle verarbeitet. Andernfalls werden die nachfolgenden Befehle übersprungen, bis ein else
oder endif
erreicht wird.
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 Ebenen-ID als String Ausdruck>) - ifLayerSetIsInactive(<API Ebenen-ID als String Ausdruck>) [else] endif
Diese if
-Anweisungen testen, ob ein bestimmtes Layerset gerade aktiv ist oder nicht. Wenn ja, werden die folgenden Befehle verarbeitet. Andernfalls werden die nachfolgenden Befehle übersprungen, bis ein else
oder endif
erreicht wird.
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
Mit diesem komplexen Befehl können Sie jeden Parameter einer Ebene testen, den die HTTP API liefert. Sie müssen eine Ebene durch ihre API-ID, den Schlüsselpfad innerhalb der von der HTTP-API zurückgegebenen JSON-Daten, einen Komparator (als String in Anführungszeichen, z.B. "=="
), und einen Wert.
Gültige Komparatorwerte sind:
“==” | ist gleich |
“!=” | nicht gleich |
">" | größer als |
"<" | weniger als |
">=" | größer oder gleich als |
"<=" | weniger oder weniger als |
// 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
Mit dem Befehl Schleife
können Sie Code mehrfach ausführen. Wenn Sie die Anzahl der Iterationen nicht angeben, läuft die Schleife unendlich lange. Mit dem Befehl break
können Sie die Schleife jederzeit verlassen. endloop
ist notwendig, um das Ende des Befehlsblocks zu markieren, der in einer Schleife ausgeführt werden soll.
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()
Die httpRequest()
Befehl löst die angegebene URL aus. Dies bietet Ihnen eine große Flexibilität bei der Verwendung dieses Skriptbefehls. In mimoLive
kann es sogar Aktionen in anderen Dokumenten oder Remote-Skripten auslösen. Für Details über mimoLive
HTTP-API-Befehle, konsultieren Sie bitte die HTTP API Dokumentation, um alle möglichen API-Aufrufe zu erkunden.
// eine Ebene einschalten
httpRequest("http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive")
httpRequestJSON(1TP11ErgebnisVariablenname, )
Dieser Befehl liest die Antwort des HTTP-Aufrufs als JSON und speichert die Daten in der angegebenen Ergebnisvariablen. Danach können Sie über den Befehl getJSONData()
auf die Daten zugreifen.
getJSONData($resultVariableName, $jsonDataVariable, )
Dieser Befehl ruft einen bestimmten Datenwert aus einer JSON-Struktur ab, die in einer Variablen gespeichert ist. Sie müssen die Variable angeben, die die JSON-Daten enthält ($jsonDataVariable
), den Pfad zu den Daten innerhalb der JSON-Struktur () und die Variable, in der das Ergebnis gespeichert werden soll (
$resultVariableName
). Dies ermöglicht eine präzise Extraktion der Daten für die weitere Verarbeitung oder Verwendung in Ihrem Skript. Der Schlüsselpfad kann Verweise auf Elemente in einem Array enthalten, z.B. "meinArray.[12].meinWert" gibt das Wertelement von meinWert eines Arrays namens meinArray bei Element 12 aus. (Die Anzahl der Elemente beginnt bei 1).
///alle Daten eines Layers abrufen
httpRequestJSON($myLayerData, "http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B")
///den Wert des Lautstärkereglers abrufen
getJSONData($volumenDial, $myLayerData, "data.attributes.volume")/// Jetzt wird die Variable $volumenDial einen Wert zwischen 0 und 1 enthalten.
setJSONData(, , )
Schreibt einen Wert in eine JSON-Variable mit dem angegebenen Schlüsselpfad. Verwenden Sie dies, um JSON zu ändern, das Sie mit
httpRequestJSON
erstellt oder abgerufen haben. Die Schlüsselpfade sind durch Punkte getrennt.// set fields setJSONData($json, "data.attributes.input-values.title", "My Headline") setJSONData($json, "data.attributes.volume", 0.75)
JSONToString(, )
Serialisiert eine JSON-Objektvariable in einen kompakten String (nützlich zum Protokollieren, Senden oder Speichern).
// assume $json already contains data
JSONToString($jsonString, $json)
// $jsonString now holds the serialized JSON text
urlEncode(, )
URL-kodiert eine Zeichenkette, so dass sie sicher in Abfrageparametern oder Pfaden in http-Anfragen verwendet werden kann.
// build a query value and encode it
setVariable($q, "mimoLive tips & tricks")
urlEncode($qEncoded, $q)
// $qEncoded -> "mimoLive%20tips%20%26%20tricks"
urlDecode(, )
URL dekodiert eine prozentual kodierte Zeichenfolge zurück in lesbaren Text.
// decode an encoded query value
setVariable($raw, "mimoLive%20tips%20%26%20tricks")
urlDecode($decoded, $raw)
// $decoded -> "mimoLive tips & tricks"
stoppen
Hält das aktuell laufende Skript sofort an. Nützlich für den vorzeitigen Abbruch, wenn eine Bedingung erfüllt ist.
// wait for a condition, then stop the script
ifLayerData("D6A326CA-72E6-45E5-836D-9795F8F534F4", "data.attributes.volume", ">", 0.5)
// do one action then stop
layerOn("8C58DEA7-CCBE-44CB-A60F-97C5BD456C68")
stop
else
// keep waiting
sleep(1)
endif
> (Haltepunkt für Debugger)
Wenn der Skript-Debugger aktiviert ist und der Debugging-Modus auf 'Kontinuierlich' eingestellt ist, wird die Ausführung des Skripts an dieser Markierung angehalten und gewartet, bis der mimoLive-Bediener auf die Schaltfläche 'Nächster Schritt' klickt. Weitere Informationen zu den Debugging-Möglichkeiten finden Sie unter 'Best Practices - Debugging von Skripten'.
// do something
layerOn("D6A326CA-72E6-45E5-836D-9795F8F534F4")
// breakpoint: script pauses here in debugger
>
// continue after stepping
sleep(1)
layerOff("D6A326CA-72E6-45E5-836D-9795F8F534F4")
Konstante: $DOCUMENT_ID
Enthält die API-Dokument-ID für das aktuelle mimoLive-Dokument. Praktisch für die Erstellung von Endpunkten ohne Hardcoding.
// build a layer endpoint using the document ID
setVariable($layerId, "BA868701-8131-49CB-8EDD-8C7E6E7CD60B")
concat($endpoint, "/api/v1/documents/" + $DOCUMENT_ID + "/layers/" + $layerId + "/setLive")
// switch the layer on using the constructed URL
httpRequest($endpoint)
Datenarten
API Endpunkte
Der Parameter sollte ein API-Endpunkt für einen Layer, eine Layer-Variante, ein Layer-Set, eine Quelle oder ein Ausgabeziel sein. Sie können diese API-Endpunkte erhalten, indem Sie mit der rechten Maustaste auf das Objekt im mimoLive-Dokument klicken. Es sollte ein Kontextmenü mit einem Menüpunkt 'API-Endpunkt in die Zwischenablage kopieren' erscheinen.
Mit dieser Aktion wird der API-Endpunkt für dieses Objekt in die Zwischenablage kopiert. Wenn Sie ihn an anderer Stelle einfügen, sieht er etwa so aus:
/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
Für Ebenen-bezogene Befehle können Sie die API Endpunkte zum wichtigen Teil nur durch Entfernen des Präfixes "/api/v1/documents//layers/" . Dadurch wird Ihr Skript kürzer, wie hier gezeigt:
// 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")
Beste Praxis
API-Endpunkte
Wie man API-Endpunkte erhält
- Klicken Sie mit der rechten Maustaste auf die Ebene und wählen Sie "API-Endpunkt kopieren".
- mit Hilfe des Befehls getAPIEndpoint() (siehe Dokumentation)
Adressierung von API-Endpunkten
Sie können entweder den kompletten API-Endpunkt verwenden oder den Teil "/api/v1/documents//" entfernen, um sicherzustellen, dass Ihr Skript auch funktioniert, wenn Sie es in ein anderes Dokument kopieren. Die Dokument-ID ist jedoch wichtig, wenn Sie einen API-Punkt in einem anderen mimoLive-Dokument ansprechen wollen.
Skripte debuggen
In der Automatisierungsebene ist ein Skript-Debugger integriert. Sie können die Ebene in den Debugging-Modus versetzen, indem Sie den Ebenenparameter "Debug" auf ein setzen.
TBD.
Skripting-Ideen
Alle 10 Minuten eine Anzeige schalten
In Kombination mit einem "PIP Window"-Ebene und einer "Media Playlist"-Quelle, die mehrere kurze Werbefilmclips enthält, können Sie alle 10 Minuten eine Werbung abspielen. Stellen Sie sicher, dass Sie die Option "Non-Stop" in der Quelle "Media Playlist" deaktivieren. Auf diese Weise wird jedes Mal, wenn die PIP Fenster auf Live gestellt wird, wird eine Anzeige aus der Playlist-Quelle abgespielt und schaltet sich dann ab. Nach 10 Minuten wird die nächste Werbung abgespielt.
Führen Sie einen Stinger aus, bevor Sie zu einer bestimmten Ebene wechseln
Sie müssen ein kurzes Stinger-Video vorbereiten, das eine In-Transition hat, bis es den gesamten Bildschirm bedeckt (z. B. nach 1 Sekunde). Nach 1 Sekunde schalten Sie live zu der Ebene, die Sie enthüllen möchten. Legen Sie diese Ebene unter die Ebene, die das Stinger-Video wiedergibt. Jetzt, da das Stinger-Video den gesamten Bildschirm bedeckt, ist das Umschalten der darunter liegenden Ebene nicht mehr zu sehen. Das Stinger-Video sollte mit dem Aufdecken der darunter liegenden Ebene fortfahren. Achten Sie darauf, dass das Stinger-Video im Videocodec ProRes4444 gerendert ist, damit es die für den Übergang notwendige Transparenz mitbringt.
Erstellen Sie einen komplexen Show-Opener
Da Sie die Ebenen nacheinander über einen längeren Zeitraum ein- und ausschalten können, können Sie mehrere Text- oder Anmerkungsebenen, Platzierungsebenen mit Grafiken oder sogar untere Drittel haben, die den Bildschirm ausfüllen, um Ihren eigenen animierten Show-Opener zu erstellen. Werden Sie kreativ!
Auslösen einer Fernbedienung HTTP URL durch Antippen der Fernbedienungsoberfläche
Wenn Sie eine HTTP Anfrage über eine Schaltfläche auf Ihrem Oberfläche der Fernbedienung können Sie eine Automatisierungsebene zu Ihrem Ebenenstapel hinzufügen und die Option "Ebene ausschalten" für diese Ebene auf "Automatisch" setzen. Nun können Sie einen einzelnen httpRequest()-Befehl in das Skriptfeld "On Live" einfügen. Fügen Sie auf Ihrer Fernbedienungsoberfläche die Schaltfläche "Live" für diese Ebene zum Layout hinzu. Sobald Sie diese Schaltfläche auf Ihrer Fernsteuerungsoberfläche drücken, wird die HTTP Anfrage durchgeführt werden.