猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!

原文地址: http://blog.csdn.net/cocos2der/article/details/50260873

iOS9的ReplayKit 视频录制,api非常简单,下面是代码,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

        }
    }
}

iOS9 ReplayKit录制视频的更多相关文章

  1. bandicam如何录制视频

    我们一般都很熟悉这类软件:屏幕录制专家和kk录制等,这些都是国内比较优秀的作品.不过exe的封装格式以及录制的清晰度让人很纠结.所以这里要为大家分享的是一款韩国人写录制软件Bandicam.Bandi ...

  2. Android手机录制视频 实时传输(转载)

    最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...

  3. 【Android】 Android实现录音、播音、录制视频功能

    智能手机操作系统IOS与Android平分天下(PS:WP与其他的直接无视了),而Android的免费招来了一大堆厂商分分向Android示好,故Android可能会有“较好”的前景. Android ...

  4. iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频

    iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频 应用场景: 使用AVFoundation提供的API, 我们可以从 AVCaptureVid ...

  5. 使用MediaRecorder录制视频短片

    MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...

  6. iOS 三种录制视频方式

    随着每一代 iPhone 处理能力和相机硬件配置的提高,使用它来捕获视频也变得更加有意思.它们小巧,轻便,低调,而且与专业摄像机之间的差距已经变得非常小,小到在某些情况下,iPhone 可以真正替代它 ...

  7. android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好

    public void startRecord() { mediarecorder = new MediaRecorder();// 创建mediarecorder对象 mCamera = getCa ...

  8. 转:android 录制视频的Demo

    转:http://blog.csdn.net/peijiangping1989/article/details/7049991 在这里给出自己的一个测试DEMO,里面注释很详细.简单的视频录制功能. ...

  9. Android使用的开发MediaRecorder录制视频

    MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...

随机推荐

  1. android ndk之hello world

    前言:Android NDK r7及以上的版本已经集成了Cygwin编译环境,也就是说,我们完全可以抛弃庞大的Cygwin了. r6及以下版本,也可以抛弃几个G的完整版,使用精简过的Mini-Cygw ...

  2. (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...

  3. C语言省略extern的缺陷

    在一个文件中(比如a.c)定义一个全局变量int a = 10; 然后在另一个代码文件(比如main.c)中需要使用变量a,可以写 int a; 单独看main.c文件时就会出现二义性,一个含义是当其 ...

  4. Dynamics CRM 修改数据导出到EXCEL的最大条数

    系统默认的最大导出数为一万,这个数可以通过执行以下SQL看到,那要增加导出的最大数量改变MaxRecordsForExportToExcel的值即可. <span style="fon ...

  5. 关于新版本,iOS10的相关内容,兼容iOS 10 资料整理笔记

    1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...

  6. Dynamics CRM2011/2013 删除个人视图

    这里以2013为例,2011同理.个人视图的功能很人性化,可以设置自己常看数据列表形式而不会去影响别人,但创建容易怎么删除还真不一定能找得到地,具体见下方截图.

  7. 利用编辑距离(Edit Distance)计算两个字符串的相似度

    利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...

  8. javascript之DOM编程增加附件

    在开始这个案例之前,需要学习一下有关于根据子关系节点获取标签的几个方法.罗列如下 /*通过关系(父子关系.兄弟关系)找标签.parentNode 获取当前元素的父节点.childNodes 获取当前元 ...

  9. Leetcode_20_Valid Parentheses

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41450987 通过本文你能学到如下知识: (1)对数据结构 ...

  10. Java 对象在堆中的内存结构

    翻译人员: 铁锚 翻译日期: 2013年11月8日 原文链接:  What do Java objects look like in memory during run-time? 我们知道,函数每次 ...