vibetunnel/mac/docs/screencapturekit.md

4701 lines
100 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
Downloaded via https://llm.codes by @steipete on July 6, 2025 at 01:40 AM
Source URL: https://developer.apple.com/documentation/screencapturekit
Total pages processed: 163
URLs filtered: Yes
Content de-duplicated: Yes
Availability strings filtered: Yes
Code blocks only: No
-->
# https://developer.apple.com/documentation/screencapturekit
Framework
# ScreenCaptureKit
Filter and select screen content and stream it to your app.
## Overview
Use the ScreenCaptureKit framework to add support for high-performance frame capture of screen and audio content to your Mac app. The framework gives you fine-grained control to select and stream only the content that you want to capture. As a stream captures new video frames and audio samples, it passes them to your app as `CMSampleBuffer` objects that contain the media data and its related metadata. ScreenCaptureKit also provides a macOS-integrated picker for streaming selection and management, `SCContentSharingPicker`.
## Topics
### Essentials
ScreenCaptureKit updates
Learn about important changes to ScreenCaptureKit.
`Persistent Content Capture`
A Boolean value that indicates whether a Virtual Network Computing (VNC) app needs persistent access to screen capture.
Capturing screen content in macOS
Stream desktop content like displays, apps, and windows by adopting screen capture in your app.
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
### Output processing
`protocol SCStreamOutput`
A delegate protocol your app implements to receive capture stream output events.
`enum SCStreamOutputType`
Constants that represent output types for a stream frame.
`struct SCStreamFrameInfo`
An instance that defines metadata keys for a stream frame.
`enum SCFrameStatus`
Status values for a frame from a stream.
### System content-sharing picker
`class SCContentSharingPicker`
An instance of a picker presented by the operating system for managing frame-capture streams.
`struct SCContentSharingPickerConfiguration`
An instance for configuring the system content-sharing picker.
`struct SCContentSharingPickerMode`
Available modes for selecting streaming content from a picker presented by the operating system.
`protocol SCContentSharingPickerObserver`
An observer protocol your app implements to receive messages from the operating systems content picker.
### Stream errors
`let SCStreamErrorDomain: String`
A string representation of the error domain.
`struct SCStreamError`
An instance representing a ScreenCaptureKit framework error.
---
# https://developer.apple.com/documentation/screencapturekit/
Framework
# ScreenCaptureKit
Filter and select screen content and stream it to your app.
## Overview
Use the ScreenCaptureKit framework to add support for high-performance frame capture of screen and audio content to your Mac app. The framework gives you fine-grained control to select and stream only the content that you want to capture. As a stream captures new video frames and audio samples, it passes them to your app as `CMSampleBuffer` objects that contain the media data and its related metadata. ScreenCaptureKit also provides a macOS-integrated picker for streaming selection and management, `SCContentSharingPicker`.
## Topics
### Essentials
ScreenCaptureKit updates
Learn about important changes to ScreenCaptureKit.
`Persistent Content Capture`
A Boolean value that indicates whether a Virtual Network Computing (VNC) app needs persistent access to screen capture.
Capturing screen content in macOS
Stream desktop content like displays, apps, and windows by adopting screen capture in your app.
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
### Output processing
`protocol SCStreamOutput`
A delegate protocol your app implements to receive capture stream output events.
`enum SCStreamOutputType`
Constants that represent output types for a stream frame.
`struct SCStreamFrameInfo`
An instance that defines metadata keys for a stream frame.
`enum SCFrameStatus`
Status values for a frame from a stream.
### System content-sharing picker
`class SCContentSharingPicker`
An instance of a picker presented by the operating system for managing frame-capture streams.
`struct SCContentSharingPickerConfiguration`
An instance for configuring the system content-sharing picker.
`struct SCContentSharingPickerMode`
Available modes for selecting streaming content from a picker presented by the operating system.
`protocol SCContentSharingPickerObserver`
An observer protocol your app implements to receive messages from the operating systems content picker.
### Stream errors
`let SCStreamErrorDomain: String`
A string representation of the error domain.
`struct SCStreamError`
An instance representing a ScreenCaptureKit framework error.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker
- ScreenCaptureKit
- SCContentSharingPicker
Class
# SCContentSharingPicker
An instance of a picker presented by the operating system for managing frame-capture streams.
class SCContentSharingPicker
## Overview
## Topics
### Shared system picker
`class var shared: SCContentSharingPicker`
The system-provided picker UI instance for capturing display and audio content from someones Mac.
### Picker availability
`var isActive: Bool`
A Boolean value that indicates if the picker is active.
### Stream configuration
`func setConfiguration(SCContentSharingPickerConfiguration?, for: SCStream)`
Sets the configuration for the content capture picker for a capture stream, providing allowed selection modes and content excluded from selection.
`var configuration: SCContentSharingPickerConfiguration?`
Sets the configuration for the content capture picker for all streams, providing allowed selection modes and content excluded from selection.
`var defaultConfiguration: SCContentSharingPickerConfiguration`
The default configuration to use for the content capture picker.
`var maximumStreamCount: Int?`
The maximum number of streams the content capture picker allows.
### Manage observers
`func add(any SCContentSharingPickerObserver)`
Adds an observer instance to notify of changes in the content-sharing picker.
`func remove(any SCContentSharingPickerObserver)`
Removes an observer instance from the content-sharing picker.
### Picker display
`func present()`
Displays the picker with no active selection for capture.
`func present(for: SCStream)`
Displays the picker with an already running capture stream.
`func present(using: SCShareableContentStyle)`
Displays the picker for a single type of capture selection.
`func present(for: SCStream, using: SCShareableContentStyle)`
Displays the picker with an existing capture stream, allowing for a single type of capture selection.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### System content-sharing picker
`struct SCContentSharingPickerConfiguration`
An instance for configuring the system content-sharing picker.
`struct SCContentSharingPickerMode`
Available modes for selecting streaming content from a picker presented by the operating system.
`protocol SCContentSharingPickerObserver`
An observer protocol your app implements to receive messages from the operating systems content picker.
---
# https://developer.apple.com/documentation/screencapturekit/capturing-screen-content-in-macos
- ScreenCaptureKit
- Capturing screen content in macOS
Sample Code
# Capturing screen content in macOS
Stream desktop content like displays, apps, and windows by adopting screen capture in your app.
Download
Xcode 16.0+
## Overview
This sample shows how to add high-performance screen capture to your Mac app by using ScreenCaptureKit. The sample explores how to create content filters to capture the displays, apps, and windows you choose. It then shows how to configure your stream output, retrieve video frames and audio samples, and update a running stream.
### Configure the sample code project
To run this sample app, youll need the following:
- A Mac with macOS 15 or later
- Xcode 16 or later
The first time you run this sample, the system prompts you to grant the app Screen Recording permission. After you grant permission, you need to restart the app to enable capture.
### Create a content filter
Displays, running apps, and windows are the shareable content on a device. The sample uses the `SCShareableContent` class to retrieve the items in the form of `SCDisplay`, `SCRunningApplication`, and `SCWindow` objects respectively.
// Retrieve the available screen content to capture.
let availableContent = try await SCShareableContent.excludingDesktopWindows(false,
onScreenWindowsOnly: true)
Before the sample begins capture, it creates an `SCContentFilter` object to specify the content to capture. The sample provides two options that allow for capturing either a single window or an entire display. When the capture type is set to capture a window, the app creates a content filter that only includes that window.
// Create a content filter that includes a single window.
filter = SCContentFilter(desktopIndependentWindow: window)
When a user specifies to capture the entire display, the sample creates a filter to capture only content from the main display. To illustrate filtering a running app, the sample contains a toggle to specify whether to exclude the sample app from the stream.
var excludedApps = SCRunningApplication
// If a user chooses to exclude the app from the stream,
// exclude it by matching its bundle identifier.
if isAppExcluded {
excludedApps = availableApps.filter { app in
Bundle.main.bundleIdentifier == app.bundleIdentifier
}
}
// Create a content filter with excluded apps.
filter = SCContentFilter(display: display,
excludingApplications: excludedApps,
exceptingWindows: [])
### Create a stream configuration
An `SCStreamConfiguration` object provides properties to configure the streams output size, pixel format, audio capture settings, and more. The apps configuration throttles frame updates to 60 fps, and configures the number of frames to keep in the queue at 5. Specifying more frames uses more memory, but may allow for processing frame data without stalling the display stream. The default value is 3 and shouldnt exceed 8 frames.
var streamConfig = SCStreamConfiguration()
if let dynamicRangePreset = selectedDynamicRangePreset?.scDynamicRangePreset {
streamConfig = SCStreamConfiguration(preset: dynamicRangePreset)
}
// Configure audio capture.
streamConfig.capturesAudio = isAudioCaptureEnabled
streamConfig.excludesCurrentProcessAudio = isAppAudioExcluded
streamConfig.captureMicrophone = isMicCaptureEnabled
// Configure the display content width and height.
if captureType == .display, let display = selectedDisplay {
streamConfig.width = display.width * scaleFactor
streamConfig.height = display.height * scaleFactor
}
// Configure the window content width and height.
if captureType == .window, let window = selectedWindow {
streamConfig.width = Int(window.frame.width) * 2
streamConfig.height = Int(window.frame.height) * 2
}
// Set the capture interval at 60 fps.
streamConfig.minimumFrameInterval = CMTime(value: 1, timescale: 60)
// Increase the depth of the frame queue to ensure high fps at the expense of increasing
// the memory footprint of WindowServer.
streamConfig.queueDepth = 5
### Start the capture session
The sample uses the content filter and stream configuration to initialize a new instance of `SCStream`. To retrieve audio and video sample data, the app adds stream outputs that capture media of the specified type. When the stream captures new sample buffers, it delivers them to its stream output object on the indicated dispatch queues.
stream = SCStream(filter: filter, configuration: configuration, delegate: streamOutput)
// Add a stream output to capture screen content.
try stream?.addStreamOutput(streamOutput, type: .screen, sampleHandlerQueue: videoSampleBufferQueue)
try stream?.addStreamOutput(streamOutput, type: .audio, sampleHandlerQueue: audioSampleBufferQueue)
try stream?.addStreamOutput(streamOutput, type: .microphone, sampleHandlerQueue: micSampleBufferQueue)
stream?.startCapture()
After the stream starts, further changes to its configuration and content filter dont require restarting it. Instead, after you update the capture configuration in the user interface, the sample creates new stream configuration and content filter objects and applies them to the running stream to update its state.
try await stream?.updateConfiguration(configuration)
try await stream?.updateContentFilter(filter)
### Process the output
When a stream captures a new audio or video sample buffer, it calls the stream outputs `stream(_:didOutputSampleBuffer:of:)` method, passing it the captured data and an indicator of its type. The stream output evaluates and processes the sample buffer as shown below.
func stream(_ stream: SCStream, didOutputSampleBuffer sampleBuffer: CMSampleBuffer, of outputType: SCStreamOutputType) {
// Return early if the sample buffer is invalid.
guard sampleBuffer.isValid else { return }
// Determine which type of data the sample buffer contains.
switch outputType {
case .screen:
// Process the screen content.
case .audio:
// Process the audio content.
}
}
### Process a video sample buffer
If the sample buffer contains video data, it retrieves the sample buffer attachments that describe the output video frame.
// Retrieve the array of metadata attachments from the sample buffer.
guard let attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer,
createIfNecessary: false) as? [[SCStreamFrameInfo: Any]],
let attachments = attachmentsArray.first else { return nil }
An `SCStreamFrameInfo` structure defines dictionary keys that the sample uses to retrieve metadata attached to a sample buffer. Metadata includes information about the frames display time, scale factor, status, and more. To determine whether a frame is available for processing, the sample inspects the status for `SCFrameStatus.complete`.
// Validate the status of the frame. If it isn't `.complete`, return nil.
guard let statusRawValue = attachments[SCStreamFrameInfo.status] as? Int,
let status = SCFrameStatus(rawValue: statusRawValue),
status == .complete else { return nil }
The sample buffer wraps a `CVPixelBuffer` thats backed by an `IOSurface`. The sample casts the surface reference to an `IOSurface` that it later sets as the layer content of an `NSView`.
// Get the pixel buffer that contains the image data.
guard let pixelBuffer = sampleBuffer.imageBuffer else { return nil }
// Get the backing IOSurface.
guard let surfaceRef = CVPixelBufferGetIOSurface(pixelBuffer)?.takeUnretainedValue() else { return nil }
let surface = unsafeBitCast(surfaceRef, to: IOSurface.self)
// swiftlint:disable force_cast
// Retrieve the content rectangle, scale, and scale factor.
guard let contentRectDict = attachments[.contentRect],
let contentRect = CGRect(dictionaryRepresentation: contentRectDict as! CFDictionary),
let contentScale = attachments[.contentScale] as? CGFloat,
let scaleFactor = attachments[.scaleFactor] as? CGFloat else { return nil }
// Create a new frame with the relevant data.
let frame = CapturedFrame(surface: surface,
contentRect: contentRect,
contentScale: contentScale,
scaleFactor: scaleFactor)
### Process an audio sample buffer
If the sample buffer contains audio, it retrieves the data as an `AudioBufferList` as shown below.
// Create an AVAudioPCMBuffer from an audio sample buffer.
try? buffer.withAudioBufferList { audioBufferList, blockBuffer in
guard let description = buffer.formatDescription?.audioStreamBasicDescription,
let format = AVAudioFormat(standardFormatWithSampleRate: description.mSampleRate, channels: description.mChannelsPerFrame),
let samples = AVAudioPCMBuffer(pcmFormat: format, bufferListNoCopy: audioBufferList.unsafePointer)
else { return }
pcmBufferHandler?(samples)
}
}
The app retrieves the audio stream basic description that it uses to create an `AVAudioFormat`. It then uses the format and the audio buffer list to create a new instance of `AVAudioPCMBuffer`. If you enable audio capture in the user interface, the sample uses the buffer to calculate average levels for the captured audio to display in a simple level meter.
## See Also
### Essentials
ScreenCaptureKit updates
Learn about important changes to ScreenCaptureKit.
`Persistent Content Capture`
A Boolean value that indicates whether a Virtual Network Computing (VNC) app needs persistent access to screen capture.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent
- ScreenCaptureKit
- SCShareableContent
Class
# SCShareableContent
An instance that represents a set of displays, apps, and windows that your app can capture.
class SCShareableContent
## Overview
Use the `displays`, `windows`, and `applications` properties to create a `SCContentFilter` object that specifies what display content to capture. You apply the filter to an instance of `SCStream` to limit its output to only the content matching your filter.
## Topics
### Retrieving shareable content
Retrieves the displays, apps, and windows that your app can capture.
Retrieves the displays, apps, and windows that match your criteria.
Retrieves the displays, apps, and windows that are in front of the specified window.
Retrieves the displays, apps, and windows that are behind the specified window.
Retrieves any available sharable content information that matches the provided filter.
### Inspecting shareable content
[`var windows: [SCWindow]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows)
The windows available for capture.
[`var displays: [SCDisplay]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays)
The displays available for capture.
[`var applications: [SCRunningApplication]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/applications)
The apps available for capture.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Shareable content
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo
- ScreenCaptureKit
- SCShareableContentInfo
Class
# SCShareableContentInfo
An instance that provides information for the content in a given stream.
class SCShareableContentInfo
## Topics
### Shared content properties
`var contentRect: CGRect`
The size and location of content for the stream.
`var pointPixelScale: Float`
The scaling from points to output pixel resolution for the stream.
`var style: SCShareableContentStyle`
The current presentation style of the stream.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle
- ScreenCaptureKit
- SCShareableContentStyle
Enumeration
# SCShareableContentStyle
The style of content presented in a stream.
enum SCShareableContentStyle
## Topics
### Content styles
`case application`
The stream is currently presenting one or more applications.
`case display`
The stream is currently presenting a complete display.
`case none`
The stream isnt currently presenting any content.
`case window`
The stream is currently presenting one or more windows.
### Initializers
`init?(rawValue: Int)`
## Relationships
### Conforms To
- `BitwiseCopyable`
- `Equatable`
- `Hashable`
- `RawRepresentable`
- `Sendable`
- `SendableMetatype`
## See Also
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay
- ScreenCaptureKit
- SCDisplay
Class
# SCDisplay
An instance that represents a display device.
class SCDisplay
## Overview
A display object represents a physical display connected to a Mac. Query the display to retrieve its unique identifier and onscreen coordinates.
Retrieve the available displays from an instance of `SCShareableContent`. Select a display to capture and use it to create an instance of `SCContentFilter`. Apply the filter to an instance of `SCStream` to limit its output to content matching your criteria.
## Topics
### Identifying displays
`var displayID: CGDirectDisplayID`
The Core Graphics display identifier.
### Accessing dimensions
`var frame: CGRect`
The frame of the display.
`var width: Int`
The width of the display in points.
`var height: Int`
The height of the display in points.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCRunningApplication`
An instance that represents an app running on a device.
`class SCWindow`
An instance that represents an onscreen window.
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication
- ScreenCaptureKit
- SCRunningApplication
Class
# SCRunningApplication
An instance that represents an app running on a device.
class SCRunningApplication
## Overview
Retrieve the available apps from an instance of `SCShareableContent`. Select one or more apps to capture and use them to create an instance of `SCContentFilter`. Apply the filter to an instance of `SCStream` to limit its output to content matching your criteria.
## Topics
### Inspecting an app
`var processID: pid_t`
The system process identifier of the app.
`var bundleIdentifier: String`
The unique bundle identifier of the app.
`var applicationName: String`
The display name of the app.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCWindow`
An instance that represents an onscreen window.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow
- ScreenCaptureKit
- SCWindow
Class
# SCWindow
An instance that represents an onscreen window.
class SCWindow
## Overview
Retrieve the available windows from an instance of `SCShareableContent`. Select one or more windows to capture and use them to create an instance of `SCContentFilter`. Apply the filter to an instance of `SCStream` to limit its output to content matching your criteria.
## Topics
### Identifying windows
`var windowID: CGWindowID`
The Core Graphics window identifier.
`var title: String?`
The string that displays in a windows title bar.
`var owningApplication: SCRunningApplication?`
The app that owns the window.
`var windowLayer: Int`
The layer of the window relative to other windows.
### Accessing dimensions
`var frame: CGRect`
A rectangle the represents the frame of the window within a display.
### Determining visibility
`var isOnScreen: Bool`
A Boolean value that indicates whether the window is on screen.
`var isActive: Bool`
A Boolean value that indicates if the window is currently streaming.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Shareable content
`class SCShareableContent`
An instance that represents a set of displays, apps, and windows that your app can capture.
`class SCShareableContentInfo`
An instance that provides information for the content in a given stream.
`enum SCShareableContentStyle`
The style of content presented in a stream.
`class SCDisplay`
An instance that represents a display device.
`class SCRunningApplication`
An instance that represents an app running on a device.
---
# https://developer.apple.com/documentation/screencapturekit/scstream
- ScreenCaptureKit
- SCStream
Class
# SCStream
An instance that represents a stream of shareable content.
class SCStream
## Overview
Use a stream to capture video of screen content like apps and windows. Create a content stream by passing it an instance of `SCContentFilter` and an `SCStreamConfiguration` object. The stream uses the filter to determine which screen content to capture, and uses the configuration data to configure the output.
## Topics
### Creating a stream
`init(filter: SCContentFilter, configuration: SCStreamConfiguration, delegate: (any SCStreamDelegate)?)`
Creates a stream with a content filter and configuration.
### Updating stream configuration
Updates the stream with a new configuration.
Updates the stream by applying a new content filter.
### Adding and removing stream output
`func addStreamOutput(any SCStreamOutput, type: SCStreamOutputType, sampleHandlerQueue: dispatch_queue_t?) throws`
Adds a destination that receives the stream output.
`func removeStreamOutput(any SCStreamOutput, type: SCStreamOutputType) throws`
Removes a destination from receiving stream output.
### Adding and removing recording output
`func addRecordingOutput(SCRecordingOutput) throws`
`func removeRecordingOutput(SCRecordingOutput) throws`
`class SCRecordingOutput`
### Starting and stopping a stream
Starts the stream with a call)
Stops the stream.
### Stream synchronization
`var synchronizationClock: CMClock?`
A clock to use for output synchronization.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scstreamconfiguration
- ScreenCaptureKit
- SCStreamConfiguration
Class
# SCStreamConfiguration
An instance that provides the output configuration for a stream.
class SCStreamConfiguration
## Overview
Creating an instance of this class provides a default configuration for a stream. Only configure its properties if you need to customize the output.
## Topics
### Specifying dimensions
`var width: Int`
The width of the output.
`var height: Int`
The height of the output.
`var scalesToFit: Bool`
A Boolean value that indicates whether to scale the output to fit the configured width and height.
`var sourceRect: CGRect`
A rectangle that specifies the source area to capture.
`var destinationRect: CGRect`
A rectangle that specifies a destination into which to write the output.
`var preservesAspectRatio: Bool`
A Boolean value that determines if the stream preserves aspect ratio.
### Configuring colors
`var pixelFormat: OSType`
A pixel format for sample buffers that a stream outputs.
`var colorMatrix: CFString`
A color matrix to apply to the output surface.
`var colorSpaceName: CFString`
A color space to use for the output buffer.
`var backgroundColor: CGColor`
A background color for the output.
### Configuring captured elements
`var showsCursor: Bool`
A Boolean value that determines whether the cursor is visible in the stream.
`var shouldBeOpaque: Bool`
A Boolean value that indicates if semitransparent content presents as opaque.
`var capturesShadowsOnly: Bool`
A Boolean value that indicates if the stream only captures shadows.
`var ignoreShadowsDisplay: Bool`
A Boolean value that indicates if the stream ignores the capturing of window shadows when streaming in display style.
`var ignoreShadowsSingleWindow: Bool`
A Boolean value that indicates if the stream ignores the capturing of window shadows when streaming in window style.
`var ignoreGlobalClipDisplay: Bool`
A Boolean value that indicates if the stream ignores content clipped past the edge of a display, when streaming in display style.
`var ignoreGlobalClipSingleWindow: Bool`
A Boolean value that indicates if the stream ignores content clipped past the edge of a display, when streaming in window style.
### Configuring captured frames
`var queueDepth: Int`
The maximum number of frames for the queue to store.
`var minimumFrameInterval: CMTime`
The desired minimum time between frame updates, in seconds.
`var captureResolution: SCCaptureResolutionType`
The resolution at which to capture source content.
`enum SCCaptureResolutionType`
Available resolutions for content capture.
### Configuring audio
`var capturesAudio: Bool`
A Boolean value that indicates whether to capture audio.
`var sampleRate: Int`
The sample rate for audio capture.
`var channelCount: Int`
The number of audio channels to capture.
`var excludesCurrentProcessAudio: Bool`
A Boolean value that indicates whether to exclude audio from your app during capture.
### Identifying a stream
`var streamName: String?`
A name that you provide for identifying the stream.
### Notifying presenters
`var presenterOverlayPrivacyAlertSetting: SCPresenterOverlayAlertSetting`
A value indicating if alerts appear to presenters while using Presenter Overlay.
`enum SCPresenterOverlayAlertSetting`
Configures how to present streaming notifications to a streamer of Presenter Overlay.
### Enumerations
`enum SCCaptureDynamicRange`
`enum Preset`
### Initializers
`convenience init(preset: SCStreamConfiguration.Preset)`
### Instance Properties
`var captureDynamicRange: SCCaptureDynamicRange`
`var captureMicrophone: Bool`
`var includeChildWindows: Bool`
`var microphoneCaptureDeviceID: String?`
`var showMouseClicks: Bool`
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/sccontentfilter
- ScreenCaptureKit
- SCContentFilter
Class
# SCContentFilter
An instance that filters the content a stream captures.
class SCContentFilter
## Overview
Use a content filter to limit an `SCStream` objects output to only that matching your filter criteria. Retrieve the displays, apps, and windows that your app can capture from an instance of `SCShareableContent`.
## Topics
### Creating a filter
`init(desktopIndependentWindow: SCWindow)`
Creates a filter that captures only the specified window.
[`init(display: SCDisplay, including: [SCWindow])`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/init(display:including:))
Creates a filter that captures only specific windows from a display.
[`init(display: SCDisplay, excludingWindows: [SCWindow])`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/init(display:excludingwindows:))
Creates a filter that captures the contents of a display, excluding the specified windows.
[`init(display: SCDisplay, including: [SCRunningApplication], exceptingWindows: [SCWindow])`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/init(display:including:exceptingwindows:))
Creates a filter that captures a display, including only windows of the specified apps.
[`init(display: SCDisplay, excludingApplications: [SCRunningApplication], exceptingWindows: [SCWindow])`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/init(display:excludingapplications:exceptingwindows:))
Creates a filter that captures a display, excluding windows of the specified apps.
### Filter properties
`var contentRect: CGRect`
The size and location of the content to filter, in screen points.
`var pointPixelScale: Float`
The scaling factor used to translate screen points into pixels.
`var streamType: SCStreamType`
The type of the streaming content.
Deprecated
`enum SCStreamType`
The display type of the presented stream.
`var style: SCShareableContentStyle`
The display style of the sharable content.
### Instance Properties
`var includeMenuBar: Bool`
[`var includedApplications: [SCRunningApplication]`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/includedapplications)
[`var includedDisplays: [SCDisplay]`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/includeddisplays)
[`var includedWindows: [SCWindow]`](https://developer.apple.com/documentation/screencapturekit/sccontentfilter/includedwindows)
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scstreamdelegate
- ScreenCaptureKit
- SCStreamDelegate
Protocol
# SCStreamDelegate
A delegate protocol your app implements to respond to stream events.
protocol SCStreamDelegate : NSObjectProtocol
## Topics
### Responding to Presenter Overlay
`func outputVideoEffectDidStart(for: SCStream)`
Tells the delegate that Presenter Overlay started.
`func outputVideoEffectDidStop(for: SCStream)`
Tells the delegate that Presenter Overlay stopped.
### Responding to stream stoppage
`func stream(SCStream, didStopWithError: any Error)`
Tells the delegate that the stream stopped with an error.
### Instance Methods
`func streamDidBecomeActive(SCStream)`
`func streamDidBecomeInactive(SCStream)`
## Relationships
### Inherits From
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotmanager
- ScreenCaptureKit
- SCScreenshotManager
Class
# SCScreenshotManager
An instance for the capture of single frames from a stream.
class SCScreenshotManager
## Topics
### Individual frame capture
Captures a single frame from a stream as an image, using a filter.
Captures a single frame directly from a streams buffer, using a filter.
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotConfiguration`
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotconfiguration
- ScreenCaptureKit
- SCScreenshotConfiguration
Class
# SCScreenshotConfiguration
Mac CatalystmacOS
class SCScreenshotConfiguration
## Topics
### Instance Properties
`var contentType: UTTypeReference`
`var destinationRect: CGRect`
`var displayIntent: SCScreenshotConfiguration.DisplayIntent`
`var dynamicRange: SCScreenshotConfiguration.DynamicRange`
`var fileURL: URL?`
`var height: Int`
`var ignoreClipping: Bool`
`var ignoreShadows: Bool`
`var includeChildWindows: Bool`
`var showsCursor: Bool`
`var sourceRect: CGRect`
`var width: Int`
### Type Properties
[`class var supportedContentTypes: [UTType]`](https://developer.apple.com/documentation/screencapturekit/scscreenshotconfiguration/supportedcontenttypes)
### Enumerations
`enum DisplayIntent`
`enum DynamicRange`
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotoutput
- ScreenCaptureKit
- SCScreenshotOutput
Class
# SCScreenshotOutput
Mac CatalystmacOS
class SCScreenshotOutput
## Topics
### Instance Properties
`var fileURL: NSURL?`
`var hdrImage: CGImage?`
`var sdrImage: CGImage?`
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Content capture
`class SCStream`
An instance that represents a stream of shareable content.
`class SCStreamConfiguration`
An instance that provides the output configuration for a stream.
`class SCContentFilter`
An instance that filters the content a stream captures.
`protocol SCStreamDelegate`
A delegate protocol your app implements to respond to stream events.
`class SCScreenshotManager`
An instance for the capture of single frames from a stream.
`class SCScreenshotConfiguration`
---
# https://developer.apple.com/documentation/screencapturekit/scstreamoutput
- ScreenCaptureKit
- SCStreamOutput
Protocol
# SCStreamOutput
A delegate protocol your app implements to receive capture stream output events.
protocol SCStreamOutput : NSObjectProtocol
## Overview
The `SCStreamOutput` protocol provides a way to retrieve output from an `SCStream`.
After you call `startCapture(completionHandler:)`, the system provides frame data through the `stream(_:didOutputSampleBuffer:of:)` method. You can inspect the `CMSampleBuffer` to retrieve image data, and inspect the sample buffer for metadata about the frame.
## Topics
### Receiving stream output
`func stream(SCStream, didOutputSampleBuffer: CMSampleBuffer, of: SCStreamOutputType)`
Tells the delegate that a capture stream produced a frame.
## Relationships
### Inherits From
- `NSObjectProtocol`
## See Also
### Output processing
`enum SCStreamOutputType`
Constants that represent output types for a stream frame.
`struct SCStreamFrameInfo`
An instance that defines metadata keys for a stream frame.
`enum SCFrameStatus`
Status values for a frame from a stream.
---
# https://developer.apple.com/documentation/screencapturekit/scstreamoutputtype
- ScreenCaptureKit
- SCStreamOutputType
Enumeration
# SCStreamOutputType
Constants that represent output types for a stream frame.
enum SCStreamOutputType
## Topics
### Output types
`case screen`
An output type that represents a screen capture sample buffer.
`case audio`
An output type that represents an audio capture sample buffer.
### Enumeration Cases
`case microphone`
### Initializers
`init?(rawValue: Int)`
## Relationships
### Conforms To
- `BitwiseCopyable`
- `Equatable`
- `Hashable`
- `RawRepresentable`
- `Sendable`
- `SendableMetatype`
## See Also
### Output processing
`protocol SCStreamOutput`
A delegate protocol your app implements to receive capture stream output events.
`struct SCStreamFrameInfo`
An instance that defines metadata keys for a stream frame.
`enum SCFrameStatus`
Status values for a frame from a stream.
---
# https://developer.apple.com/documentation/screencapturekit/scstreamframeinfo
- ScreenCaptureKit
- SCStreamFrameInfo
Structure
# SCStreamFrameInfo
An instance that defines metadata keys for a stream frame.
struct SCStreamFrameInfo
## Overview
Use `SCStreamFrameInfo` keys to retrieve values from the dictionary of metadata attached to the sample buffers that a stream produces. For example, you can retrieve the display time, content scale, and scaling factor, as shown below:
// A dictionary of attachments for a streamed sample buffer.
let attachments: [SCStreamFrameInfo: Any] = // Retrieve attachments from a sample buffer.
let displayTime = attachments[.displayTime] as? UInt64 ?? 0
let contentScale = attachments[.contentScale] as? Double ?? 0.0
let scaleFactor = attachments[.scaleFactor] as? Double ?? 0.0
## Topics
### Frame information constants
`static let status: SCStreamFrameInfo`
A key to retrieve the status of a video frame.
`static let displayTime: SCStreamFrameInfo`
A key to retrieve the display time of a video frame.
`static let scaleFactor: SCStreamFrameInfo`
A key to retrieve the scale factor of a video frame.
`static let contentScale: SCStreamFrameInfo`
A key to retrieve the content scale of a video frame.
`static let contentRect: SCStreamFrameInfo`
A key to retrieve the content rectangle of a video frame.
`static let boundingRect: SCStreamFrameInfo`
A key to retrieve the bounding rectangle for a video frame.
`static let screenRect: SCStreamFrameInfo`
A key to retrieve the onscreen location of captured content.
`static let dirtyRects: SCStreamFrameInfo`
A key to retrieve the areas of a video frame that contain changes.
`static let presenterOverlayContentRect: SCStreamFrameInfo`
### Initializers
`init(rawValue: String)`
Creates a new instance with a raw value.
## Relationships
### Conforms To
- `Equatable`
- `Hashable`
- `RawRepresentable`
- `Sendable`
- `SendableMetatype`
## See Also
### Output processing
`protocol SCStreamOutput`
A delegate protocol your app implements to receive capture stream output events.
`enum SCStreamOutputType`
Constants that represent output types for a stream frame.
`enum SCFrameStatus`
Status values for a frame from a stream.
---
# https://developer.apple.com/documentation/screencapturekit/scframestatus
- ScreenCaptureKit
- SCFrameStatus
Enumeration
# SCFrameStatus
Status values for a frame from a stream.
enum SCFrameStatus
## Overview
You create a frame status by initializing it with the value you retrieve for the `status` from the sample buffers attachments dictionary.
if let statusRawValue = attachments[SCStreamFrameInfo.status] as? Int {
// Create status value.
let status = SCFrameStatus(rawValue: statusRawValue)
...
}
## Topics
### Status values
`case complete`
A status that indicates the system successfully generated a new frame.
`case idle`
A status that indicates the system didnt generate a new frame because the display didnt change.
`case blank`
A status that indicates the system didnt generate a new frame because the display is blank.
`case started`
A status that indicates the frame is the first one sent after the stream starts.
`case suspended`
A status that indicates the system didnt generate a new frame because you suspended updates.
`case stopped`
A status that indicates the frame is in a stopped state.
### Initializers
`init?(rawValue: Int)`
## Relationships
### Conforms To
- `BitwiseCopyable`
- `Equatable`
- `Hashable`
- `RawRepresentable`
- `Sendable`
- `SendableMetatype`
## See Also
### Output processing
`protocol SCStreamOutput`
A delegate protocol your app implements to receive capture stream output events.
`enum SCStreamOutputType`
Constants that represent output types for a stream frame.
`struct SCStreamFrameInfo`
An instance that defines metadata keys for a stream frame.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickerconfiguration-swift.struct
- ScreenCaptureKit
- SCContentSharingPickerConfiguration
Structure
# SCContentSharingPickerConfiguration
An instance for configuring the system content-sharing picker.
struct SCContentSharingPickerConfiguration
## Topics
### Initializers
`init()`
Initializes a picker configuration with default values.
### Control streaming selections
`var allowedPickerModes: SCContentSharingPickerMode`
The content-selection modes supported by the picker.
`var allowsChangingSelectedContent: Bool`
A Boolean value that indicates if the present stream can change to a different source.
A list of bundle IDs to exclude from the sharing picker.
A list of window IDs to exclude from the sharing picker.
## See Also
### System content-sharing picker
`class SCContentSharingPicker`
An instance of a picker presented by the operating system for managing frame-capture streams.
`struct SCContentSharingPickerMode`
Available modes for selecting streaming content from a picker presented by the operating system.
`protocol SCContentSharingPickerObserver`
An observer protocol your app implements to receive messages from the operating systems content picker.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickermode
- ScreenCaptureKit
- SCContentSharingPickerMode
Structure
# SCContentSharingPickerMode
Available modes for selecting streaming content from a picker presented by the operating system.
struct SCContentSharingPickerMode
## Topics
### Initializers
`init(rawValue: UInt)`
Initializes a sharing-picker mode.
### Picker selection modes
`static var multipleApplications: SCContentSharingPickerMode`
The mode allowing the selection of multiple applications through the presented picker.
`static var multipleWindows: SCContentSharingPickerMode`
The mode allowing the selection of multiple windows through the presented picker.
`static var singleApplication: SCContentSharingPickerMode`
The mode allowing the selection of a single application through the presented picker.
`static var singleDisplay: SCContentSharingPickerMode`
The mode allowing the selection of a single display through the presented picker.
`static var singleWindow: SCContentSharingPickerMode`
The mode allowing the selection of a single window through the presented picker.
## Relationships
### Conforms To
- `BitwiseCopyable`
- `Equatable`
- `ExpressibleByArrayLiteral`
- `OptionSet`
- `RawRepresentable`
- `Sendable`
- `SendableMetatype`
- `SetAlgebra`
## See Also
### System content-sharing picker
`class SCContentSharingPicker`
An instance of a picker presented by the operating system for managing frame-capture streams.
`struct SCContentSharingPickerConfiguration`
An instance for configuring the system content-sharing picker.
`protocol SCContentSharingPickerObserver`
An observer protocol your app implements to receive messages from the operating systems content picker.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickerobserver
- ScreenCaptureKit
- SCContentSharingPickerObserver
Protocol
# SCContentSharingPickerObserver
An observer protocol your app implements to receive messages from the operating systems content picker.
protocol SCContentSharingPickerObserver : NSObjectProtocol
## Topics
### Observing events
`func contentSharingPicker(SCContentSharingPicker, didCancelFor: SCStream?)`
Tells the observer that a sharing picker canceled selection for a stream.
**Required**
`func contentSharingPicker(SCContentSharingPicker, didUpdateWith: SCContentFilter, for: SCStream?)`
Tells the observer that a sharing picker updated the content filter for a stream.
### Observing errors
`func contentSharingPickerStartDidFailWithError(any Error)`
Tells the observer that a sharing picker was unable to start.
## Relationships
### Inherits From
- `NSObjectProtocol`
## See Also
### System content-sharing picker
`class SCContentSharingPicker`
An instance of a picker presented by the operating system for managing frame-capture streams.
`struct SCContentSharingPickerConfiguration`
An instance for configuring the system content-sharing picker.
`struct SCContentSharingPickerMode`
Available modes for selecting streaming content from a picker presented by the operating system.
---
# https://developer.apple.com/documentation/screencapturekit/scstreamerrordomain
- ScreenCaptureKit
- SCStreamErrorDomain
Global Variable
# SCStreamErrorDomain
A string representation of the error domain.
let SCStreamErrorDomain: String
## See Also
### Stream errors
`struct SCStreamError`
An instance representing a ScreenCaptureKit framework error.
---
# https://developer.apple.com/documentation/screencapturekit/scstreamerror
- ScreenCaptureKit
- SCStreamError
Structure
# SCStreamError
An instance representing a ScreenCaptureKit framework error.
struct SCStreamError
## Overview
## Topics
### Error inspection
Error code constants for framework operations.
`enum Code`
Codes for user cancellation events and errors that can occur in ScreenCaptureKit.
`static var errorDomain: String`
## Relationships
### Conforms To
- `CustomNSError`
- `Equatable`
- `Error`
- `Hashable`
- `Sendable`
- `SendableMetatype`
## See Also
### Stream errors
`let SCStreamErrorDomain: String`
A string representation of the error domain.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker).
---
# https://developer.apple.com/documentation/screencapturekit/capturing-screen-content-in-macos)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent)
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo)
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle)
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay)
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow)
---
# https://developer.apple.com/documentation/screencapturekit/scstream)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamconfiguration)
---
# https://developer.apple.com/documentation/screencapturekit/sccontentfilter)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamdelegate)
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotmanager)
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotconfiguration)
---
# https://developer.apple.com/documentation/screencapturekit/scscreenshotoutput)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamoutput)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamoutputtype)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamframeinfo)
---
# https://developer.apple.com/documentation/screencapturekit/scframestatus)
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker)
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickerconfiguration-swift.struct)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickermode)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpickerobserver)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstreamerrordomain)
---
# https://developer.apple.com/documentation/screencapturekit/scstreamerror)
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/contentrect
- ScreenCaptureKit
- SCShareableContentInfo
- contentRect
Instance Property
# contentRect
The size and location of content for the stream.
var contentRect: CGRect { get }
## See Also
### Shared content properties
`var pointPixelScale: Float`
The scaling from points to output pixel resolution for the stream.
`var style: SCShareableContentStyle`
The current presentation style of the stream.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/pointpixelscale
- ScreenCaptureKit
- SCShareableContentInfo
- pointPixelScale
Instance Property
# pointPixelScale
The scaling from points to output pixel resolution for the stream.
var pointPixelScale: Float { get }
## See Also
### Shared content properties
`var contentRect: CGRect`
The size and location of content for the stream.
`var style: SCShareableContentStyle`
The current presentation style of the stream.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/style
- ScreenCaptureKit
- SCShareableContentInfo
- style
Instance Property
# style
The current presentation style of the stream.
var style: SCShareableContentStyle { get }
## See Also
### Shared content properties
`var contentRect: CGRect`
The size and location of content for the stream.
`var pointPixelScale: Float`
The scaling from points to output pixel resolution for the stream.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/contentrect)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/pointpixelscale)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentinfo/style)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/processid
- ScreenCaptureKit
- SCRunningApplication
- processID
Instance Property
# processID
The system process identifier of the app.
var processID: pid_t { get }
## See Also
### Inspecting an app
`var bundleIdentifier: String`
The unique bundle identifier of the app.
`var applicationName: String`
The display name of the app.
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/bundleidentifier
- ScreenCaptureKit
- SCRunningApplication
- bundleIdentifier
Instance Property
# bundleIdentifier
The unique bundle identifier of the app.
var bundleIdentifier: String { get }
## See Also
### Inspecting an app
`var processID: pid_t`
The system process identifier of the app.
`var applicationName: String`
The display name of the app.
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/applicationname
- ScreenCaptureKit
- SCRunningApplication
- applicationName
Instance Property
# applicationName
The display name of the app.
var applicationName: String { get }
## See Also
### Inspecting an app
`var processID: pid_t`
The system process identifier of the app.
`var bundleIdentifier: String`
The unique bundle identifier of the app.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent).
---
# https://developer.apple.com/documentation/screencapturekit/sccontentfilter).
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/processid)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/bundleidentifier)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scrunningapplication/applicationname)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/displayid
- ScreenCaptureKit
- SCDisplay
- displayID
Instance Property
# displayID
The Core Graphics display identifier.
var displayID: CGDirectDisplayID { get }
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/frame
- ScreenCaptureKit
- SCDisplay
- frame
Instance Property
# frame
The frame of the display.
var frame: CGRect { get }
## See Also
### Accessing dimensions
`var width: Int`
The width of the display in points.
`var height: Int`
The height of the display in points.
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/width
- ScreenCaptureKit
- SCDisplay
- width
Instance Property
# width
The width of the display in points.
var width: Int { get }
## See Also
### Accessing dimensions
`var frame: CGRect`
The frame of the display.
`var height: Int`
The height of the display in points.
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/height
- ScreenCaptureKit
- SCDisplay
- height
Instance Property
# height
The height of the display in points.
var height: Int { get }
## See Also
### Accessing dimensions
`var frame: CGRect`
The frame of the display.
`var width: Int`
The width of the display in points.
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/displayid)
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/frame)
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/width)
---
# https://developer.apple.com/documentation/screencapturekit/scdisplay/height)
---
# https://developer.apple.com/documentation/screencapturekit/scstream/init(filter:configuration:delegate:)
#app-main)
- ScreenCaptureKit
- SCStream
- init(filter:configuration:delegate:)
Initializer
# init(filter:configuration:delegate:)
Creates a stream with a content filter and configuration.
init(
filter contentFilter: SCContentFilter,
configuration streamConfig: SCStreamConfiguration,
delegate: (any SCStreamDelegate)?
)
## Parameters
`contentFilter`
The content to capture.
`streamConfig`
The configuration to apply to the stream.
`delegate`
An optional object that responds to stream events.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/updateconfiguration(_:completionhandler:)
#app-main)
- ScreenCaptureKit
- SCStream
- updateConfiguration(\_:completionHandler:)
Instance Method
# updateConfiguration(\_:completionHandler:)
Updates the stream with a new configuration.
func updateConfiguration(
_ streamConfig: SCStreamConfiguration,
)
func updateConfiguration(_ streamConfig: SCStreamConfiguration) async throws
## Parameters
`streamConfig`
An object that provides the updated stream configuration.
`completionHandler`
A completion handler the system calls when this method completes. It includes an error if the update fails.
## See Also
### Updating stream configuration
Updates the stream by applying a new content filter.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/updatecontentfilter(_:completionhandler:)
#app-main)
- ScreenCaptureKit
- SCStream
- updateContentFilter(\_:completionHandler:)
Instance Method
# updateContentFilter(\_:completionHandler:)
Updates the stream by applying a new content filter.
func updateContentFilter(
_ contentFilter: SCContentFilter,
)
func updateContentFilter(_ contentFilter: SCContentFilter) async throws
## Parameters
`contentFilter`
The content filter to apply.
`completionHandler`
A completion handler the system calls when this method completes. It includes an error if the update fails.
## See Also
### Updating stream configuration
Updates the stream with a new configuration.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/addstreamoutput(_:type:samplehandlerqueue:)
#app-main)
- ScreenCaptureKit
- SCStream
- addStreamOutput(\_:type:sampleHandlerQueue:)
Instance Method
# addStreamOutput(\_:type:sampleHandlerQueue:)
Adds a destination that receives the stream output.
func addStreamOutput(
_ output: any SCStreamOutput,
type: SCStreamOutputType,
sampleHandlerQueue: dispatch_queue_t?
) throws
## Parameters
`output`
The object that conforms to the stream output protocol.
`type`
The stream output type.
`sampleHandlerQueue`
The queue that receives the stream output.
## Discussion
Use this method to attach an object that conforms to `SCStreamOutput` to receive stream content. Optionally, provide a `DispatchQueue` to send output to a queue thats responsible for processing the output.
## See Also
### Adding and removing stream output
`func removeStreamOutput(any SCStreamOutput, type: SCStreamOutputType) throws`
Removes a destination from receiving stream output.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/removestreamoutput(_:type:)
#app-main)
- ScreenCaptureKit
- SCStream
- removeStreamOutput(\_:type:)
Instance Method
# removeStreamOutput(\_:type:)
Removes a destination from receiving stream output.
func removeStreamOutput(
_ output: any SCStreamOutput,
type: SCStreamOutputType
) throws
## Parameters
`output`
The object to remove that conforms to the stream output protocol.
`type`
The stream output type.
## See Also
### Adding and removing stream output
`func addStreamOutput(any SCStreamOutput, type: SCStreamOutputType, sampleHandlerQueue: dispatch_queue_t?) throws`
Adds a destination that receives the stream output.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/addrecordingoutput(_:)
#app-main)
- ScreenCaptureKit
- SCStream
- addRecordingOutput(\_:)
Instance Method
# addRecordingOutput(\_:)
func addRecordingOutput(_ recordingOutput: SCRecordingOutput) throws
## See Also
### Adding and removing recording output
`func removeRecordingOutput(SCRecordingOutput) throws`
`class SCRecordingOutput`
---
# https://developer.apple.com/documentation/screencapturekit/scstream/removerecordingoutput(_:)
#app-main)
- ScreenCaptureKit
- SCStream
- removeRecordingOutput(\_:)
Instance Method
# removeRecordingOutput(\_:)
func removeRecordingOutput(_ recordingOutput: SCRecordingOutput) throws
## See Also
### Adding and removing recording output
`func addRecordingOutput(SCRecordingOutput) throws`
`class SCRecordingOutput`
---
# https://developer.apple.com/documentation/screencapturekit/screcordingoutput
- ScreenCaptureKit
- SCRecordingOutput
Class
# SCRecordingOutput
class SCRecordingOutput
## Topics
### Creating a recording output
`init(configuration: SCRecordingOutputConfiguration, delegate: any SCRecordingOutputDelegate)`
`class SCRecordingOutputConfiguration`
`protocol SCRecordingOutputDelegate`
### Configuring the recording output
`var recordedDuration: CMTime`
`var recordedFileSize: Int`
## Relationships
### Inherits From
- `NSObject`
### Conforms To
- `CVarArg`
- `CustomDebugStringConvertible`
- `CustomStringConvertible`
- `Equatable`
- `Hashable`
- `NSObjectProtocol`
## See Also
### Adding and removing recording output
`func addRecordingOutput(SCRecordingOutput) throws`
`func removeRecordingOutput(SCRecordingOutput) throws`
---
# https://developer.apple.com/documentation/screencapturekit/scstream/startcapture(completionhandler:)
#app-main)
- ScreenCaptureKit
- SCStream
- startCapture(completionHandler:)
Instance Method
# startCapture(completionHandler:)
Starts the stream with a call\#parameters)
`completionHandler`
A completion handler that provides an error if the stream fails to start.
## See Also
### Starting and stopping a stream
Stops the stream.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/stopcapture(completionhandler:)
#app-main)
- ScreenCaptureKit
- SCStream
- stopCapture(completionHandler:)
Instance Method
# stopCapture(completionHandler:)
Stops the stream.
func stopCapture() async throws
## Parameters
`completionHandler`
A completion handler that provides an error if the stream fails to stop.
## See Also
### Starting and stopping a stream
Starts the stream with a call
---
# https://developer.apple.com/documentation/screencapturekit/scstream/synchronizationclock
- ScreenCaptureKit
- SCStream
- synchronizationClock
Instance Property
# synchronizationClock
A clock to use for output synchronization.
var synchronizationClock: CMClock? { get }
## Discussion
The synchronization clock provides the timebase for sample buffers that the stream outputs. Use it to synchronize with the clocks of other media sources, such as the `synchronizationClock` of `AVCaptureSession`.
---
# https://developer.apple.com/documentation/screencapturekit/scstream/init(filter:configuration:delegate:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/updateconfiguration(_:completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/updatecontentfilter(_:completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/addstreamoutput(_:type:samplehandlerqueue:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/removestreamoutput(_:type:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/addrecordingoutput(_:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/removerecordingoutput(_:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/screcordingoutput)
---
# https://developer.apple.com/documentation/screencapturekit/scstream/startcapture(completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/stopcapture(completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scstream/synchronizationclock)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays
- ScreenCaptureKit
- SCShareableContent
- displays
Instance Property
# displays
The displays available for capture.
var displays: [SCDisplay] { get }
## See Also
### Inspecting shareable content
[`var windows: [SCWindow]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows)
The windows available for capture.
[`var applications: [SCRunningApplication]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/applications)
The apps available for capture.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows
- ScreenCaptureKit
- SCShareableContent
- windows
Instance Property
# windows
The windows available for capture.
var windows: [SCWindow] { get }
## See Also
### Inspecting shareable content
[`var displays: [SCDisplay]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays)
The displays available for capture.
[`var applications: [SCRunningApplication]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/applications)
The apps available for capture.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/applications
- ScreenCaptureKit
- SCShareableContent
- applications
Instance Property
# applications
The apps available for capture.
var applications: [SCRunningApplication] { get }
## See Also
### Inspecting shareable content
[`var windows: [SCWindow]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows)
The windows available for capture.
[`var displays: [SCDisplay]`](https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays)
The displays available for capture.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getwithcompletionhandler(_:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- getWithCompletionHandler(\_:)
Type Method
# getWithCompletionHandler(\_:)
Retrieves the displays, apps, and windows that your app can capture.
class var current: SCShareableContent { get async throws }
## Parameters
`completionHandler`
A callback the system invokes with the shareable content, or an error if a failure occurs.
## Discussion
Use this method to retrieve the onscreen content that your app can capture. If the call is successful, the system returns the shareable content to the completion handler; otherwise, it returns an error that describes the failure.
## See Also
### Retrieving shareable content
Retrieves the displays, apps, and windows that match your criteria.
Retrieves the displays, apps, and windows that are in front of the specified window.
Retrieves the displays, apps, and windows that are behind the specified window.
Retrieves any available sharable content information that matches the provided filter.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonly:completionhandler:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- getExcludingDesktopWindows(\_:onScreenWindowsOnly:completionHandler:)
Type Method
# getExcludingDesktopWindows(\_:onScreenWindowsOnly:completionHandler:)
Retrieves the displays, apps, and windows that match your criteria.
class func getExcludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnly: Bool,
)
class func excludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnly: Bool
## Parameters
`excludeDesktopWindows`
A Boolean value that indicates whether to exclude desktop windows like Finder, Dock, and Desktop from the set of shareable content.
`onScreenWindowsOnly`
A Boolean value that indicates whether to include only onscreen windows in the set of shareable content.
`completionHandler`
A callback the system invokes with the shareable content, or an error if a failure occurs.
## Discussion
Use this method to retrieve the onscreen content matching your filtering criteria. If the call is successful, the system passes an `SCShareableContent` instance to the completion handler; otherwise, it returns an error that describes the failure.
## See Also
### Retrieving shareable content
Retrieves the displays, apps, and windows that your app can capture.
Retrieves the displays, apps, and windows that are in front of the specified window.
Retrieves the displays, apps, and windows that are behind the specified window.
Retrieves any available sharable content information that matches the provided filter.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonlyabove:completionhandler:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- getExcludingDesktopWindows(\_:onScreenWindowsOnlyAbove:completionHandler:)
Type Method
# getExcludingDesktopWindows(\_:onScreenWindowsOnlyAbove:completionHandler:)
Retrieves the displays, apps, and windows that are in front of the specified window.
class func getExcludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnlyAbove window: SCWindow,
)
class func excludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnlyAbove window: SCWindow
## Parameters
`excludeDesktopWindows`
A Boolean value that indicates whether to exclude desktop windows like Finder, Dock, and Desktop from the set of shareable content.
`window`
The window above which to retrieve shareable content.
`completionHandler`
A callback the system invokes with the shareable content, or an error if a failure occurs.
## Discussion
Use this method to retrieve the onscreen content matching your filtering criteria. If the call is successful, the system passes an `SCShareableContent` instance to the completion handler; otherwise, it returns an error that describes the failure.
## See Also
### Retrieving shareable content
Retrieves the displays, apps, and windows that your app can capture.
Retrieves the displays, apps, and windows that match your criteria.
Retrieves the displays, apps, and windows that are behind the specified window.
Retrieves any available sharable content information that matches the provided filter.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonlybelow:completionhandler:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- getExcludingDesktopWindows(\_:onScreenWindowsOnlyBelow:completionHandler:)
Type Method
# getExcludingDesktopWindows(\_:onScreenWindowsOnlyBelow:completionHandler:)
Retrieves the displays, apps, and windows that are behind the specified window.
class func getExcludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnlyBelow window: SCWindow,
)
class func excludingDesktopWindows(
_ excludeDesktopWindows: Bool,
onScreenWindowsOnlyBelow window: SCWindow
## Parameters
`excludeDesktopWindows`
A Boolean value that indicates whether to exclude desktop windows from the set of shareable content.
`window`
The window above which to retrieve shareable content.
`completionHandler`
A callback the system invokes with the shareable content, or an error if a failure occurs.
## Discussion
Use this method to retrieve the onscreen content matching your filtering criteria. If the call is successful, the system passes an `SCShareableContent` instance to the completion handler; otherwise, it returns an error that describes the failure.
## See Also
### Retrieving shareable content
Retrieves the displays, apps, and windows that your app can capture.
Retrieves the displays, apps, and windows that match your criteria.
Retrieves the displays, apps, and windows that are in front of the specified window.
Retrieves any available sharable content information that matches the provided filter.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/info(for:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- info(for:)
Type Method
# info(for:)
Retrieves any available sharable content information that matches the provided filter.
## Parameters
`filter`
The filter to match current sharable content against.
## Return Value
The sharable content matching the filter, or `nil` if none is found.
## See Also
### Retrieving shareable content
Retrieves the displays, apps, and windows that your app can capture.
Retrieves the displays, apps, and windows that match your criteria.
Retrieves the displays, apps, and windows that are in front of the specified window.
Retrieves the displays, apps, and windows that are behind the specified window.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getcurrentprocessshareablecontent(completionhandler:)
#app-main)
- ScreenCaptureKit
- SCShareableContent
- getCurrentProcessShareableContent(completionHandler:)
Type Method
# getCurrentProcessShareableContent(completionHandler:)
class var currentProcess: SCShareableContent { get async throws }
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays),
,#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows),
,#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/applications)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getwithcompletionhandler(_:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonly:completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonlyabove:completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getexcludingdesktopwindows(_:onscreenwindowsonlybelow:completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/info(for:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/windows)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/displays)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontent/getcurrentprocessshareablecontent(completionhandler:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/windowid
- ScreenCaptureKit
- SCWindow
- windowID
Instance Property
# windowID
The Core Graphics window identifier.
var windowID: CGWindowID { get }
## See Also
### Identifying windows
`var title: String?`
The string that displays in a windows title bar.
`var owningApplication: SCRunningApplication?`
The app that owns the window.
`var windowLayer: Int`
The layer of the window relative to other windows.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/title
- ScreenCaptureKit
- SCWindow
- title
Instance Property
# title
The string that displays in a windows title bar.
var title: String? { get }
## See Also
### Identifying windows
`var windowID: CGWindowID`
The Core Graphics window identifier.
`var owningApplication: SCRunningApplication?`
The app that owns the window.
`var windowLayer: Int`
The layer of the window relative to other windows.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/owningapplication
- ScreenCaptureKit
- SCWindow
- owningApplication
Instance Property
# owningApplication
The app that owns the window.
var owningApplication: SCRunningApplication? { get }
## See Also
### Identifying windows
`var windowID: CGWindowID`
The Core Graphics window identifier.
`var title: String?`
The string that displays in a windows title bar.
`var windowLayer: Int`
The layer of the window relative to other windows.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/windowlayer
- ScreenCaptureKit
- SCWindow
- windowLayer
Instance Property
# windowLayer
The layer of the window relative to other windows.
var windowLayer: Int { get }
## See Also
### Identifying windows
`var windowID: CGWindowID`
The Core Graphics window identifier.
`var title: String?`
The string that displays in a windows title bar.
`var owningApplication: SCRunningApplication?`
The app that owns the window.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/frame
- ScreenCaptureKit
- SCWindow
- frame
Instance Property
# frame
A rectangle the represents the frame of the window within a display.
var frame: CGRect { get }
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/isonscreen
- ScreenCaptureKit
- SCWindow
- isOnScreen
Instance Property
# isOnScreen
A Boolean value that indicates whether the window is on screen.
var isOnScreen: Bool { get }
## Discussion
This value represents the macOS window servers onscreen status of the window.
## See Also
### Determining visibility
`var isActive: Bool`
A Boolean value that indicates if the window is currently streaming.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/isactive
- ScreenCaptureKit
- SCWindow
- isActive
Instance Property
# isActive
A Boolean value that indicates if the window is currently streaming.
var isActive: Bool { get }
## Discussion
When this value is `true`, the window is currently streaming, even if offscreen.
## See Also
### Determining visibility
`var isOnScreen: Bool`
A Boolean value that indicates whether the window is on screen.
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/windowid)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/title)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/owningapplication)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/windowlayer)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/frame)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/isonscreen)
---
# https://developer.apple.com/documentation/screencapturekit/scwindow/isactive)
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/shared
- ScreenCaptureKit
- SCContentSharingPicker
- shared
Type Property
# shared
The system-provided picker UI instance for capturing display and audio content from someones Mac.
class var shared: SCContentSharingPicker { get }
## Discussion
The picker gives a person control over what information on their Mac they wish to let your app view or record such as specific applications, displays, and windows.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/isactive
- ScreenCaptureKit
- SCContentSharingPicker
- isActive
Instance Property
# isActive
A Boolean value that indicates if the picker is active.
var isActive: Bool { get set }
## Discussion
When this value is `true`, the capture stream picker is active, available for managing capture. The default value is `false`.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/setconfiguration(_:for:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- setConfiguration(\_:for:)
Instance Method
# setConfiguration(\_:for:)
Sets the configuration for the content capture picker for a capture stream, providing allowed selection modes and content excluded from selection.
func setConfiguration(
_ configuration: SCContentSharingPickerConfiguration?,
for stream: SCStream
)
## Parameters
`configuration`
The configuration to set for the given capture stream. When this value is `nil`, changes the stream configuration to use `defaultConfiguration`.
`stream`
The capture stream to set a configuration for. When this value is `nil`, applies to all currently active streams.
## See Also
### Stream configuration
`var configuration: SCContentSharingPickerConfiguration?`
Sets the configuration for the content capture picker for all streams, providing allowed selection modes and content excluded from selection.
`var defaultConfiguration: SCContentSharingPickerConfiguration`
The default configuration to use for the content capture picker.
`var maximumStreamCount: Int?`
The maximum number of streams the content capture picker allows.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/configuration
- ScreenCaptureKit
- SCContentSharingPicker
- configuration
Instance Property
# configuration
Sets the configuration for the content capture picker for all streams, providing allowed selection modes and content excluded from selection.
var configuration: SCContentSharingPickerConfiguration? { get set }
## See Also
### Stream configuration
`func setConfiguration(SCContentSharingPickerConfiguration?, for: SCStream)`
Sets the configuration for the content capture picker for a capture stream, providing allowed selection modes and content excluded from selection.
`var defaultConfiguration: SCContentSharingPickerConfiguration`
The default configuration to use for the content capture picker.
`var maximumStreamCount: Int?`
The maximum number of streams the content capture picker allows.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/defaultconfiguration-94q2b
- ScreenCaptureKit
- SCContentSharingPicker
- defaultConfiguration
Instance Property
# defaultConfiguration
The default configuration to use for the content capture picker.
var defaultConfiguration: SCContentSharingPickerConfiguration { get set }
## See Also
### Stream configuration
`func setConfiguration(SCContentSharingPickerConfiguration?, for: SCStream)`
Sets the configuration for the content capture picker for a capture stream, providing allowed selection modes and content excluded from selection.
`var configuration: SCContentSharingPickerConfiguration?`
Sets the configuration for the content capture picker for all streams, providing allowed selection modes and content excluded from selection.
`var maximumStreamCount: Int?`
The maximum number of streams the content capture picker allows.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/maximumstreamcount-2kuaa
- ScreenCaptureKit
- SCContentSharingPicker
- maximumStreamCount
Instance Property
# maximumStreamCount
The maximum number of streams the content capture picker allows.
var maximumStreamCount: Int? { get set }
## Discussion
The default value is `1`.
## See Also
### Stream configuration
`func setConfiguration(SCContentSharingPickerConfiguration?, for: SCStream)`
Sets the configuration for the content capture picker for a capture stream, providing allowed selection modes and content excluded from selection.
`var configuration: SCContentSharingPickerConfiguration?`
Sets the configuration for the content capture picker for all streams, providing allowed selection modes and content excluded from selection.
`var defaultConfiguration: SCContentSharingPickerConfiguration`
The default configuration to use for the content capture picker.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/add(_:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- add(\_:)
Instance Method
# add(\_:)
Adds an observer instance to notify of changes in the content-sharing picker.
func add(_ observer: any SCContentSharingPickerObserver)
## Parameters
`observer`
The observer instance to send notifications to.
## See Also
### Manage observers
`func remove(any SCContentSharingPickerObserver)`
Removes an observer instance from the content-sharing picker.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/remove(_:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- remove(\_:)
Instance Method
# remove(\_:)
Removes an observer instance from the content-sharing picker.
func remove(_ observer: any SCContentSharingPickerObserver)
## Parameters
`observer`
The observer instance to remove.
## See Also
### Manage observers
`func add(any SCContentSharingPickerObserver)`
Adds an observer instance to notify of changes in the content-sharing picker.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present()
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- present()
Instance Method
# present()
Displays the picker with no active selection for capture.
func present()
## See Also
### Picker display
`func present(for: SCStream)`
Displays the picker with an already running capture stream.
`func present(using: SCShareableContentStyle)`
Displays the picker for a single type of capture selection.
`func present(for: SCStream, using: SCShareableContentStyle)`
Displays the picker with an existing capture stream, allowing for a single type of capture selection.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(for:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- present(for:)
Instance Method
# present(for:)
Displays the picker with an already running capture stream.
func present(for stream: SCStream)
## Parameters
`stream`
The capture stream to display in the picker.
## See Also
### Picker display
`func present()`
Displays the picker with no active selection for capture.
`func present(using: SCShareableContentStyle)`
Displays the picker for a single type of capture selection.
`func present(for: SCStream, using: SCShareableContentStyle)`
Displays the picker with an existing capture stream, allowing for a single type of capture selection.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(using:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- present(using:)
Instance Method
# present(using:)
Displays the picker for a single type of capture selection.
func present(using contentStyle: SCShareableContentStyle)
## Parameters
`contentStyle`
The type of streaming content selection allowed through the presented picker.
## See Also
### Picker display
`func present()`
Displays the picker with no active selection for capture.
`func present(for: SCStream)`
Displays the picker with an already running capture stream.
`func present(for: SCStream, using: SCShareableContentStyle)`
Displays the picker with an existing capture stream, allowing for a single type of capture selection.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(for:using:)
#app-main)
- ScreenCaptureKit
- SCContentSharingPicker
- present(for:using:)
Instance Method
# present(for:using:)
Displays the picker with an existing capture stream, allowing for a single type of capture selection.
func present(
for stream: SCStream,
using contentStyle: SCShareableContentStyle
)
## Parameters
`stream`
The stream to display in the picker.
`contentStyle`
The type of streaming content selection allowed through the presented picker.
## See Also
### Picker display
`func present()`
Displays the picker with no active selection for capture.
`func present(for: SCStream)`
Displays the picker with an already running capture stream.
`func present(using: SCShareableContentStyle)`
Displays the picker for a single type of capture selection.
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/shared)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/isactive)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/setconfiguration(_:for:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/configuration)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/defaultconfiguration-94q2b)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/maximumstreamcount-2kuaa)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/add(_:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/remove(_:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present())
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(for:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(using:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/sccontentsharingpicker/present(for:using:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/application
- ScreenCaptureKit
- SCShareableContentStyle
- SCShareableContentStyle.application
Case
# SCShareableContentStyle.application
The stream is currently presenting one or more applications.
case application
## See Also
### Content styles
`case display`
The stream is currently presenting a complete display.
`case none`
The stream isnt currently presenting any content.
`case window`
The stream is currently presenting one or more windows.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/display
- ScreenCaptureKit
- SCShareableContentStyle
- SCShareableContentStyle.display
Case
# SCShareableContentStyle.display
The stream is currently presenting a complete display.
case display
## See Also
### Content styles
`case application`
The stream is currently presenting one or more applications.
`case none`
The stream isnt currently presenting any content.
`case window`
The stream is currently presenting one or more windows.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/none
- ScreenCaptureKit
- SCShareableContentStyle
- SCShareableContentStyle.none
Case
# SCShareableContentStyle.none
The stream isnt currently presenting any content.
case none
## See Also
### Content styles
`case application`
The stream is currently presenting one or more applications.
`case display`
The stream is currently presenting a complete display.
`case window`
The stream is currently presenting one or more windows.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/window
- ScreenCaptureKit
- SCShareableContentStyle
- SCShareableContentStyle.window
Case
# SCShareableContentStyle.window
The stream is currently presenting one or more windows.
case window
## See Also
### Content styles
`case application`
The stream is currently presenting one or more applications.
`case display`
The stream is currently presenting a complete display.
`case none`
The stream isnt currently presenting any content.
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/init(rawvalue:)
#app-main)
- ScreenCaptureKit
- SCShareableContentStyle
- init(rawValue:)
Initializer
# init(rawValue:)
init?(rawValue: Int)
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/application)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/display)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/none)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/window)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---
# https://developer.apple.com/documentation/screencapturekit/scshareablecontentstyle/init(rawvalue:))
)#app-main)
# The page you're looking for can't be found.
Search developer.apple.comSearch Icon
---