DeviceHub Pro

● VR 頭顯管理系統 · v0.3.8

開演前十五分鐘,你不該還在一台一台戴上頭顯確認。

DeviceHub Pro 是為多人走動 VR 展演而做的 Meta Quest 頭顯管理系統。批次連線、OSC 訊號分流、開演前逐項檢查,演出中同時看到每一台頭顯的畫面。作品巡演出去之後,權利還握在你手上。

預約 Demo 看技術規格

01 現場的難題

現場沒有「等一下再修」

頭顯會被觀眾摘下、退回主選單、掉 Wi-Fi,也會在你看不到的地方沒電。換場只有三分鐘。

情境:12 台頭顯,換場 3 分鐘

逐台確認吃掉整個換場

12 台逐台確認約需 10 分鐘,換場只有 3 分鐘。

每台戴上、看場景、摘下,約 50 秒。換場結束的時候,你手上是第 4 台,還有 8 台沒看。

演出中沒有人知道哪一台掉了

觀眾按到 Home 鍵、應用當掉、電量歸零。在有人舉手之前,控台上看不到任何跡象。

兩場同時開,訊號互相打架

同一個場地兩組觀眾、兩套流程,OSC 訊號走同一個埠。A 場的換場指令把 B 場一起換掉。

換一版就要重來一遍

新版 APK 進來,就一台一台接線側載。12 台是 12 次插線、12 次拔線。

02 一場演出

一場演出,從開演前十五分鐘算起。

12 台頭顯,兩場同時開:大群 A、B 各 6 台。以下照時間順序,看 DeviceHub 在每個時間點做了什麼。

  1. T−15:00

    插上線,它自己轉 Wi-Fi

    USB 一插上,DeviceHub 就把頭顯切到 Wi-Fi:adb tcpip 5555、讀 wlan0 的位址、連線。拔掉線,它已經在清單上。之後每 3 秒讀一次每台的狀態,最多 8 台同時讀。

    12 台讀完一輪 1.6 秒;一台接一台讀要 8.7 秒(程式註解內的實測)

  2. T−10:00

    分群,驗證房間

    每台頭顯分進大群、小群、編號。每個大群填 Photon 房名、密碼、region,按「驗證房間」交給 XRPR,通過後版本號加 1。頭顯下次來拉設定就拿到新版,並回傳 /show_assignment_ack。

    房間密碼留在 DeviceHub,頭顯收到的是房名、region 和版本號。頭顯拿到名稱與小群前每 3 秒來拉一次,之後每 60 秒。

  3. T−05:00

    能不能開演,看一頁

    演出狀態頁每個大群一張卡:房間 · region · 驗證版本、OSC 進 → 出、頭顯/已確認/在線台數,每台一個 ✓ 或 ⚠。分到這個大群的頭顯全部確認收到,卡片才顯示「可開演」。

    ⚠ 代表這台還沒回報收到 rev.3

  4. T−01:00

    在監控頁按「全體啟動」

    v0.3.8 把批次列搬到監控頁:刷新列表、全體啟動、全體關閉。全體啟動送出指令就結束,不等回覆;結果看狀態格,接下來幾次讀取,方塊一格一格轉綠。

    綠方塊:前景是 ShowApp。紅方塊:不是。

  5. T 00:00

    開演:A 的 cue 只到 A

    每個大群有自己的 OSC 收訊埠。從 9002 進來的 cue 只轉給大群 A 的 6 台,9003 進來的只給 B。DeviceHub 先轉發,封包送出之後才寫這一行 log。

    A:9002 進 → 9200 出 · B:9003 進 → 9201 出

  6. T+12:00

    電視牆:哪一台不一樣

    按「開始」,每台在線頭顯的畫面排上同一面牆:scrcpy,每格 480 px、10 fps,最多 16 格。V-10 停在載入畫面,狀態格上它還是綠的。點那一格,開它的即時預覽,15 fps。

    只看不控:scrcpy 不送任何輸入,也不會喚醒休眠的頭顯

  7. T+18:00

    V-07 跑出了 ShowApp

    連續兩次讀到 V-07 不在 ShowApp,右下角跳出通知。大群 B 開著「自動拉回」,DeviceHub 就把它拉回來,同一台 30 秒內不再拉第二次。

    觀眾瞄一眼系統選單、只被讀到一次:不通知,也不拉回

  8. T+45:00

    散場:結束演出並鎖定

    按「結束演出並鎖定」,DeviceHub 結束這次授權並關閉,電視牆、預覽、OSC 接收埠一起收掉。下次開啟,要重新通過 XRPR 驗證。

    授權只在啟動時驗證,演出中途不會被鎖

