ミモライブのオートメーション・レイヤーで生産を合理化する
現在、以下のプレースホルダコンテンツをご覧になっています。 ユーチューブ.実際のコンテンツにアクセスするには、下のボタンをクリックしてください。その際、第三者のプロバイダーとデータを共有することになりますのでご注意ください。
詳細情報mimoLive オートメーションレイヤーは、当初は概念実証として開発されましたが、その後、ユーザーにとって非常に便利なツールであることが証明されました。このレイヤーは、レイヤーのオンとオフを特定の順序または所定の時間に自動化したり、あるレイヤーから別のレイヤーに情報を転送したり、Output Destinationsを開始および停止したりするために使用できます!
特に、複数のレイヤーやインプットを持つ複雑なプロダクションを作成する際に、手動でのスイッチングやタイミングが不要になるため便利です。このレイヤーを使用すると、ユーザーは魅力的なコンテンツの作成に集中することができ、その間にソフトウェアがプロダクションのタイミングとシーケンスを処理します。このレイヤーのバージョン2では、コマンドを拡張し、mimoLiveのオートメーションをまったく新しいレベルに引き上げました。
例オートメーション層

mimoLiveの自動化スクリプトがリアルタイムで実行されません
mimoLiveのオートメーションスクリプトのタイミングは、ビデオレンダリングエンジンによって呼び出されるHTTPリクエストの非同期性のため、正確ではない可能性があることに注意してください。これらのスクリプトは、APIへのHTTPリクエストに依存しており、これらのリクエストの長さを正確に決定することができないため、タイミングがずれる可能性があります。制作ワークフローで自動化スクリプトを使用する場合は、この点にご留意ください。
前提条件
このレイヤーを機能させるためには、次のスイッチをオンにする必要がある。 HTTP mimoLiveのサーバーでリモートコントロールを有効にする エーピーアイ.次のページへ ミモライブ -> 好み -> リモコン:リモートコントロールアクセスを許可 "オプションにチェックを入れてください。(現在、mimoLiveのオートメーションレイヤーはパスワードなしでは動作しません。)

