swift 屏幕录制

步骤 1:导入 ReplayKit

swift 复制代码
import ReplayKit

步骤 2:开始录屏

swift 复制代码
let screenRecorder = RPScreenRecorder.shared()
// 麦克风或系统音频
screenRecorder.isMicrophoneEnabled = true

func startRecording() {
    guard screenRecorder.isAvailable else {
        print("Screen recording is not available on this device.")
        return
    }

    screenRecorder.startRecording { error in
        if let error = error {
            print("Error starting recording: \(error.localizedDescription)")
        } else {
            print("Recording started successfully.")
        }
    }
}

步骤 3:停止录屏

swift 复制代码
func stopRecording() {
    screenRecorder.stopRecording { previewController, error in
        if let error = error {
            print("Error stopping recording: \(error.localizedDescription)")
        } else {
            print("Recording stopped successfully.")
        }

        // 可选择展示预览界面
        if let previewController = previewController {
            previewController.previewControllerDelegate = self
            self.present(previewController, animated: true)
        }
    }
}
extension YourViewController: RPPreviewViewControllerDelegate {
    func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
        previewController.dismiss(animated: true, completion: nil)
    }
}

4. 不预览直接保存录制内容

swift 复制代码
RPScreenRecorder.shared().startCapture { sampleBuffer, bufferType, error in
    if let error = error {
        print("Error capturing: \(error.localizedDescription)")
        return
    }

    // 处理视频和音频数据
    if bufferType == .video {
        print("Captured video frame.")
    } else if bufferType == .audioApp || bufferType == .audioMic {
        print("Captured audio frame.")
    }
} completionHandler: { error in
    if let error = error {
        print("Error starting capture: \(error.localizedDescription)")
    } else {
        print("Capture started successfully.")
    }
}
相关推荐
Digitally5 分钟前
如何轻松将视频从安卓设备传输到电脑?
android·电脑·音视频
技术小丁8 分钟前
使用 HTML +JavaScript 从零构建视频帧提取器
javascript·html·音视频
Everbrilliant8939 分钟前
音视频之视频压缩编码的基本原理
音视频·熵编码·变换编码·预测编码·视频压缩编码·视频压缩编码原理·帧内预测编码
地狱为王11 小时前
基于VLC的Unity视频播放器(四)
unity·游戏引擎·音视频
s1533514 小时前
8.RV1126-OPENCV 视频中添加LOGO
人工智能·opencv·音视频
sukalot17 小时前
window 显示驱动开发-提供视频解码功能(二)
音视频
大熊猫侯佩17 小时前
SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?
swiftui·swift·apple
大熊猫侯佩17 小时前
SwiftUI 6.0(iOS 18)将 Sections 也考虑进自定义容器子视图布局(下)
swiftui·swift·apple
大熊猫侯佩18 小时前
SwiftUI 6.0(iOS 18)将 Sections 也考虑进自定义容器子视图布局(上)
swiftui·swift·apple