介面示意,資料皆為示範值。

03 多場並行

同一個場地,兩場演出,訊號不會走錯。

每一場演出是一個大群,各有一組 OSC 進出埠。控制軟體打進 9002,只有大群 A 的頭顯會動。

點一個埠,送出一個 cue。

關掉,看全部頭顯共用一個埠的樣子

控制軟體送到

DeviceHub 監聽

DeviceHub Pro

頭顯從這個埠收到

  • A9200
  • B9201
  • C9202
  • D9203
  • 未分大群9999

等待 cue。

示意動畫。埠號是全新安裝的預設值。

預設埠號
通道進:DeviceHub 收出:頭顯收
全體9001每台所屬大群的出埠;沒有大群的頭顯走 9999
A90029200
B90039201
C90049202
D90059203
新增的大群 E90069204 · 自動取下一組空的埠
照轉
除了 /request_info 與 /hub_discovery,其他 OSC 位址全部轉發。
先轉發,後記錄
封包送出之後才寫 log。轉發路徑上沒有 ADB 呼叫。
儲存時檢查
埠號限 1024–65535;兩個啟用中的大群不能用同一個埠。

04 開演前檢查

「應該都好了」不是一個狀態。

演出狀態頁給每個大群一張卡:房間驗證到第幾版、OSC 進出埠、幾台頭顯回報收到編制。✓ 是頭顯自己送回來的,不是控台猜的。

判定順序:卡在哪一步,卡片就寫哪一步

  1. 大群已啟用否則:已停用

  2. 房間名稱、密碼、國碼齊全,且通過 XRPR 驗證否則:寫出缺的那一步

  3. 至少分配一台頭顯否則:房間就緒,但還沒有頭顯

  4. 每一台都回報確認否則:房間就緒,N 台尚未確認

  5. 可開演

A · 主場演出 可開演
房間 SHOW-A · Jp · 已驗證 rev.3 OSC 進 9002 → 出 9200

頭顯 8 台 · 8 已確認 · 8 在線

小群 1 1. V-01 ✓2. V-02 ✓3. V-03 ✓4. V-04 ✓
小群 2 1. V-05 ✓2. V-06 ✓3. V-07 ✓4. V-08 ✓
介面示意,資料皆為示範值。

看未就緒的樣子

確認只算這一輪
確認存在記憶體裡。儲存設定、重新驗證房間、改分配、重開 DeviceHub,都會清空重來。卡上的 ✓ 一定是這一輪回報的;⚠ 就是還沒回報的那一台,你知道要走去找誰。
它不看的兩件事
可開演不檢查埠,也不要求頭顯此刻在線。在線數另外列在卡片上,由你判讀。

05 監控

節目送出去的,和每一位觀眾看到的。

監控頁左半邊是 Unity 送出的畫面,右半邊是每一台頭顯的即時畫面。卡在載入、掉回大廳或整片黑的那一台,在牆上一眼就認得出來;點那一格,它的畫面就開在 Unity 畫面旁邊對照。

可以操作:點牆上任一格開預覽、按「全體截圖」、在下方切換 Unity 狀態列。

介面示意 · 資料為示範值

