<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 18.2.0 -",
    "macOS: 12.3.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ScreenCaptureKit",
  "identifier" : "/documentation/ScreenCaptureKit/SCStream",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ScreenCaptureKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCStream"
  },
  "title" : "SCStream"
}
-->

# 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`](/documentation/ScreenCaptureKit/SCContentFilter) and an [`SCStreamConfiguration`](/documentation/ScreenCaptureKit/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:configuration:delegate:)`](/documentation/ScreenCaptureKit/SCStream/init(filter:configuration:delegate:))

Creates a stream with a content filter and configuration.

### Updating stream configuration

[`updateConfiguration(_:completionHandler:)`](/documentation/ScreenCaptureKit/SCStream/updateConfiguration(_:completionHandler:))

Updates the stream with a new configuration.

[`updateContentFilter(_:completionHandler:)`](/documentation/ScreenCaptureKit/SCStream/updateContentFilter(_:completionHandler:))

Updates the stream by applying a new content filter.

### Adding and removing stream output

[`addStreamOutput(_:type:sampleHandlerQueue:)`](/documentation/ScreenCaptureKit/SCStream/addStreamOutput(_:type:sampleHandlerQueue:))

Adds a destination that receives the stream output.

[`removeStreamOutput(_:type:)`](/documentation/ScreenCaptureKit/SCStream/removeStreamOutput(_:type:))

Removes a destination from receiving stream output.

### Adding and removing recording output

[`addRecordingOutput(_:)`](/documentation/ScreenCaptureKit/SCStream/addRecordingOutput(_:))

[`removeRecordingOutput(_:)`](/documentation/ScreenCaptureKit/SCStream/removeRecordingOutput(_:))

[`SCRecordingOutput`](/documentation/ScreenCaptureKit/SCRecordingOutput)

### Starting and stopping a stream

[`startCapture(completionHandler:)`](/documentation/ScreenCaptureKit/SCStream/startCapture(completionHandler:))

Starts the stream with a callback to indicate whether it successfully starts.

[`stopCapture(completionHandler:)`](/documentation/ScreenCaptureKit/SCStream/stopCapture(completionHandler:))

Stops the stream.

### Stream synchronization

[`synchronizationClock`](/documentation/ScreenCaptureKit/SCStream/synchronizationClock)

A clock to use for output synchronization.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)