iOS9 ReplayKit录制视频
猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!  
原文地址: http://blog.csdn.net/cocos2der/article/details/50260873
iOS9的ReplayKit 视频录制,api很easy,以下是代码,Objective-C的相似,就不写了。
//
//  ReplayKitProxy.swift
//  ReplayKitDemo
//
//  Created by LiuYanghui on 15/12/11.
//  Copyright © 2015年 LiuYanghui. All rights reserved.
//
import UIKit
import ReplayKit
class 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() {
        // ipad须要改动显示方式,否则可能会导致sorceView为nil的异常
        if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
            self.previewViewController?.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
            self.previewViewController?.popoverPresentationController?.sourceView = self.rootViewController?.view
        }
        rootViewController?.presentViewController(self.previewViewController!, animated: true, completion: { () -> Void in
            print("display complete")
        })
    }
    // MARK: - delegate
    func previewControllerDidFinish(previewController: RPPreviewViewController) {
        previewController.dismissViewControllerAnimated(true) { () -> Void in
        }
    }
}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号