---
title: RPScreenRecorder
framework: replaykit
role: symbol
role_heading: Class
path: replaykit/rpscreenrecorder
---

# RPScreenRecorder

The shared recorder object that provides the ability to record audio and video of your app.

## Declaration

```swift
class RPScreenRecorder
```

## Overview

Overview Apps on a user’s device can share the recording function, with each app having its own instance of  RPScreenRecorder. Your app can record the audio and video inside of the app, along with user commentary through the microphone. You get a reference to the recorder through the shared() function and use it to implement start-and-stop recording functionality. You can present a user interface (view controller) where a user can trim and preview recordings, and share them with other users. Only one app at a time can use the recorder on the user’s device. Your app can’t record video from AVPlayer.

## Topics

### Accessing the Shared Recorder

- [shared()](replaykit/rpscreenrecorder/shared().md)

### Inspecting a Screen Recorder

- [isAvailable](replaykit/rpscreenrecorder/isavailable.md)
- [isRecording](replaykit/rpscreenrecorder/isrecording.md)
- [isMicrophoneEnabled](replaykit/rpscreenrecorder/ismicrophoneenabled.md)
- [isCameraEnabled](replaykit/rpscreenrecorder/iscameraenabled.md)
- [cameraPreviewView](replaykit/rpscreenrecorder/camerapreviewview.md)
- [cameraPosition](replaykit/rpscreenrecorder/cameraposition.md)
- [RPCameraPosition](replaykit/rpcameraposition.md)
- [delegate](replaykit/rpscreenrecorder/delegate.md)
- [RPScreenRecorderDelegate](replaykit/rpscreenrecorderdelegate.md)

### Controlling App Recording

- [startRecording(handler:)](replaykit/rpscreenrecorder/startrecording(handler:).md)
- [stopRecording(handler:)](replaykit/rpscreenrecorder/stoprecording(handler:).md)
- [stopRecording(withOutput:completionHandler:)](replaykit/rpscreenrecorder/stoprecording(withoutput:completionhandler:).md)
- [startCapture(handler:completionHandler:)](replaykit/rpscreenrecorder/startcapture(handler:completionhandler:).md)
- [RPSampleBufferType](replaykit/rpsamplebuffertype.md)
- [stopCapture(handler:)](replaykit/rpscreenrecorder/stopcapture(handler:).md)
- [discardRecording(handler:)](replaykit/rpscreenrecorder/discardrecording(handler:).md)
- [startRecording(withMicrophoneEnabled:handler:)](replaykit/rpscreenrecorder/startrecording(withmicrophoneenabled:handler:).md)

### Performing Clip Recording

- [startClipBuffering(completionHandler:)](replaykit/rpscreenrecorder/startclipbuffering(completionhandler:).md)
- [stopClipBuffering(completionHandler:)](replaykit/rpscreenrecorder/stopclipbuffering(completionhandler:).md)
- [exportClip(to:duration:completionHandler:)](replaykit/rpscreenrecorder/exportclip(to:duration:completionhandler:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Replay Sharing

- [Recording and Streaming Your macOS App](replaykit/recording-and-streaming-your-macos-app.md)
- [RPPreviewViewController](replaykit/rppreviewviewcontroller.md)