監控 頭顯 11 台 · 11 在線 · 11 在目標程序 目前音量:40%~70%(11 台)
Unity 畫面 接收中 · 1920x1080 · 15 fps

選好來源後按「連線畫面」,這裡會顯示 Unity 正在輸出的畫面。

頭顯電視牆 11/11 路

Unity 畫面:狀態列分得出三件事

NDI 收得到同一網路上任何一台電腦的畫面;Spout 只收同一台電腦,只有 Windows 版有。低頻寬預設開啟,NDI 改送代理串流。預設 15 fps、寬 960 px,只能在 config.json 改。畫面不會自動連線,要按「連線畫面」。

頭顯電視牆:找出不一樣的那一台

牆上 11/11 路全綠,每一台都在目標程序,V-07 卻卡在載入畫面。狀態格看不出這件事,畫面看得出來。

10 fps
每格預設,480 px 寬
1.5 Mbps
每格的位元率設定。11 格相加 16.5 Mbps,是設定值,不是量到的流量。
0.7 核 實測
11 台同時上牆的 CPU 用量,i9-12900HK
16 格
一面牆的上限

牆一律走 scrcpy,要按「開始」才會開,不會自己開。掉線的格子會寫出原因,不會停在最後一張畫面。

全體截圖:按一下,每台一張

向每一台在線頭顯各要一張畫面,存成 captures\日期-時間\名稱.jpg,結果排成一片,失敗的排最前面。每張是單眼、16:9、1280×720。

scrcpy 只看不控:不開控制通道,不會喚醒休眠中的頭顯,頭顯上的 APK 也不用更新。

實測 · 11 台 Quest 3 · Wi-Fi

全體截圖,11 台

scrcpy 1.8 s 中位數,範圍 1.2–2.3 s
ADB 截圖 9.9 s

單台預覽 下方每一條直線是一張畫面,範圍是 6.5 秒。

scrcpy 15 fps
ADB 截圖 0.15 fps 一張 6.5 s

06 連線與復原

USB 插一次,線就可以拔了。

DeviceHub 透過 ADB 管頭顯。USB 接上的頭顯自動改走 Wi-Fi;整場斷線時從 IP 歷史重連;拿到新的 IP,名稱、編號、大群照舊。

USB 接上,自動轉 Wi-Fi

預設開啟。DeviceHub 對 USB 頭顯下 tcpip 5555,等 2 秒,讀 wlan0 的 IP,再從 Wi-Fi 連上。已經在 Wi-Fi 上的同一台會跳過。

  1. adb tcpip 5555
  2. 等 2 秒
  3. 讀 wlan0 IP
  4. adb connect …:5555

整場掉線,從 IP 歷史重連

在線台數從 1 台以上掉到 0 的那一輪,DeviceHub 依最近連線時間,對每個歷史 IP 下 adb connect。掉到 0 一次,只觸發一次;啟動時也跑一次。單台掉線不會觸發。

換了 IP,還是同一台

頭顯身分依序比對:序號 → UUID → IP 歷史。讀得到序號或 UUID,IP 就不影響身分。DHCP 換了租約,名稱、編號、大群都留著。

PC 主機也在名單上

跑 QuestCenter 的電腦以 HOST-<機器 ID>#<1–8> 識別:一台電腦最多 8 份,埠 7908–7915。它每 60 秒回報一次,90 秒沒有訊息就標成離線。IP 變了,分組不變。

DeviceHub 重開後,主機要等下一次回報才轉回在線,最多約 60 秒。

圖為示意,位址與序號皆為示範值。

07 頭顯編制

大群、小群、編號——現場講得出口的那套。

一台頭顯同時只屬於一個大群。小群是它在這場演出裡的角色,編號是你在對講機裡喊的那個號碼。

頭顯管理點一台頭顯,在「設備設定」選大群和小群,再按「儲存設定」。ID 留白,就取該小群最小的空號。

