用mimoLive的自动化层精简你的生产
mimoLive的自动化层最初是作为一个概念验证而开发的,但后来被证明是一个对用户非常有用的工具。这个层可以用来自动打开和关闭特定顺序的层,或在预定的时间。
这对于创建具有多个层和输入的复杂产品特别有帮助,因为它消除了手动切换和计时的需要。有了自动化层,用户可以专注于创造有吸引力的内容,并让软件处理其制作的时间和顺序。
例子:自动化层
警告:mimoLive 的自动化脚本不会实时运行
请注意,由于视频渲染引擎调用的HTTP请求的异步性,mimoLive中自动化脚本的时间可能不准确。这些脚本依赖于对API的HTTP请求,这些请求的长度无法准确确定,导致潜在的时间差异。在你的生产工作流程中使用自动化脚本时,请牢记这一点。
先决条件
为了使这一层发挥作用,你需要打开 HTTP 在mimoLive中的服务器,以启用远程控制 API.转到 姆雷特-沃尔夫斯堡 -> 首选项 -> 远程控制:勾选 "允许远程控制访问 "选项。(目前它只在没有密码的情况下工作)。
设置自动化层
有两个选项可以决定该层在切换为活体后的表现:
选项 | 行为举止 |
---|---|
自动关闭图层 | 对于这个选项,只有一个脚本可用。一旦这个脚本被处理了,该层就会自动切换。这个选项可以用于一个序列应该被执行一次。 |
手动关闭图层(例如由操作者关闭)。 | 在这种情况下,有三个脚本可用。当图层被切换为实时时,"On Live "脚本将被处理。一旦完成,"While Live "脚本将被无休止地循环处理。一旦图层被关闭,"Turned Off "脚本将被处理。 如果你对某一阶段没有需求,你可以把相关的脚本留空。 |
源代码注释
为了帮助你记住你的脚本的功能,我们建议在你的脚本中使用注释:
// Now sleep for 5 seconds
sleep(5)
// Start the stopwatch layer:
layerOn(7C4665C4-0E17-4F63-BCFF-B59D68D75956)
!注释需要在一个单独的行中,并且//需要在该行的开头。
脚本命令
脚本语言是专有的,只有一个视图命令。
layerOn(API 图层ID)
这个命令可以让你切换一个图层或一个图层的变体。
// switching on a layer by its id
layerOn(234674-se5634-2w435456)
// 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/68F63C8F-2376-4CA3-9764-CC17CBFC5F8D)
// switching on a layer with a defined variable
setVariable($myLayerID, "234674-se5634-2w435456")
layerOn($myLayerID)
层关闭(API 图层ID)
这条命令可以让你关闭一个图层或一个图层的变体。这个命令可以让你关闭一个图层或一个图层的变体。
// switching off a layer by its id
layerOff(234674-se5634-2w435456)
// 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/68F63C8F-2376-4CA3-9764-CC17CBFC5F8D)
// switching off a layer with a defined variable
setVariable($myLayerID, "234674-se5634-2w435456")
layerOff($myLayerID)
层设置调用(API 层集ID)
这条命令可以用来触发对某一领域的召回。 图层组.
// 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 输出目的地ID)
使用这条命令可以打开一个输出目的地。
outputOff(API 输出目的地ID)
使用这条命令可以关闭一个输出目的地。
睡眠(秒钟)
sleep()命令将暂停脚本的计算,暂停时间为给定的几秒钟。
// pause the script computation for 12 seconds
sleep(12)
// pause the script computation for 35.6 seconds
sleep(35.6)
// pause the script computation for a time interval specified by a variable
setVariable($mySleepInterval, 17)
sleep($mySleepInterval)
sleepUntil(HH:MM:SS (24h))
sleepUntil()命令将让脚本暂停,直到达到指定的时间。如果时间已经过去,脚本将等待到第二天。
// 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)1|2|3|4|5|6|10|12|15|20|30|60|90|120 …)
这个脚本命令将暂停脚本,直到下一次 "按分钟 "的摩擦将达到一小时。
// 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, value)
要定义一个本地变量,请使用setVariable命令。你需要指定一个变量名(带$后缀)和这个变量应该有的值。这个值可以是一个数字、一个文本(带引号)或者布尔值 "true "和 "false"。你可以在其他命令的每个字段中使用该变量。
setVariable($myText, "This is a text")
setVariable($myNumber, 15.73)
setVariable($myBoolValue, false)
setGlobal($variableName, value)
一个全局变量可以用于当前层,也可以用于该层以上的所有自动化层。如果你想在所有的自动化层中拥有相同的信息,这是非常有用的(如 API 某一图层的ID)。对于变量的值,与setVariable命令中描述的相同。
请注意,一个全局变量对其他自动化层有效,只要该层本身是活的。这样你就可以通过切换到具有不同全局变量定义的不同层来切换全局变量。
setGlobal($myGlobalText, "This is a text")
setGlobal($myGlobalNumber, 15.73)
setGlobal($myGlobalBoolValue, false)
ifLayerIsOn() - ifLayerIsOff() [else] endif
这些if语句是在测试某个层当前是否是活的,如果是,则处理以下命令。否则,下面的命令将被跳过,直到找到else或endif。
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() - ifLayerSetIsInactive() [else] endif
这些if语句是测试是否有某个 层套 如果是的话,将处理以下命令。否则将跳过下面的命令,直到找到else或endif。
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(, , , )
这个复杂的命令让你可以在层上测试任何参数,这些参数是 HTTP API 提供。你需要通过一个层的 API ID,关键路径在 JSON 数据 HTTP API 返回,一个比较器(用引号表示为字符串!)(例如"==")和一个值。
有效的比较器值是:
"==" | 等同于 |
"!=" | 不等于 |
">" | 大于 |
"<" | 不到 |
">=" | 大于或等于 |
"<=" | 低于或等于 |
// 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
循环() [break] endloop
循环命令让你多次执行某段代码。如果你不指定迭代次数,那么循环将无休止地运行。break命令可以让你随时跳出循环。endloop需要在需要循环的命令块的结尾处使用。
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()
httpRequest()给了你很大的灵活性,可以用这个脚本触发什么。甚至在其他文件或远程脚本中也是如此。请阅读 HTTP API 所有的文件 API 呼叫可能。
数据类型
API 端点
该参数应该是一个 API 你可以为一个图层、一个图层变体或一个图层集设置一个端点,以获得那些 API 通过右击mimoLive文件中的对象,可以看到Endpoints。一个上下文菜单会出现 "复制 API 端点 "菜单项。
这将复制 API 这个对象到过去板块的端点。如果你把它粘贴到某个地方,它将看起来像这样:
/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
你可以减少 API 只对最后一部分进行端点。这将使你的脚本更短,如图所示:
// 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)
该参数表示一个24小时的时间。小时、分钟和秒以": "为界。
脚本创意
每10分钟运行一个广告
与""结合起来。PIP 窗口 "层有一个 "媒体播放列表源",其中包含多个简短的广告影片剪辑,你可以每10分钟播放一个广告。请确保取消勾选媒体播放列表源中的 "不间断 "选项。这样,每次 PIP 窗口被设置为实时,它将从播放列表源中播放一个广告,并自行关闭。10分钟后,下一个广告将被播放。
在切换到某一层之前运行一个刺针
你需要准备一个简短的刺痛视频,它将有一个内转换,直到它覆盖所有的屏幕(例如1秒后)。1秒后,你要切换到你想显示的层。把这个层放在播放激振视频的层下面。现在激振视频已经覆盖了屏幕,下面的层的切换就看不到了。激振视频应该继续播放,并显示下面的层。请确保激振视频是以ProRes4444视频编解码器渲染的,这样它就具有了过渡所需的透明度。
创建一个复杂的节目开场
因为你可以在较长的时间内一个接一个地开关图层,你可以有多个文本或注释图层,显示图形的Placer图层,甚至是充满屏幕的下三层,来制作你自己的动画节目开场。发挥创意吧!
触发一个远程 HTTP URL 通过轻击遥控器表面来实现。
如果你需要触发一个 HTTP 通过在你的网站上的一个按钮要求 遥控表面 你可以在你的图层堆栈中添加一个自动化图层,并将该图层的 "关闭图层 "选项设置为 "自动"。现在你可以在 "On Live "脚本字段中输入一个httpRequest()命令。在你的远程控制表面上,把这个图层的Live按钮添加到布局中。一旦你在你的远程控制表面上按下这个按钮,那么 HTTP 请求将被执行。