WWDC23:macOS Monterey 12.3以降から導入された「ScreenCaptureKit」を紹介
※本サイトは、アフィリエイト広告および広告による収益を得て運営しています。購入により売上の一部が本サイトに還元されることがあります。
WWDC23において「ScreenCaptureKit」の最新機能を使って、画面共有体験をレベルアップさせる方法について説明するセッション「What’s new in ScreenCaptureKit」が公開されています。
ScreenCaptureKitは、macOS 12.3で導入されたフレームワークで、アプリケーションのニーズに合ったコントロールで、共有したいコンテンツをカスタマイズできるようにするAPIを提供し、そのすべてをストリームに動的に適用することができます。
プレゼンターオーバーレイは、ScreenCaptureKitを使用するすべてのアプリケーションで利用可能です。
SCStreamが作成されるたびに、ScreenCaptureKitは画面共有ピッカーに通知し、ストリームのコントロールを含むライブプレビューが新しいビデオメニューバーアイテムに表示されます。
ビデオメニューバーには、アクティブなストリームを持つすべてのアプリケーションが表示され、任意のアプリケーションに関連付けられたストリームのライブプレビューが表示されます。
このメニューバーから、ストリーム全体の画面共有ピッカーが表示され、ストリームのコンテンツを制御することができるようになります。
また、ここでプレゼンターオーバーレイが有効になり、コンテンツストリームにカメラフレームを埋め込むことができます。
また、これを利用して、画面共有の置き換えや終了など、ストリームをコントロールすることも可能です。
SCStream が作成されるたびに、ScreenCaptureKit は画面共有ピッカーに通知し、新しい Video メニューバー項目にストリームのコントロールを含むライブプレビューが表示されます。
ビデオメニューバーには、アクティブなストリームを持つすべてのアプリケーションが表示され、任意のアプリケーションに関連付けられたストリームのライブプレビューが表示されます。
このメニューバーから、ストリーム全体の画面共有ピッカーが表示され、ストリームのコンテンツを制御することができるようになります。
また、ここでプレゼンターオーバーレイが有効になり、コンテンツストリームにカメラフレームを埋め込むことができます。
また、これを利用して、画面共有の置き換えや終了など、ストリームをコントロールすることも可能です。
その他にも、カメラやマイクの効果をカスタマイズするための便利な機能がここにあります。 ScreenCaptureKitとカメラを一緒に使うすべてのアプリケーションは、自動的にこれらの機能が動作するようになります。
どのようにして新しいコンテンツ・フィルタをあなたのアプリケーションに取り込むのでしょうか?新しいAPIである「SCContentSharingPicker」を使うことによって可能になります。
SCContentSharingPickerは、アプリケーションとOSの間のインタフェースとして機能し、新しいストリーム要求、新しいコンテンツフィルタ、および現在のストリームとコンテンツフィルタの更新でアプリケーションにデリゲートコールバックを提供します。
SCContentSharingPickerには、システムレベルのコンテンツピッカーが組み込まれており、ウィンドウ、アプリ、またはディスプレイに基づいてコンテンツを選択することができます。
アプリケーションのボタン、新しいビデオメニューバー、またはウィンドウから直接コンテンツの選択を開始しても、アプリケーションはSCContentSharingPickerを利用して、進行中のストリームのアクティブな選択を追加、削除、または交換することができます。
また、新しいストリームが要求されたときに、アプリケーションがそれを知ることができるストリーム要求コールバックが組み込まれています。
今年、ScreenCaptureKitに新しいAPIが追加され、スクリーンから静止画を簡単に取り出せるようになりました。
新しいスクリーンショットAPIは、ScreenCaptureKitのストリーミングの利点をスクリーンショットにもたらすものです。
アプリやウィンドウによる高度なフィルタリング、複数のピクセル形式や色空間、カーソルの可視性などのオプションなどの機能が利用できます。
これで、使い慣れたScreenCaptureKitの構造体を使用して、欲しい画面内容の画像を効率的に取得できるようになります。
新しいAPIは非同期型で、出力画像は、CMSampleBufferまたはCGImageのどちらかの形式を選択できます。
CMSampleBufferオプションは、利用できるピクセルフォーマットが追加されており、特定のフォーマットに興味がある場合に最適です。
コードですでにCGImageを使用している場合は、このフォーマットを使用すると統合が容易になります。
どちらのフォーマットでも、スクリーンショットは ScreenCaptureKit ストリーミングとほぼ同じ設定オプションを使用し、同様の設定フローをたどります。
CGWindowListCreateImage を使用している場合、ScreenCaptureKit への移行をより簡単にするいくつかのポイントがあります。
CGWindowList API で利用可能なすべてのウィンドウ画像オプションは、ScreenCaptureKit の SCStreamConfiguration クラス内で見つけることができます。
特定のウィンドウID以上のウィンドウをすべて取得するようなウィンドウリストオプションは、SCShareableContentの中で提供されます。
また、CGImage出力の操作に慣れている場合、新しいスクリーンショットAPIは、既存のコードに簡単に統合できるCGImage出力形式を提供します。
スクリーンショットの撮影は、ScreenCaptureKit のストリーミングと同様の流れになりますが、SCStream を作成する代わりに、スクリーンショット API を呼び出すことになります。