AA · 演出 AOSC 9002 → 9200

小群 1

小群 2

小群 3

    小群 4

      BB · 演出 BOSC 9003 → 9201

      小群 1

      小群 2

        小群 3

          小群 4

            未分組

            設備設定

            序號: DEMO0000A005

            介面示意,資料皆為示範值。App 裡沒有拖曳,分組都在每台頭顯的「編輯設定」對話框裡完成。

            01

            大群

            一場正在跑的演出:一個 Photon 房間、一組 OSC 進出埠,和這場的頭顯。預設 A–D 四個,可以再新增。

            02

            小群

            大群裡的角色分組。每個大群預設 4 個;新增時指定名稱與顏色,不用的可以刪。

            03

            編號 ID

            頭顯在小群裡的號碼,小群內不重複。新分配的頭顯取最小的空號:1、2、4 有人,下一台就是 3。

            PC

            PC 主機也能編進大群

            v0.3.4 起,PC 主機可以加入大群,收到該群的演出 OSC。音量、APK 安裝、截圖、電視牆只對頭顯有效。

            08 批次維運

            勾好要裝的頭顯,按一次,逐台裝完。

            安裝軟體頁只列出在線的 Android 頭顯,PC 主機不在名單上。一開始全部勾選;取消勾選的頭顯不會被裝到。

            一台接一台,每台都有結果

            DeviceHub 對勾選的頭顯逐台執行 adb install -r,不平行,每台最多等 120 秒。紀錄逐台寫出成功,或失敗與原因,最後統計成功與失敗台數。

            清單更新時新上線的頭顯,只有在原本全選時才會自動勾上。你取消過任何一台,新來的就不會自己加進目標。

            簽章衝突時,先移除舊版

            新 APK 的簽章和頭顯上的舊版不同時,DeviceHub 自動 adb uninstall 舊版再重裝,不會先問你。移除會清掉該 App 在那台頭顯上的所有資料。

            D:/Builds/show-build-1.4.2.apk
            已選擇 7 / 7 台
            • A · 1192.168.10.101:5555
            • A · 1192.168.10.102:5555
            • A · 1192.168.10.103:5555
            • A · 1192.168.10.104:5555
            • A · 2192.168.10.105:5555
            • A · 2192.168.10.106:5555
            • 未分組192.168.10.107:5555

            安裝完成 - 成功: 6 台, 失敗: 1 台

            [20:14:02] ===== 開始安裝 =====
            [20:14:02] APK: show-build-1.4.2.apk
            [20:14:02] 選定裝置: 7 / 7 台
            [20:14:02] 
            [20:14:02] [1/7] 正在安裝到 V-01...
            [20:14:09] ✓ V-01 安裝成功
            [20:14:09] [2/7] 正在安裝到 V-02...
            [20:14:16] ✓ V-02 安裝成功
            [20:14:16] [3/7] 正在安裝到 V-03...
            [20:14:19] → 偵測到簽章不相容,正在移除舊版 com.example.showapp(會清除該 App 的本機資料)...
            [20:14:21] → 舊版 com.example.showapp 已移除,正在重新安裝...
            [20:14:28] ✓ V-03 安裝成功
            [20:14:28] [4/7] 正在安裝到 V-04...
            [20:14:35] ✓ V-04 安裝成功
            [20:14:35] [5/7] 正在安裝到 V-05...
            [20:14:42] ✓ V-05 安裝成功
            [20:14:42] [6/7] 正在安裝到 V-06...
            [20:14:45] × V-06 安裝失敗: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]
            [20:14:45] [7/7] 正在安裝到 V-07...
            [20:14:52] ✓ V-07 安裝成功
            [20:14:52] 
            [20:14:52] ===== 安裝完成 =====
            [20:14:52] 成功: 6 台 | 失敗: 1 台

            介面示意,資料皆為示範值。可以先取消幾台再按「開始安裝」。

            全體啟動、全體關閉

            一鍵對所有已知裝置送出啟動或關閉指令,不等回應,也不確認結果;狀態格在接下來的讀取裡反映。v0.3.8 起,這一列也放在監控頁。

            讀完一輪,隔 3 秒再讀

            每輪讀在線、電量、音量、前景 App、App 版本、IP、序號、型號,最多 8 台同時讀。讀取時間會加在 3 秒間隔上,所以一輪讀多快,決定狀態格有多即時。

            逐台讀取8.7 s
            平行讀取(最多 8 台)1.6 s

            12 台讀一輪所需秒數+ 3 秒間隔

            程式碼註解內的實測

            09 自動拉回

            它不會因為觀眾抬個頭就重啟。

            頭顯離開演出 App,DeviceHub 可以把它拉回來。難的是判斷它是不是真的離開:Quest 的系統選單、Guardian 邊界警告會佔住前景幾秒,作品還在背後跑;ADB 有時也讀不到前景。把這些都當成離開,觀眾就會無緣無故被拉出作品。

            每格一次讀取:間隔 3 秒,加上讀取時間

            第 3 次讀到系統選單,第 4 次就回到 ShowApp。沒有連續兩次,不動作。

            模擬示意:情境與畫面皆為示範;判斷規則照 devicehub_relaunch.py。

            01

            讀不到,不算證據

            ADB 讀不到前景 App,是一次量測失敗,不是頭顯離開。計數不增加,也不歸零。頭顯離線則直接歸零:離開網路不等於離開作品。

            02

            要連續兩次才算

            預設要連續 2 次讀到不在演出 App 才算離開。讀取預設間隔 3 秒,所以大約是 6 秒加上讀取時間。在這之內回來的,不會觸發;場地需要更寬鬆,就把次數調高。

            03

            拉回之後,等 30 秒

            每台拉回後冷卻 30 秒。前一次啟動還沒生效,不會再疊一次上去。

            通知與拉回是分開的

            自動拉回關著,頭顯離開時一樣會在右下角跳出通知,6 秒後消失;回到作品也會通知一次。你可以只看通知,自己走過去處理。

            預設關閉,逐大群開啟

            每個大群在系統設定裡有自己的「自動拉回」開關,預設關閉:這一場開,隔壁那場可以不開。兩個門檻只能改 config.json,在 monitoring_settings 底下:

            "monitoring_settings": {
              "relaunch_required_misses": 2,
              "relaunch_cooldown_seconds": 30
            }

            能自動拉回的軟體不稀奇;知道什麼時候不該動的才難寫。

            10 發行控管

            你的作品,你決定誰能開、開到什麼時候。

            作品交給策展人或國外營運團隊之後,會被跑幾場、合約結束後還跑不跑,原本沒有人管得到。XRPR 是我們的專案與授權平台:DeviceHub 每次啟動都要先向它驗證,授權由你發,也由你收回。

            XRPR 四個字母有三種讀法,一種讀法是一層。工作人員只輸入一組授權房間名稱與密碼,三層在背後依序跑完。

            1. XR Passphrase Router通關密語路由

              路徑:DeviceHubPro / SHOW-A

            2. XR Permission Relay權限中繼

              有效期內 · 專案相符 · 放行

              有效至 2027-06-30

            3. XR Private Room私密領域

              房間已開啟 · SHOW-A · Jp

            驗證通過。DeviceHub 啟動 ADB、OSC 與探索;已驗證的大群把房間名稱、區碼與版本號送到頭顯。

            示意動畫,資料皆為示範值。

            XR Passphrase Router 通關密語路由

            Router 把密語當成座標讀,在所有專案與房間裡找出它對應的那一條路徑。

            在 DeviceHub 裡啟動時輸入的 DH 授權房間名稱與密碼;每個大群按「驗證房間」送出的 Photon 房間名稱與密碼。

            XR Permission Relay 權限中繼

            Relay 是閘門:向資料庫確認這組密語在有效期內、屬於哪個專案、有沒有被撤銷。沒通過的請求停在這裡。

            在 DeviceHub 裡開關在你手上。你在 XRPR 撤銷或改期,對方下一次啟動就在這一層被擋下。屬於其他專案的授權,DeviceHub 一律拒絕。

            XR Private Room 私密領域

            閘門打開,連線落進一個由 Photon 驅動的獨立房間。房外的訊號進不來。

            在 DeviceHub 裡每個大群有自己的房間。房間密碼留在 DeviceHub;頭顯只拿到房間名稱、區碼與版本號,有房名和區碼就能加入。

            工作人員只輸入一次。三層依序跑完,中間那一層的開關在你手上。

            一檔展覽的授權,從開到收

            你在 XRPR 為這檔展覽開一組授權,有效期設成展期,連同 DeviceHub 交出去。營運團隊每天開機、輸入授權、照常演出。展期一過,授權自動失效。提前解約的話,你在後台撤銷,他們下一次啟動就打不開。

            1. 在 XRPR 開授權
            2. 連同 DeviceHub 交付
            3. 展期中,每次啟動都驗證
            4. 展期結束,授權自動失效

            提前解約:撤銷後,下一次啟動打不開

            你握著的

            授權有起訖日期
            每組授權設定生效與結束日期,對齊合約。過了結束日,驗證就不會通過,不用有人記得去關。
            隨時可以收回
            提前解約、違約、作品下架:在 XRPR 後台撤銷,對方下一次啟動就過不了。不用向對方要回任何東西。
            沒過驗證,什麼都不啟動
            通過驗證之前,ADB、OSC、探索全部不啟動,頭顯也拿不到演出房間。沒有離線解鎖。
            收工就上鎖
            按「結束演出並鎖定」,DeviceHub 直接關閉。下一次要用,得重新驗證。

            對方拿到的保障

            不會演到一半被鎖
            驗證只在啟動時做一次。演出中授權到期、被撤銷、或網路斷掉,正在跑的這一場都照常跑完。
            到期前看得到
            登入後側欄寫著有效期限:剩 7 天內轉琥珀色,剩 1 天內或已過期轉紅色。
            房間密碼不離開 DeviceHub
            Photon 房間密碼只存在 DeviceHub;頭顯只拿到房間名稱、區碼與版本號。
            驗證的連線是鎖死的
            只走 HTTPS,不接受重新導向,10 秒逾時。「記住房間名稱與密碼」只幫你預填欄位:它是使用者資料夾裡的一個明文檔,沒有加密,每次啟動仍要重新驗證。

            同一個機制的兩面:你隨時能收回權利,對方也不會在觀眾面前被鎖住。

            11 介面

            七個頁面,沒有一頁是裝飾。

            照 v0.3.8 的版面用 HTML 重畫。點側欄切換頁面,資料都是示範值。

            介面示意 · 示範資料

            替換封面
            連線狀態名稱排序電量排序程序排序手動刷新
            V-0184%60%
            V-0277%60%
            V-0318%70%
            V-0452%60%
            V-0541%--%
            V-0666%40%
            V-0792%60%
            V-08--%--%
            刷新列表全體啟動全體關閉
            連線ID名稱電量音量IP位址序號啟用的程序程序版本操作
            1V-0184%60%192.168.10.101DEMO0000A001ShowApp1.4.2啟動關閉
            2V-0277%60%192.168.10.102DEMO0000A002ShowApp1.4.2啟動關閉
            1V-0318%70%192.168.10.103DEMO0000A003ShowApp1.4.2啟動關閉
            2V-0666%40%192.168.10.106DEMO0000A006Meta大廳1.4.2啟動關閉
            2V-08—未知192.168.10.108DEMO0000A008——啟動關閉
            監控頭顯 8 台 · 7 在線 · 6 在目標程序全體截圖
            V-0184%60%
            V-0277%60%
            V-0318%70%
            V-0452%60%
            V-0541%--%
            V-0666%40%
            刷新列表全體啟動全體關閉目前音量:40%~70%(6 台)

            Unity 畫面NDI接收中 · 1920x1080 · 15 fps

            頭顯電視牆停止7/7 路

            演出狀態重新整理

            A A · 主場演出可開演

            房間 SHOW-A · Jp · 已驗證 rev.3

            OSC 進 9002 → 出 9200

            頭顯 4 台 · 4 已確認 · 4 在線

            小群 11. V-01 ✓2. V-02 ✓

            小群 21. V-03 ✓2. V-04 ✓

            B B · 次場演出房間就緒,2 台尚未確認

            房間 SHOW-B · Jp · 已驗證 rev.1

            OSC 進 9003 → 出 9201

            頭顯 4 台 · 2 已確認 · 3 在線

            小群 11. V-05 ✓2. V-06 ✓

            小群 21. V-07 ⚠2. V-08 ⚠

            選擇 APK 檔案show-build-1.4.2.apk開始安裝
            全選已選擇 6 / 7 台刷新裝置

            安裝完成 - 成功: 5 台, 失敗: 1 台

            [20:14:02] ===== 開始安裝 =====
            [20:14:02] APK: show-build-1.4.2.apk
            [20:14:02] 選定裝置: 6 / 7 台
            [20:14:02] 
            [20:14:02] [1/6] 正在安裝到 V-01...
            [20:14:09] ✓ V-01 安裝成功
            [20:14:09] [2/6] 正在安裝到 V-02...
            [20:14:16] ✓ V-02 安裝成功
            [20:14:16] [3/6] 正在安裝到 V-03...
            [20:14:23] ✓ V-03 安裝成功
            [20:14:23] [4/6] 正在安裝到 V-05...
            [20:14:30] ✓ V-05 安裝成功
            [20:14:30] [5/6] 正在安裝到 V-06...
            [20:14:33] × V-06 安裝失敗: INSTALL_FAILED_INSUFFICIENT_STORAGE
            [20:14:33] [6/6] 正在安裝到 V-07...
            [20:14:40] ✓ V-07 安裝成功
            [20:14:40] 
            [20:14:40] ===== 安裝完成 =====
            [20:14:40] 成功: 5 台 | 失敗: 1 台
            輸入搜尋關鍵字...清除資訊
            [20:11:40] Discovery Server 啟動,監聽端口: 9065
            [20:11:40] OSC 監聽啟動:全體 埠 9001
            [20:11:40] OSC 監聽啟動:大群 A 埠 9002
            [20:11:40] OSC 監聽啟動:大群 B 埠 9003
            [20:11:43] [裝置] V-01 (192.168.10.101:5555) 在線 | 群組: 1 | App: ShowApp | 電量: 84%
            [20:11:43] [裝置] V-02 (192.168.10.102:5555) 在線 | 群組: 1 | App: ShowApp | 電量: 77%
            [20:12:03] OSC Bypass[大群 A]: 接收 /scene/change (2) -> 轉發給 4 個設備
            [20:12:31] [Assignment] V-07 已確認收到設定
            [20:13:55] V-06 left ShowApp for Meta大廳
            [20:15:30] 電視牆開始,7 台
            儲存所有設定

            應用程式設定

            套件名稱:com.example.showapp

            顯示名稱:ShowApp

            介面語言:繁體中文

            連線設定

            ADB路徑:C:\platform-tools\adb.exe

            更新間隔(秒):3

            Anchor路徑:Anchors/Main

            截圖來源:scrcpy 串流(最快,建議)

            OSC 設定

            發送端口:9999

            接收端口:9001

            啟用 OSC Bypass

            大群設定(演出)

            AA · 主場演出啟用自動拉回OSC 進: 9002 出: 92002 小群 · 4 台 · 4/4 已確認

            房間名稱:SHOW-A房間密碼:••••••國碼:Jp驗證房間已驗證,可下發

            BB · 次場演出啟用自動拉回OSC 進: 9003 出: 92012 小群 · 4 台 · 2/4 已確認

            房間名稱:SHOW-B房間密碼:••••••國碼:Jp驗證房間已驗證,可下發

            1. 開始頁面 演出封面,雙擊可以換圖。上台前那一眼,看到的是這場的名字,不是一堆數字。
            2. 頭顯管理 上面每台一張卡:在不在線、電量、音量、在不在目標程序。下面每台一列,多了 ID、IP、序號、程式版本,和「啟動」「關閉」兩顆按鈕。
            3. 監控 Unity 送出的畫面和每台頭顯的畫面在同一頁左右並排,全體啟動、全體關閉也在這一頁。可以操作的版本在第 05 段。
            4. 演出狀態 每個大群一張卡:房間、region、驗證版次、OSC 埠、頭顯確認數。房間驗證過、每台頭顯都回報收到設定,卡片才會寫「可開演」。
            5. 安裝軟體 勾選要裝的頭顯,一台接一台裝,每台一行結果。簽章不符時會先移除舊版再重裝,那台頭顯上這個 App 的資料會被清掉。
            6. 系統紀錄 即時日誌,可以用關鍵字過濾。app.log 每 5 MB 輪替、保留 5 份;「清除資訊」只清畫面,不刪檔案。
            7. 系統設定 目標程式、介面語言、ADB 路徑、輪詢間隔(預設 3 秒)、Anchor 路徑、截圖來源、OSC 埠。每個大群的房間、自動拉回開關和「驗證房間」也在這裡。

            12 規格

            規格表

            01裝置與平台

            頭顯
            Meta Quest 系列
            作業系統
            Windows 10 / 11(主要平台);macOS 版供開發使用,未經現場驗證
            介面語言
            繁體中文 / English,切換後重新啟動生效
            單機規模
            50 台以上 製作團隊實測

            02網路與埠

            頭顯連線
            ADB over USB/Wi-Fi(TCP 5555)
            控制協定
            OSC over UDP
            全體通道
            收 9001
            大群埠
            收 9002 起 / 送 9200 起,每個大群一組
            探索
            UDP 9065 廣播,每 3 秒一次;回覆送到 7908(PC 主機 7908–7915)

            03演出控制

            大群
            預設 A–D,可新增
            自動拉回
            預設關閉,逐大群開啟;連續 2 次讀取確認,冷卻 30 秒;門檻在 config.json

            04監控

            狀態讀取
            間隔 3 秒,最多 8 台平行讀取
            截圖
            scrcpy,1280×720,單眼 16:9
            全體截圖
            11 台,中位數 1.8 秒 實測
            頭顯電視牆
            最多 16 格,每格寬 480 px、10 fps
            Unity 畫面
            NDI / Spout,15 fps,寬 960 px;Spout 只在 Windows 版

            05授權

            授權
            XRPR,每次啟動線上驗證一次
            期限與撤銷
            顯示到期日,剩 7 天內轉琥珀色;撤銷在下次啟動時生效

            06建置

            可攜設定
            exe 旁放一個可寫入的 config.json,DeviceHub 就改用那個資料夾;登入與房間密碼仍存在使用者資料夾
            日誌
            5 MB × 5 輪替
            版本
            v0.3.8

            ● 預約 Demo

            下一場演出,把不確定性留在外面。

            告訴我們你的場地規模與演出流程,我們用你的實際配置走一次 Demo。如果你正在規劃把作品授權給策展人或國外營運團隊,也可以一起看授權與交付的流程。

            先看技術規格

            規格表列出埠號、讀取間隔、截圖與授權的數字。需要授權模型與 Photon 房間交付的完整文件,在表單裡註明。

            看規格表

            只用於回覆這次洽詢,不做行銷名單。