次の方法で共有


カメラ コンパニオン アプリ

この記事では、カメラの製造元がカメラを構成し、既定の画像設定を調整できるカスタム アプリケーションを構築するための機能拡張機能であるコンパニオン アプリについて説明します。

イントロダクション

Windows 11 には、製造元が次の機能を備えたアプリケーションを開発できるカメラ コンパニオン アプリ フレームワークが用意されています。

  • カメラ設定ページでサポートされているのと同じ既定値設定を表示または変更する機能 (たとえば、明るさ、コントラスト、背景効果など)。

  • Windows で認識されているが、カメラ設定ページ (Hue コントロールなど) を介して公開されていない他のカメラ コントロールの既定値設定を登録、更新、または削除する機能。

  • 製造元独自のカメラ コントロールの既定値設定 (たとえば、カメラ製造元のカスタム照明調整効果のオン/オフ コントロール) を登録、更新、または削除する機能。

カメラが関連付けられているコンパニオン アプリを登録すると、カメラ設定ページにエントリが追加されます。 アプリがインストールされている場合は、カメラの設定ページから起動できます。それ以外の場合は、Microsoft Store へのリンクが表示されてダウンロードされます。

コンパニオン アプリは、カメラ設定ページなどの既定値を登録、更新、または削除できる API に特別なアクセス権を持ちます。

用語と前提条件

任期 定義
コンパニオン アプリ カメラの設定ページに加えて、カメラの構成と管理を可能にするカメラの製造元によって開発されたカスタム アプリケーション。
現在の値 カメラの ISP で現在アクティブであり、カメラの一時メモリに保持されているカメラ コントロールの値。
既定値 特定の PC 上の特定のユーザー アカウントについて、ディスクに保存され、特定のカメラ用に保存されるカメラ コントロールの初期値。
HSA ハードウェア サポート アプリ。デバイスが接続されているときに、Microsoft Store からハードウェア関連アプリを自動的にダウンロードしてインストールするために Microsoft がサポートするフレームワークです。
NPU ニューラル処理装置。高いスループットと効率で人工知能ワークロードを処理するように設計された専用ハードウェアです。
ウィンドウズ スタジオ エフェクト 一部の Windows PC で使用できるビデオ効果のコレクション(NPU あり)。
UVC USB ビデオ クラスは、USB 接続されたカメラから制御およびストリーミングするための標準化されたインターフェイスです。

コンパニオン アプリの要件

コンパニオン アプリは、パッケージ ID を持つ パッケージ アプリケーション である必要があります。 コンパニオン アプリは Microsoft Store でもリリースする必要があります。これにより、カメラの設定ページで、アプリがまだインストールされていない場合にアプリをインストールするように顧客をストアに誘導できます。

パッケージ ID のない従来のデスクトップ アプリケーションは、コンパニオン アプリとして使用できません。

HSA として使うコンパニオンアプリ

コンパニオン アプリは 、ハードウェア サポート アプリとしても構成する必要はありませんが、強くお勧めします。 HSA は、特定のハードウェア デバイスに関連付けられている Microsoft Store の特別なアプリです。 そのデバイスが PC に接続されると、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"

コンパニオン アプリがカメラに関連付けられている場合、カメラ設定ページには、カメラの特定の設定ページの [関連設定] 見出しの下にあるコンパニオン アプリへのリンクが含まれます。

