iOS9 ReplayKit錄製視頻
iOS9的ReplayKit 視頻錄製,api非常簡單,下面是代碼,Objective-C的類似,就不寫了。
//// ReplayKitProxy.swift// ReplayKitDemo//// Created by LiuYanghui on 15/12/11.// Copyright ? 2015年 LiuYanghui. All rights reserved.//import UIKitimport ReplayKitclass ReplayKitProxy: NSObject, RPPreviewViewControllerDelegate { private var rootViewController: UIViewController? private var previewViewController: RPPreviewViewController? class var sharedInstance : ReplayKitProxy { struct Static { static var onceToken : dispatch_once_t = 0 static var instance : ReplayKitProxy? = nil } dispatch_once(&Static.onceToken) { Static.instance = ReplayKitProxy() Static.instance?.initData() } return Static.instance! } private func initData() { } /// 開始錄製視頻 func startRecording() { let recorder = RPScreenRecorder.sharedRecorder() if recorder.available == false { print("Replaykit is not available") return } if recorder.recording == true { print("Replaykit is recording") return } recorder.startRecordingWithMicrophoneEnabled(true) { (error) -> Void in if error != nil { print(error?.localizedDescription) } } } /// 停止錄製視頻 func stopRecording() { let recorder = RPScreenRecorder.sharedRecorder() if recorder.recording == false { return } recorder.stopRecordingWithHandler { (previewViewController, error) -> Void in if error != nil { print(error?.localizedDescription) }else if let viewController = previewViewController{ viewController.previewControllerDelegate = self self.previewViewController = viewController } } } /// 刪除已錄製視頻,必須在stopRecording之後調用 func discardRecording() { let recorder = RPScreenRecorder.sharedRecorder() if recorder.recording == true { return } recorder.discardRecordingWithHandler { () -> Void in print("discardRecording complete") } } /// 顯示視頻 func displayRecordingContent() { rootViewController?.presentViewController(self.previewViewController!, animated: true, completion: { () -> Void in print("display complete") }) } // MARK: - delegate func previewControllerDidFinish(previewController: RPPreviewViewController) { previewController.dismissViewControllerAnimated(true) { () -> Void in } }}