オートメーション・レイヤーの設定
ライブに切り替わった後のレイヤーの動作には2つのオプションがある:
オプション | 振る舞い |
---|---|
レイヤーの自動オフ | このオプションで使用できるスクリプトは1つだけである。このスクリプトが処理されると、レイヤーは自動的に切り替わる。このオプションは、シーケンスが一度しか実行されない場合に使用できる。 |
手動でレイヤーをオフにする(例:オペレーターによる) | この場合、3つのスクリプトが利用できる。レイヤーがライブに切り替わると、"On Live "スクリプトが処理される。これが完了すると、"While Live "スクリプトが無限ループで処理される。レイヤーがオフになると、"Turned Off "スクリプトが処理される。 特定のフェーズを必要としない場合は、関連するスクリプトを空にしておくことができる。 |
ソースコード コメント
スクリプトの機能を覚えやすくするために、スクリプトにコメントを付けることをお勧めします:
// First sleep for 5 seconds...
sleep(5)
// ...then start the stopwatch layer:
layerOn("7C4665C4-0E17-4F63-BCFF-B59D68D75956")
コメントは別の行に書く必要があります。
スクリプト・コマンド
スクリプト言語は独自のもので、いくつかのコマンドが含まれています。これらのコマンドは、右側のレイヤープレビューにあるチートシートにリストアップされています。一覧表は少し小さくて読みにくいかもしれませんので、 プレビューエリアの上と右にあるボタンでプレビューを拡大できます。
layerOn()
このコマンドはレイヤーまたはレイヤーの変形をオンにします。
// 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)
レイヤーオフ(<エーピーアイ レイヤーIDを文字列で表す式)
このコマンドはレイヤーまたはレイヤーバリアントをオフにします。
// 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 層 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)
出力オン(<文字列式としてのAPI出力先ID>)
出力先をオンにするには、このコマンドを使用する。
//出力先をidで指定
を開始します。
outputOn("1953186E-4176-4849-A8ED-5B47EE1627BD")
//長いAPIエンドポイントURLで出力先を開始
</code
outputOn("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")
//定義された変数で出力先を開始します
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOn($myOutputDestinationtID)
outputOn($myOutputDestinationtID)
出力オフ(<文字列式としてのAPI出力先ID>)
出力先をオフにするには、このコマンドを使用する。
//出力先をidで止める
</code
outputOff("1953186E-4176-4849-A8ED-5B47EE1627BD")
//長いAPIエンドポイントURLで出力先を止める
</code
outputOff("/api/v1/documents/1677022440/output-destinations/1953186E-4176-4849-A8ED-5B47EE1627BD")
//定義された変数で出力先を停止します
setVariable($myOutputDestinationtID, "1953186E-4176-4849-A8ED-5B47EE1627BD")
outputOff($myOutputDestinationtID)
OutputOff($myOutputDestinationtID)
ゲットレイヤーデータ($resultVariableName, ).
このコマンドは、複数のコマンドを1つのスクリプトステップにまとめます:HTTPサーバーからレイヤー情報を読み込み、JSONレスポンスから特定のデータフィールドを変数に格納します。読み込みたい値の正確なパスが必要です。レイヤーの入力パラメータの場合、このパスは通常 "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
名前によるオブジェクトIDの取得($resultVariableName
このコマンドは、特定の mimoLive オブジェクトの API エンドポイントを表示名で取得します。表示名は mimoLive ユーザーインターフェースの mimoLive オペレーターによって簡単に変更できるため、特定のオブジェクトを見つけられなくなった場合、オートメーションスクリプトが壊れてしまうことに注意してください。
有効な
// Get the API Endpoint for the Basketball Score layer
getObjectIDByName($myBasketballScoreLayerID, "layer", "My Basketball Score Keeper")
// switch this layer on
layerOn($myBasketballScoreLayerID)

sleep(<秒> 数として)
sleep()コマンドは、秒単位で指定した時間だけスクリプトの実行を一時停止します。
// 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(<文字列式としての時間>)
sleepUntil() コマンドを使用すると、指定した時間に達するまでスクリプトを一時停止できます。すでに時間が経過している場合、スクリプトは翌日まで待機します。時刻の形式は、24 時間単位の HH:MM または 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()
このスクリプトコマンドは、次の「分単位」に達するまでスクリプトを一時停止します。
// 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, <値>)
ローカル変数を定義するには、setVariable
コマンドを使います。変数名($
で始まる)と、この変数が保持すべき値を指定する必要があります。値は、数値、テキスト(引用符で囲む)、ブーリアン値 true
と false
のいずれかです。
setVariable($myText, "This is a text")
setVariable($myNumber, 15.73)
setVariable($myBoolValue, false)
セットグローバル($variableName, <値>)
グローバル変数は、現在のレイヤーとその上のオートメーションレイヤーの両方で使用できます。この機能は、特定のレイヤーのAPIエンドポイントなど、複数のオートメーションレイヤーで同じ情報を共有する場合に特に便利です。変数の値については、setVariable
コマンドと同じルールが適用されます。
グローバル変数は、元のレイヤーがアクティブである限り、他のオートメーションレイヤーからアクセス可能であることに注意してください。この配置により、異なるグローバル変数定義の異なるレイヤーをアクティ ブにしてグローバル変数を切り替えることができます。このシナリオのベストプラクティスは、オートメーションレイヤーの 'Switch Layer Off' オプションを 'Manually' に設定し、'On Live' スクリプトでグローバルを定義することです。
setGlobal($myGlobalText, "This is a text")
setGlobal($myGlobalNumber, 15.73)
setGlobal($myGlobalBoolValue, false)
concat($resultVariableName, )
このスクリプトコマンドは文字列を連結し、結果を文字列として保存します。
// 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($resultVariableName, )
このコマンドは、加算(+)、減算(-)、乗算(*)、除算(/)を含む簡単な数学計算を実行します。計算は表示された順番に実行され、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
このif
文は、指定されたコンパレータを使用して2つの数値式を比較します。比較が真の場合、次のコマンドが実行されます。そうでなければ、else
またはendif
に達するまで、後続のコマンドはスキップされます。
有効な比較対象は
“==” | イコール |
“!=” | ノットイコール |
">" | より大きい |
"<" | 未満 |
">=" | 以上 |
"<=" | 以下 |
// 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
このifString
文は、指定されたコンパレータを使用して2つの文字列式を比較します。比較は文字列の各文字のASCII文字コードに基づいて行われます。比較が真の場合、次のコマンドが実行されます。そうでない場合は、else
またはendif
に達するまで、後続のコマンドはスキップされます。
有効なコンパレータについては、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(<エーピーアイ レイヤーIDを文字列で表す式) - ifLayerIsOff(<エーピーアイ レイヤーIDを文字列で表す式) [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()<エーピーアイ レイヤーIDを文字列で表す式) - ifLayerSetIsInactive()<エーピーアイ レイヤーIDを文字列で表す式) [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(, , , )[else] endif
この複雑なコマンドは HTTP エーピーアイ を提供します。レイヤーを指定するには、API ID、HTTP API から返される JSON データ内のキーパス、比較対象 (引用符で囲まれた文字列で指定します。=="
)、そして値。
有効なコンパレータ値は以下の通り:
“==” | イコール |
“!=” | ノットイコール |
">" | より大きい |
"<" | 未満 |
">=" | 以上 |
"<=" | 以下 |
// 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
loop
コマンドを使うと、コードを複数回実行することができます。繰り返し回数を指定しなければ、ループは無期限に実行されます。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()
コマンドは指定された URL をトリガーします。このため、このスクリプトコマンドの使い方は非常に柔軟です。で ミモライブ
また、他のドキュメントやリモートスクリプトのアクションをトリガーすることもできます。詳しくは ミモライブ
HTTP APIコマンドについては HTTP エーピーアイ ドキュメントを参照して、すべてのAPIコールを調べてください。
//レイヤーを切り替える
httpRequest("http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive")
。
httpRequestJSON($resultVariableName, )
このコマンドはHTTPコールのレスポンスをJSONとして読み込み、指定したresult変数にデータを格納します。この後、getJSONData()
コマンドでデータにアクセスできます。
getJSONData($resultVariableName, $jsonDataVariable, )
このコマンドは、変数に格納されたJSON構造体から特定のデータ値を取得します。JSONデータを含む変数($jsonDataVariable
)、JSON構造内のデータへのパス()、結果を格納する変数(
$resultVariableName
)を指定する必要があります。これにより、さらなる処理やスクリプトでの使用のためにデータを正確に抽出することができます。
// レイヤーの全データを取得します
httpRequestJSON($myLayerData, "http://127.0.0.1:8989/api/v1/documents/188462841/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B")
// ボリュームダイヤルの値を取得します
getJSONData($volumenDial, $myLayerData, "data.attributes.volume")// 今、$volumenDial変数は0から1の間の値を保持します
。
> デバッガブレークポイント
スクリプトデバッガが有効で、デバッグモードが'Continuously'に設定されている場合、スクリプトの実行はこのマーカーで一時停止し、mimoLiveオペレーターが'Next Step'ボタンをクリックするまで待機します。デバッグの可能性の詳細については、「ベストプラクティス - スクリプトのデバッグ」を参照してください。
データタイプ
エーピーアイ エンドポイント
パラメーターはレイヤー、レイヤーバリアント、レイヤーセット、ソース、出力先の API エンドポイントでなければなりません。これらの API エンドポイントは、mimoLive ドキュメント内のオブジェクトを右クリックすることで取得できます。APIエンドポイントをクリップボードにコピー」メニューのあるコンテキストメニューが表示されるはずです。
このアクションは、このオブジェクトのAPI Endpointをクリップボードにコピーします。これを別の場所に貼り付けると、次のようになります:
/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/v1/documents//layers/"を削除することで、重要な部分のみにエンドポイントを設定します。こうすることで、スクリプトはこのように短くなります:
// 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")
ベストプラクティス
APIエンドポイント
APIエンドポイントの取得方法
- レイヤーを右クリックし、"APIエンドポイントのコピー "を選択します。
- getAPIEndpoint() コマンドを使用します (ドキュメントを参照)。
APIエンドポイントへの対応
完全なAPIエンドポイントを使用するか、"/api/v1/documents//"の部分を削除して、スクリプトが別のドキュメントにコピーされても動作するようにすることができます。しかし、異なるmimoLiveドキュメントのAPIポイントに対応したい場合、ドキュメントIDは重要です。
スクリプトのデバッグ
オートメーションレイヤーにはスクリプトデバッガーが組み込まれています。レイヤーのパラメータ "Debug "をオンに設定することで、レイヤーをデバッグモードに切り替えることができます。
未定。
スクリプトのアイデア
10分ごとに広告を出す
と組み合わせる。ピップ ウィンドウ "レイヤーに複数の短い広告ムービークリップを含む "メディアプレイリストソース "を設定すると、10分ごとに1つの広告を再生することができます。メディア・プレイリスト・ソースの "ノンストップ "オプションのチェックを外してください。こうすることで ピップ ウィンドウがライブに設定されると、プレイリスト・ソースから1つの広告が再生され、自動的にオフになります。10分後、次の広告が再生されます。
特定のレイヤーに切り替える前にスティンガーを走らせる。
画面全体を覆うまで(例えば1秒後)イン・トランジションする短いスティンガー映像を用意する必要がある。1秒後に、公開したいレイヤーをライブに切り替えます。このレイヤーを、スティンガー映像を再生しているレイヤーの下に配置します。これで、スティンガー映像が画面を覆い尽くし、下のレイヤーの切り替えは見えなくなります。スティンガービデオは、下のレイヤーを見せながら進むはずです。スティンガービデオがProRes4444ビデオコーデックでレンダリングされ、トランジションに必要な透明度が保たれていることを確認してください。
複雑なショーのオープニングを作る
レイヤーのオン・オフを長い期間にわたって次々と切り替えることができるので、複数のテキストや注釈レイヤー、グラフィックを表示するプレーサーレイヤー、あるいは画面いっぱいのローワーサードレイヤーを使って、自分だけのアニメーションのショー・オープニングを作ることができます。クリエイティブに!
リモートのトリガー HTTP URL リモコン表面をタップする
もし HTTP ボタンでリクエスト リモートコントロール面 レイヤースタックにオートメーションレイヤーを追加し、そのレイヤーの "Switch Layer Off "オプションを "Automatically "に設定します。これで、"On Live "スクリプト・フィールドにhttpRequest()コマンドを1つ入れることができます。リモコンサーフェスで、このレイヤーのライブボタンをレイアウトに追加します。リモコンサーフェスでこのボタンを押すと HTTP リクエストが実行される。