[obsidian] vault backup: 2024-08-02 20:32:57
Some checks failed
Build / build (push) Has been cancelled

This commit is contained in:
松浦 知也 Matsuura Tomoya 2024-08-02 20:32:57 +09:00
parent d76457ae2c
commit bc1bdc3110
4 changed files with 31 additions and 2 deletions

View File

@ -35,7 +35,7 @@ date: 2024-08-02 16:50
プレイヤーに読み込ませるSDカードを用意する。 プレイヤーに読み込ませるSDカードを用意する。
BA:Connectedを立ち上げ”Player Setup”を選択。IPアドレスを192.168.1.2に設定。デフォルトゲートウェイとDNSは、ルーターが接続されてるならそのアドレスを、なければ適当にホストのPCと同じにしておく。 BA:Connectedを立ち上げ”Player Setup”を選択。IPアドレスを192.168.1.2に設定BSを2台以上使うなら1.3,1.4,,,と増やしていく)。デフォルトゲートウェイとDNSは、ルーターが接続されてるならそのアドレスを、なければ適当にホストのPCと同じにしておく。
![[img/スクリーンショット 2024-08-02 19.07.22.png]] ![[img/スクリーンショット 2024-08-02 19.07.22.png]]
またここで、Publishing ModeをLocal Networkにしておくと、動画ファイルの更新をSDカードの差し替えではなくLAN経由でSDカードに書き込める。4k動画とかだとギガビットイーサネットでは速度が遅くなるかもしれないが、動画のファイルの差し替えをしない限り設定の更新のアップロードは一瞬で終わるので便利 またここで、Publishing ModeをLocal Networkにしておくと、動画ファイルの更新をSDカードの差し替えではなくLAN経由でSDカードに書き込める。4k動画とかだとギガビットイーサネットでは速度が遅くなるかもしれないが、動画のファイルの差し替えをしない限り設定の更新のアップロードは一瞬で終わるので便利
@ -68,5 +68,34 @@ Presentation SettingのInteractiveという項のNetworkingで、UDPという項
有効化するとこんな見た目になる。 有効化するとこんな見た目になる。
上のEvents一覧を真ん中あたりまでスクロールすると、UDPという項目があるので、これを一度クリックして選択状態にする。 上のEvents一覧を真ん中あたりまでスクロールすると、UDPという項目があるので、これを一度クリックして選択状態にする。
![[img/スクリーンショット 2024-08-02 20.04.18.png]] ![[img/スクリーンショット 2024-08-02 20.04.18.png]]
この状態で動画下側のファイル名が表示されてるあたりをクリックすると、UDPイベントが紐づけられる。 この状態で動画下側のファイル名が表示されてるあたりをクリックすると、UDPイベントが紐づけられる。これだといかにも動画再生をトリガーにUDPを送信するみたいな見た目をしているが、実際にはUDPの受信イベントもここで制御する。右側のEvent Propertiesで、Specify UDP inputに対して`position:<any>`と記述する。Labelも同時に記入されるが、ここは気にしなくていいまた、ここでAssign input to variableにチェックを入れる。こうすることで、例えば”position:1000”というUDPメッセージが送られてくると、先ほど作ったpositionというUser Variableが1000に更新されるようになる。
![[img/スクリーンショット 2024-08-02 20.07.15.png]]
## UDPイベントからプラグインを発火させる
最後に、Event Propertiesの一番下のAdvancedを開く。Commandsで+をクリックしてイベントと同時に起動するコマンドを作る。Commandは"Send"、”Command Parameters”はSend plugin messages、送り先はcustom(これしか選べないはず)にする。
最後のPlugin messageの内容だが、`seek!{{position}}`とする。`{{variable}}`でPresentation内のUser Variableを埋め込むことができるが、これはBA:Connectedの仕様で、普通のBrightAuthorの場合は`$$variable$$`で埋め込む必要がある。
今回は一つしか動画を使ってないが、`seek!(zoneの名前)!{{position}}`のようにすれば、2つの再生動画の位置をそれぞれ変更するようなこともできる。
![[img/スクリーンショット 2024-08-02 20.10.37.png]]
これで、真ん中右上のセーブアイコンをクリックしてプロジェクトを保存したら、その右のPublishボタンをクリックしてBrightSignに転送する。
BrightSignにSDカードを入れて、LANケーブルをPCと接続して起動する。SDカードに書き込んでから初回の起動は少し時間がかかる。
BAConnected上で転送タイプをLocal Networkにし、Networked Playersのをクリックして、転送先に先ほど指定したIPアドレス192.168.1.2を指定すると、Publishできるようになる。Publishできたら即座にBrightSignは再起動して、普通に動画のループ再生が始まる。
## MaxからLAN越しにシークしてみる
Maxでは、udpsendオブジェクトで指定したIPの5000番ポート標準に、`position:2000`みたいなメッセージを送れば良い。数値はミリ秒単位で整数。jit.movieで同じ動画ファイルを読み込ませて、シークバーっぽいインターフェースで同じフレームへジャンプできるパッチをこんな感じで作った。
![[img/スクリーンショット 2024-08-02 20.25.24.png]]
`jit.movie~``jit.movie`や`jit.qt.movie`ではない方)を使用する。このオブジェクトは非常に奇妙な仕様なので、動画の再生状態を全てアトリビュート経由で取得しなければならない。写真のパッチでは動画の長さと再生位置を`getattr`オブジェクトで取得している。
注意点としては以下の通り。
- シークするたびにそのフレームにジャンプしているが、シークして以後は特段同期しておらず各々フリーラン状態
- そもそもUDPでのシンクはフレーム単位で同期してるわけではない。フレームレベルでの同期が必要ならBrightWall使うのが無難
- 自動ループする時、BrightSignのほうが若干ラグがあってからループする。そのため、実際には`jit.movie~`が自動ループしたタイミングでudp信号を送るのが良い。
- 内部がどういう仕組みかわからないが、UDPのメッセージのキューは割と簡単に詰まる。シークバーをぐりぐり動かすみたいな使い方はできない。

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB