本文列出 Google Meet 會議系統支援的 USB 視訊類別擴充單元 (XU) API,這些 API 可啟用智慧攝影機功能。建立這項規格的目的,是為了影響做法,以啟用這些功能,並讓合作夥伴能進行更完善的非同步擴充性和測試。
如要瞭解這份文件的最新異動,請參閱「版本資訊」。
測試設施
為協助合作夥伴驗證是否符合這項規格,我們在設為開發人員模式的 Chromebox for Meetings 裝置中提供測試設施。啟用寫入檔案系統。在 /etc/chrome_dev.conf 中新增下列程式碼:
--enable-logging
--log-level=0
重新啟動裝置,連接攝影機和 USB 鍵盤,按下 Ctrl-Alt-X,系統就會執行並記錄有效攝影機的規格相容性至 /var/log/chrome/chrome (如果使用已簽署的映像檔,則為 /home/chronos/user/log/chrome)。
小端序慣例
USB 是 little-endian 標準,本文件內容:
- 多位元組數字會以大端序顯示 (並以小端序傳輸)。
- 位元組陣列採用小端記憶體配置。
舉例來說,0x12345678 等於 [0x78, 0x56, 0x34, 0x12]。
擴充單元 GUID
支援這項 Meet XU 控制項規格的擴充單元必須使用這個 GUID。
| 擴充單元 | GUID |
|---|---|
| Peripheral Control XU | {74D7E924-49C9-4A45-98A3-8A9F60061E83} |
周邊控制 XU 選取器
這些是定義的周邊控制 XU 選取器。
| 控制項選取器 | 值 |
|---|---|
GOOGXU_FRAME_STRATEGY |
0x01 |
GOOGXU_REFRAME |
0x02 |
GOOGXU_OCCUPANCY_COUNTING_TOGGLE |
0x03 |
GOOGXU_OCCUPANCY_COUNTING_READ |
0x04 |
GOOGXU_STATUS_INFO |
0x05 |
GOOGXU_STATUS_RESET |
0x06 |
GOOGXU_PRESETS |
0x07 |
GOOGXU_PAN_TILT_ABSOLUTE |
0x08 |
GOOGXU_PAN_TILT_RELATIVE |
0x09 |
GOOGXU_SATELLITE_INFO |
0x0A |
控制要求類型
控制要求類型定義於《UVC 1.5 類別規格》第 4 章:類別專屬要求。
| 作業 | UVC 控制項 |
|---|---|
GET |
GET_CUR,GET_MIN,GET_MAX,GET_RES,GET_LEN,GET_INFO,GET_DEF |
SET |
SET_CUR |
相機模式
攝影機模式可用於在會議室中拍攝個人,並提供以下功能:tuple
- 策略 (攝影機畫面)
- 偏誤 (說話者或會議室)
- 動態饋給 (單一或多個串流)
每個維度可採用下列各節所述的值。
自動取景策略
除了「無」以外,在所有自動取景模式中,手動平移、傾斜和縮放功能都會停用。
自動取景偏誤
| 功能 | 說明 |
|---|---|
| 高風險簡報者 (講者追蹤) | 攝影機會盡量將正在說話的人置於畫面中央。 在這種情況下,攝影機應以簡報者為中心。例如:執行長在會議室中進行簡報。 |
| 協作 (會議室追蹤) |
攝影機會盡量將會議室中的所有參與者納入畫面。在這種情況下,攝影機應公平對待每位與會者。 |
自動取景動態消息
| 功能 | 說明 |
|---|---|
| 單一串流 | 攝影機會將單一影片串流傳送至主機。 |
| 多重串流 (開發中) |
攝影機會分割串流,並建立多個視訊串流傳送給主辦人。 注意:這項功能的完整規格和預期行為仍在審查中,目前不支援,直到本文件後續修訂為止。 |
自動取景模式點陣圖值
除了以空白位元組陣列表示的 None 預設狀態外,位元組陣列中的每個位元都代表不同的攝影機模式,也就是自動取景策略、自動取景偏好設定和自動取景動態饋給的特定組合。
| 自動取景動態消息 | CAZ | Split-Frame | 動態 | 供應商偏好 | 自動取景偏誤 |
|---|---|---|---|---|---|
| 單一串流 | D1 D2 |
- D3 |
D5 D7 |
D9 (講者或會議室) | 喇叭 Room |
| 多重串流 | - - |
- D4 |
D6 D8 |
- | 喇叭 Room |
| 影格模式 | 影格模式值 (最低有效位元組) |
|---|---|
None |
0x0000 |
CAZ, Speaker, Single-Stream |
0x0001 |
CAZ, Room, Single-Stream |
0x0002 |
Split-Frame, Room, Single-Stream |
0x0004 |
Split-Frame, Room, Multi-Stream |
0x0008 |
Dynamic, Speaker, Single-Stream |
0x0010 |
Dynamic, Speaker, Multi-Stream |
0x0020 |
Dynamic, Room, Single-Stream |
0x0040 |
Dynamic, Room, Multi-Stream |
0x0080 |
Vendor-preferred, Single-Stream |
0x0100 |
控制項:GOOGXU_FRAME_STRATEGY
這個控制項可用於取得或設定相機的取景模式,如「自動取景模式點陣圖值」一文所列。每個模式都會以各自點陣圖中的位元表示。指令 GET_RES 會傳回 8 位元組的位元遮罩,值為零 (0) 或一 (1),分別表示裝置不支援或支援該功能。舉例來說,如果攝影機支援 CAZ, Speaker, Single-Stream、Split-Frame, Room, Single-Stream 和 Dynamic, Room, Multi-Stream,但不支援其他模式,則 GET_RES 應傳回 0x000000000000000085 (即 0b10000101 後接七個零位元組)。
SET_CUR 指令用於傳送點陣圖,告知攝影機要啟用哪種 SINGLE 攝影機模式。
| 控制項選取器 | 1 | |||
|---|---|---|---|---|
| 作業 | GET / SET |
|||
wLength |
8 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bActiveMode |
8 | 點陣圖 | 設定或返回「Active Camera Mode」(作用中攝影機模式) |
注意:
|
||||
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_CUR |
取得追蹤定焦鏡頭模式 | |
GET_MIN |
視攝影機而定 | |
GET_MAX |
視攝影機而定 | |
GET_RES |
傳回支援的攝影機模式的 8 位元組長位元遮罩 | |
GET_LEN |
0x0008 | 長度 |
GET_INFO |
0x0B | AutoUpdate / Write / Read |
GET_DEF |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
預設值 |
SET_CUR |
設定「自動取景」攝影機模式 |
控制項:GOOGXU_REFRAME
這項控制項用於觸發單次取景,又稱為 OTAZ。OTAZ 觸發後,攝影機畫面會自動切換至會議室的最佳畫面。之後,用戶端就能重新控制 PTZ 值。如果攝影機不支援單次取景,就不應定義這項控制項。
| 控制項選取器 | 2 | |||
|---|---|---|---|---|
| 作業 | SET |
|||
wLength |
1 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bReframe |
1 | 數字 | 0x01 執行重新構圖要求 |
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x02 | 唯寫 |
GET_DEF |
0x00 | |
SET_CUR |
設定單格取景要求 |
人數計算
入座人數計算 (OC) 功能可估算會議室中的參與者人數,即使攝影機畫面經過裁剪也沒問題。
下表說明 OC 控制項的預期行為,以及這些控制項與攝影機影片串流和攝影機 LED 指示燈的互動情形。
| 當人數計算功能 | & 攝影機影片串流為: | 攝影機 LED 指示燈應為 | GOOGXU_OCCUPANCY_COUNTING_TOGGLE GET_CUR 應為 |
GOOGXU_OCCUPANCY_COUNTING_READ GET_CUR 應為 |
|---|---|---|---|---|
| 已啟用 | 未串流且未設為靜音 | 開啟 | 0x01 |
攝影機完整視野範圍內的人數。 |
| 已啟用 | 串流 | 開啟 | 0x01 |
攝影機完整視野範圍內的人數。 |
| 已啟用 | 已略過 | 關閉 | 0x01 |
已關閉 |
| 已關閉 | 未串流且未設為靜音 | 關閉 | 0x00 |
已關閉 |
| 已關閉 | 串流 | 開啟 | 0x00 |
已關閉 |
| 已關閉 | 已略過 | 關閉 | 0x00 |
已關閉 |
控制項:GOOGXU_OCCUPANCY_COUNTING_TOGGLE
這項控制選項可用來啟用或停用計算房間人數的功能。將值設為零 (0) 會停用這項功能,設為一 (1) 則會啟用。如果攝影機不支援這項功能,就不應定義這項控制項。
| 控制項選取器 | 3 | |||
|---|---|---|---|---|
| 作業 | GET / SET |
|||
wLength |
1 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bOccupancy |
1 | 布林值 | 設定入座率計算功能 0x00 關閉功能 0x01 開啟功能 |
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_CUR |
傳回入座率計算功能是否已開啟 | |
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x0B | AutoUpdate / Write / Read |
GET_DEF |
0x00 | |
SET_CUR |
啟用或停用入座率計算功能 |
控制項:GOOGXU_OCCUPANCY_COUNTING_READ
啟用入座率計算功能後,這項控制項會讀取攝影機回報的會議室參與者人數。如果停用人數計算功能,攝影機應停用這項控制項。如果攝影機不支援人數統計,就不應定義這項控制項。
| 控制項選取器 | 4 | |||
|---|---|---|---|---|
| 作業 | GET |
|||
wLength |
2 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bNumPeople |
2 | 數字 | 偵測到的視野內人數。(唯讀) |
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_CUR |
傳回偵測到的居住者人數 | |
GET_MIN |
0x0000 | |
GET_MAX |
0x00FF | |
GET_RES |
0x0001 | |
GET_LEN |
0x0002 | |
GET_INFO |
0x09 | AutoUpdate / Read |
GET_DEF |
0x0000 |
裝置遙測與診斷
這些控制項旨在鼓勵使用者採用更完善的 Meet 設備偵錯做法,通常不會向使用者顯示。
控制項:GOOGXU_STATUS_INFO
這個控制項用於查詢主機攝影機的資訊,並與合作夥伴分享以進行偵錯。
| 控制項選取器 | 5 | |||
|---|---|---|---|---|
| 作業 | GET |
|||
wLength |
8 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bNumCameras |
1 | 數字 | 附加至主攝影機的額外衛星數量,可能會影響傳回主機的攝影機串流。 |
| 1 | bIsMoving |
1 | 點陣圖 | 攝影機閒置時為 0,PTZ 值變更時為非零值。供應商可自由將不同軸或馬達對應至不同位元。 |
| 2 | Undef |
6 | Undef | 日後將擴大服務範圍。 |
支援的要求類型行為如下:
| 偏移 | 0 | 1 | 2 | 說明 |
|---|---|---|---|---|
GET_MIN |
0x00 | 0x00 | 0x00 0x00 0x00 0x00 0x00 0x00 |
|
GET_MAX |
0xFF | 0xFF | 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF |
|
GET_RES |
0x01 | 0x01 | 0x01 0x00 0x00 0x00 0x00 0x00 |
|
GET_LEN |
0x08 | 0x00 | 0x0008 | |
GET_INFO |
0x09 | AutoUpdate / Read | ||
GET_DEF |
0x00 | 0x00 | 0x00 0x00 0x00 0x00 0x00 0x00 |
控制項:GOOGXU_SATELLITE_INFO
這個控制項用於查詢連線至攝影機系統的衛星裝置。
| 控制項選取器 | 0x0A | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 作業 | GET |
|||||||||||
wLength |
20 | |||||||||||
| 偏移 | 欄位 | 大小 | 值 | 說明 | ||||||||
| 0 | bSatelliteList |
20 | 點陣圖 | 系統所連線的衛星類型清單。包括四個獨立的 5 位元組時段。每個時段的說明如下:
|
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_MIN |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
|
GET_MAX |
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF |
|
GET_RES |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
|
GET_LEN |
0x14 | 20 個位元組 |
GET_INFO |
0x09 | AutoUpdate / Read |
GET_DEF |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
控制項:GOOGXU_STATUS_RESET
這個控制項用於向攝影機發出重設要求。設定值為一 (1) 時,攝影機會重設。如果自上次重設後,攝影機未收到重新啟動要求,則會傳回零 (0);如果正在重設,則會傳回一 (1)。重設後攝影機必須重新啟動。(如果裝置自行供電,強制中斷 USB 連線來模擬熱插拔就沒有意義,因此需要這個功能)。
| 控制項選取器 | 6 | |||
|---|---|---|---|---|
| 作業 | GET / SET |
|||
wLength |
1 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bResetRequest |
1 | 布林值 | 向主機和連線攝影機發出重設要求。 如果自上次重設後發出重設要求,則傳回 0x01,否則傳回 0x00。 |
支援的要求類型行為如下:
| 偏移 | 0 | 說明 |
|---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x03 | 寫入 / 讀取 |
GET_DEF |
0x00 |
PTZ 預設
用於將攝影機的視野範圍設定及還原為預設位置。
控制項:GOOGXU_PRESETS
這個控制項用於將攝影機的平移、傾斜和變焦 (PTZ) 值設為預設設定。
Preset Action 用於說明指令的預期動作。設定值為一 (1) 時,會將目前的平移、傾斜和縮放值對應至提供的預設索引。如果將值設為 2,相機的平移、傾斜和變焦應會轉換為先前為所提供索引對應的值,或預設出廠座標 (如果先前未對應)。將值設為三 (3) 會將索引重設為原廠預設座標。
Preset Index 用於指定對應至索引的 PTZ 座標。零 (0) 的 Preset index 會對應至初始座標,且當 GOOGXU_FRAME_STRATEGY 設為 NONE 時,應為攝影機喚醒時的預設位置。
| 控制項選取器 | 7 | |||
|---|---|---|---|---|
| 作業 | SET |
|||
wLength |
2 | |||
| 偏移 | 欄位 | 大小 | 值 | 說明 |
| 0 | bPresetAction |
1 | 數字 | 0x01:儲存預設集 0x02:還原預設集 0x03:將預設集重設為預設值。(預設值應為有效的預設座標)。 |
| 1 | bPresetIndex |
1 | 數字 | 有效預設索引。0 到 N-1 其中 0 是預設的攝影機起始位置,N-1 則是廠商定義的預設常數數量。 |
支援的要求類型行為如下:
| 偏移 | 0 | 1 | 說明 |
|---|---|---|---|
GET_MIN |
0x00 | 0x00 | |
GET_MAX |
0x03 | N-1 | 最多支援 N 個預設集 |
GET_RES |
0x01 | 0x01 | |
GET_LEN |
0x02 | 0x00 | 0x0002 |
GET_INFO |
0x02 | 唯寫 | |
GET_DEF |
0x00 | 0x00 |
平移和傾斜輔助對應地圖
部分攝影機有特殊元件,例如機械式攝影機的馬達,或是數位 PTZ 功能。如要控制這些功能,請使用平移、傾斜和縮放的標準 V4L2 控制項。
控制項:GOOGXU_PAN_TILT_ABSOLUTE (已淘汰)
平移和傾斜輔助對應控制項定義於第 4 章:類別專屬要求第 4.2.2.1.14 節的 UVC 1.5 類別規格。
控制項:GOOGXU_PAN_TILT_RELATIVE (已淘汰)
平移和傾斜輔助對應控制項定義於第 4 章:類別專屬要求第 4.2.2.1.15 節「UVC 1.5 類別規格」的「PanTilt (Relative) Control」。
相關主題
- Linux USB 視訊類別 (UVC) 驅動程式
- 影片課程 v1.5 文件集
- USB 2.0 規格
- Google Meet 設備說明中心
- Google Workspace 管理員說明中心中的 Google Meet Hardware 專區
版本資訊
以下版本資訊列載本文件各修訂版本的新功能和改善項目。
2025 年 8 月 13 日
- 修正測試機構詳細資料。
2025 年 1 月 27 日
- 在
GOOGXU_FRAME_STRATEGY中新增Vendor-preferred取景策略。 - 新增控制項:
GOOGXU_SATELLITE_INFO。
2024 年 5 月 21 日
- 移除測試指令碼,改用新的 CfM 測試設備,
該設備會執行
SET,並支援驗證 Series One 攝影機。 - 清楚闡釋
GOOGXU_STATUS_INFO中的欄位。 - 清楚說明
GOOGXU_STATUS_RESET的行為。 - 已淘汰
GOOGXU_PAN_TILT_ABSOLUTE和GOOGXU_PAN_TILT_RELATIVE。
2023 年 11 月 15 日
更新測試指令碼,檢查並解讀有效的取景模式。清楚闡釋位元組表示法。
2023 年 7 月 21 日
新增測試指令碼,供合作夥伴驗證導入項目是否符合這項規格。
2023 年 5 月 25 日
已修正預設集數量相關的GOOGXU_PRESETS附註。應為 N,而非 N-1。
2023 年 4 月 17 日
第 1 版。