コンパニオン アプリが既にインストールされている場合は、[ Open {companion app name}]\({コンパニオン アプリ名を開く\) へのリンクが表示されます。 クリックすると、アプリが起動します。

コンパニオン アプリがまだインストールされていない場合は、Microsoft Store を起動してアプリをダウンロードしてインストールするためのリンクが表示されます。

カメラに関連付けられるコンパニオン アプリは 1 つだけです。

カメラ設定ページからコンパニオン アプリを起動する

カメラ設定ページがコンパニオン アプリを起動すると、カメラのシンボリック リンクが Application.OnLaunched 引数を介してコンテキストとして渡されます。

引数 タイプ データ
cameraId シンボリック リンク

この機能により、コンパニオン アプリは次のシナリオで正しいカメラの設定を表示できます。

  1. 1 つのコンパニオン アプリは、1 つのシステムで複数のカメラをサポートします (たとえば、OEM が提供するアプリケーションでは、タブレットのフロント カメラとリア カメラがサポートされます)。

  2. 顧客は、同じコンパニオン アプリによって管理される同じ (または同じブランド) カメラのうち 2 つをシステムに接続しています。

コンパニオン アプリからカメラ設定ページを起動する

コンパニオン アプリでは、ディープリンク URI を使用して Windows カメラ設定ページを起動できます。 詳細については、「カメラ設定ページを起動する」を参照してください。

コンパニオン アプリから既定値を構成する

コンパニオン アプリでは、 IMFCameraConfigurationManager API を使用して、現在のユーザーの既定値の構成を構成できます。 この API を使用すると、コンパニオン アプリは構成済みの既定値 (カメラ設定ページを使用してユーザーが設定した既定値など) を読み取ったり、既定値を変更したり、新しい既定値を登録したり、保存された既定値を削除したりできます。

既定値は、KS プロパティ GUID と対応する値のペアとしてシステムのデータベースに登録されます。 これにより、アーキテクチャは KS プロパティの定義に依存しません。 この柔軟性により、コンパニオン アプリは次のいずれかの設定の既定値を設定、編集、または削除できます。

  • カメラ設定ページを使用して構成可能な設定 (明るさ、コントラスト、背景効果など)

  • Windows で認識されているが、カメラ設定ページ (Hue コントロールなど) を介して公開されていない他のカメラ コントロールの設定

  • 製造元独自のカメラ コントロールの設定 (たとえば、カメラメーカーのカスタム照明調整効果のオン/オフ コントロール)

コンパニオン アプリから明るさを構成する

カメラがキャプチャした画像の有効な明るさを制御するには、いくつかの方法があります。 たとえば、単純なゲインを画像に適用することで明るさを上げたり、カメラの露出時間を長くしたりすることで明るさを上げることができます。

Windows では、単純なゲイン コントロールを念頭に置いて設計された従来の Brightness コントロール (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS) がサポートされています。 Windows では、露出補正制御 (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION) もサポートされています。これは、カメラの自動露出アルゴリズムに対して正または負の露出値バイアスを実行するように設計されています。

どの明るさコントロールをカメラで使用するかに関係なく、"中央揃え" の場合、明るさがニュートラルになり、値を上げたり下げたりしてオフセットを適用できるように、カメラに実装する必要があります。 最良の画質を得るために、カメラでは露出補正コントロールをサポートすることを強くお勧めします。そのため、お客様がカメラ設定ページまたはコンパニオン アプリで明るさコントロールを調整した場合、カメラは、照明条件に関係なく、いつでも露出に固定の正または負のバイアスを適用するように命令されます。

詳細については、カメラが実装するコントロールに基づく カメラ設定ページ の Brightness コントロールの動作に関するカメラ設定ページを参照してください。 コンパニオン アプリに明るさスライダーも用意されている場合は、ロジックをレプリケートして、カメラ設定ページの明るさスライダーとコンパニオン アプリの間の同期を確保することが重要です。

以下にリンクされているコンパニオン アプリのサンプルには、このロジックの参照実装が含まれています。

リアルタイムで現在の値の変動を監視する

コンパニオン アプリがカメラ設定ページと同時に実行されている場合は、コンパニオン アプリが共有モードで同時に実行されている間に、お客様がカメラ設定ページを使用して既定値を変更してプレビューを表示する可能性があります。 この場合、コンパニオン アプリでは、コントロールの既定値への変更を監視して、同期を維持することをお勧めします。

これを行うには、コンパニオン アプリで IMFCameraControlMonitor を使用して、関心のあるコントロールの現在の値 (KS プロパティ) への変更を監視できます。 これらの変更は、次の原因で発生する可能性があります。

  • カメラ アプリケーション (たとえば、Microsoft Teams) はカメラを使用し、コントロールの現在の値に変更を行います。

  • カメラ設定ページはカメラを使用しており、コントロールの既定値に変更を加えます (現在の値も更新されます)。

この API は、 IMFCameraConfigurationManager API を使用して目的のコントロールの既定値を再読み取りし、既定値が変更された場合に UI を更新するトリガーとして使用できます。

コンパニオン アプリのサンプル

サンプル コンパニオン アプリは、GitHub の CameraSettingsExternalSettingsApp サンプルで入手できます。 このサンプルでは、 IMFCameraConfigurationManager API を使用して、コントラスト、明るさ、および背景セグメント化の既定値を変更する方法を示します。

IMFCameraControlMonitor API を使用して目的のコントロールへの変更を監視する方法を示す別のサンプル アプリケーションは、GitHub の ControlMonitorApp サンプルで入手できます。

こちらも参照ください

Application.OnLaunched

[カメラの設定] ページ

CameraSettingsExternalSettingsApp サンプル

ControlMonitorApp サンプル

Get-AppxPackage

ハードウェア サポート アプリ

IMFCameraConfigurationManager

IMFCameraControlMonitor

KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS

KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION

カメラ設定ページを起動する

MSOS 記述子

パッケージ 化されたアプリケーション