本文說明隨附應用程式,這是相機製造商可建置自訂應用程式的擴充性功能,可設定相機和調整預設影像設定。
簡介
Windows 11 提供相機隨附應用程式架構,可讓製造商開發具有下列功能的應用程式:
能夠顯示和/或修改相機設定頁面支援的相同預設值設定 (例如,亮度、對比度、背景效果等)。
能夠註冊、更新或刪除 Windows 已知但未透過相機設定頁面公開的其他相機控制項的預設值設定 (例如,Hue 控制項) 。
能夠註冊、更新或刪除製造商專有相機控制項的預設值設定 (例如,相機製造商自訂照明調整效果的開/關控制項)。
當相機註冊相關聯的隨附應用程式時,相機設定頁面會新增一個項目。 如果已安裝該應用程序,則可以從相機設置頁面啟動它,否則會顯示指向 Microsoft Store 的鏈接以下載它。
隨附應用程式具有對 API 的特殊存取權,允許它們註冊、更新或刪除預設值,例如相機設定頁面。
術語和必要條件
| 術語 | 定義 |
|---|---|
| 配套應用程式 | 由相機製造商開發的自訂應用程式,除了相機設定頁面之外,還允許設定和管理相機。 |
| 目前的值 | 目前在相機 ISP 中作用中並保留在相機暫存記憶體中的相機控制項的值。 |
| 預設值 | 相機控制項的初始值,會儲存至磁碟,並針對特定電腦上的特定相機、特定使用者帳戶儲存。 |
| HSA | 硬體支援應用程式,Microsoft 支援的架構,可在裝置連線時自動從 Microsoft Store 下載和安裝硬體相關聯的應用程式。 |
| 神經處理單元 (NPU) | 神經處理單元,專用硬件,旨在以高吞吐量和高效率處理人工智能工作負載。 |
| Windows Studio 效果 | 在具有 NPU 的特定 Windows PC 上提供的一系列視訊效果。 |
| 紫外線 | USB 視訊類別,用於控制 USB 連接攝影機並從其串流傳輸的標準化介面。 |
隨附應用程式需求
隨附應用程式必須是具有套件身分識別的 封裝應用程式 。 隨附應用程式也必須在 Microsoft Store 上發行,這可讓相機設定頁面引導客戶前往商店安裝應用程式 (如果尚未安裝)。
沒有套件身分識別的傳統傳統型應用程式無法作為隨附應用程式使用。
作為 HSA 的隨附應用程式
隨附應用程式不需要也設定為 硬體支援應用程式,但強烈建議使用。 HSA 是 Microsoft Store 中與特定硬體裝置相關聯的特殊應用程式。 當該裝置連線到電腦時,HSA 會在可用時自動從 Microsoft Store 下載並安裝。
將隨附應用程式與相機建立關聯
相機製造商可以將隨附應用程式的套件系列名稱(PFN)填入特定裝置屬性索引鍵,從而與隨附應用程式建立關聯。
| 名稱 | 類型 | 資料 |
|---|---|---|
| SCSVCamPfn | REG_SZ | <PFN> |
若要識別隨附應用程式的 PFN,請從 PowerShell 執行 Get-AppxPackage ,例如:
Get-AppxPackage -Name CompanionAppName
若要將隨附應用程式與相機產生關聯,請在 UVC 相機中使用 MSOS 描述元 ,或在相機驅動程式的 INF 中使用 AddReg 指示詞。 例如,使用 INF 檔案:
[SocCaptureSim.RearCamera.AddReg]
HKR,,SCSVCamPfn,,%AppPFN%
...
[Strings]
AppPFN="Contoso.CameraCompanion_xxxxxxxx00000"
當隨附應用程式與相機建立關聯時,相機設定頁面會在相機特定設定頁面的「相關設定」標題下包含隨附應用程式的連結。
如果已安裝隨附應用程式,則會顯示「開啟 {隨附應用程式名稱}」的連結。 點擊後,應用程式隨即啟動。
如果尚未安裝隨附應用程式,則會顯示連結以啟動 Microsoft Store 以下載和安裝應用程式。
一台相機只能配有一個伴隨應用程式。
從相機設定頁面啟動隨附應用程式
當相機設定頁面啟動隨附應用程式時,相機的符號連結會透過 Application.OnLaunched 引數傳遞為內容。
| 論點 | 類型 | 資料 |
|---|---|---|
| 相機ID | 繩子 | 符號連結 |
此功能允許隨附應用程式在以下情況下顯示正確的相機設定:
單一隨附應用程式支援單一系統上的多個相機 (例如,OEM 提供的應用程式支援平板電腦上的前置和後置相機)。
客戶將兩個相同 (或相同品牌) 的攝影機連線至其系統,並由相同的隨附應用程式管理。
從隨附應用程式啟動相機設定頁面
隨附應用程式可以使用深層連結 URI 啟動 Windows 相機設定頁面。 如需詳細資訊,請參閱 啟動相機設定頁面。
從隨附應用程式設定預設值
隨附應用程式可以使用 IMFCameraConfigurationManager API 來設定目前使用者的預設值設定。 此 API 可讓隨附應用程式讀取任何已設定的預設值 (例如,使用者使用相機設定頁面設定的預設值)、修改任何預設值、註冊任何新的預設值,或移除已儲存的預設值。
預設值會在系統資料庫中註冊為一對 KS 屬性 GUID 和對應值。 這可讓架構與 KS 屬性的定義無關。 這種靈活性允許隨附應用程式設定、編輯或刪除以下任何設定的預設值:
也可以使用相機設定頁面進行設定 (例如,亮度、對比度、背景效果等)
Windows 已知但未透過相機設定頁面公開的其他相機控制項的設定 (例如,Hue 控制項)
製造商專有相機控制項的設定 (例如,相機製造商自訂照明調整效果的開/關控制項)
從隨附應用程式設定亮度
相機有幾種方法可以控制捕獲圖像的有效亮度。 例如,可以透過對影像套用簡單的增益來增加亮度,也可以透過增加相機的曝光時間來增加亮度。
Windows 支援舊版亮度控制項 (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS),其設計時已考慮簡單的增益控制項。 Windows 也支援曝光補償控制 (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION) ,其設計目的是要命令相機自動曝光演算法的正或負曝光值偏差。
無論相機使用哪個亮度控制項,都應該在相機系統內實作,以便在「置中」時亮度是中性的,且客戶可以以調整數值來套用偏移量。 為了獲得最佳影像品質,強烈建議相機支援曝光補償控制項,這樣,如果客戶在相機設定頁面或隨附應用程式中調整亮度控制項,系統會命令相機在任何時候將固定的正偏差或負偏差套用至曝光,而不論照明條件為何。
如需詳細資訊,請參閱 相機設定頁面 ,以了解相機設定頁面上 [亮度] 控制項的行為,相機會根據哪個控制項實作。 如果隨附應用程式也提供「亮度」滑桿,則複製邏輯以確保相機設定頁面中的「亮度」滑桿與隨附應用程式之間的同步至關重要。
下面連結的隨附應用程式範例包含此邏輯的參考實作。
監控即時當前值變化
如果隨附應用程式與相機設定頁面同時執行,客戶可能會使用相機設定頁面變更預設值,而隨附應用程式同時以共用模式執行,以顯示預覽。 在此情況下,隨附應用程式建議監視控制項預設值的變更,以便保持同步。
若要這樣做,隨附應用程式可以使用 IMFCameraControlMonitor 來監視感興趣控制項 (KS 屬性) 目前值的變更。 這些變更可能由於下列原因而發生:
相機應用程式 (例如 Microsoft Teams) 正在使用相機,並變更控制項的 [目前值]。
相機設定頁面正在使用相機,並變更控制項的預設值 (也會更新 [目前值])。
此 API 可作為觸發程序,使用 IMFCameraConfigurationManager API 重新讀取感興趣控制項的預設值,並在任何預設值變更時更新 UI。
隨附應用程式範例
GitHub 上提供範例隨附應用程式: CameraSettingsExternalSettingsApp 範例。 此範例示範如何使用 IMFCameraConfigurationManager API 來變更對比、亮度和背景分割的預設值。
GitHub 上提供了另一個示範如何使用 IMFCameraControlMonitor API 來監視感興趣控制項變更的範例應用程式: ControlMonitorApp 範例。
另請參閱
CameraSettingsExternalSettingsApp 範例
KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS