iOS9 ReplayKit录制视频

news/2024/7/4 9:32:38

猴子原创,欢迎转载。转载请注明: 转载自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 } } }

http://www.niftyadmin.cn/n/2017160.html

相关文章

北斗授时服务器的应用及详细介绍

北斗授时服务器的应用及详细介绍 将局域网上各种需要同步时钟的设备的时间信息基于北斗时间偏差限定在足够小的范围内,这种时钟系统便就叫做北斗授时系统。任何时间应用系统都应该具有维持时间增长和缩减,客户端内部的时间同步必须与有源时间同步&#…

数字同步网络时钟系统设计方案

数字同步网络时钟系统设计方案 本文按照YTD 5089-2000数字同步网工程设计规范,对数字同步网的基准时钟建设进行了简单说明,并对其时钟系统的三级结构组成以及可用设备进行了简单的说明。 数字同步网工程设计规范主要是针对各省,自治区&…

BootStrap 专题

验证码的输入框和验证码图片在一行&#xff0c;用bootstrap原生的怎么写呢&#xff1f; 看了教程&#xff0c;没有完全一样的可以让右侧的按钮“输入验证码”固定大小。左侧的输入框动态大小吗&#xff1f; <div class"form-group"> <label for"verify…

NTP对时器(NTP对时服务器)技术介绍

NTP对时器&#xff08;NTP对时服务器&#xff09;技术介绍 NTP时间同步的重要性 时间同步技术必定将是整个大数据处理系统的重要支撑和保障。时间同步技术使数据产生与处理系统的所有节点具有全局的、统一的标准时间&#xff0c;从而使系统中的所有各种消息、事件、节点、数据…

GPS校时仪(ntp校时仪)在网络系统中的重要性

GPS校时仪&#xff08;ntp校时仪&#xff09;在网络系统中的重要性 随着计算机网络的迅猛发展&#xff0c;网络应用已经非常普遍&#xff0c;众多领域的网络系统如电力、石化、金融业&#xff08;证券、银行&#xff09;、广电业&#xff08;广播、电视&#xff09;、交通业&a…

马化腾为什么要怼朱啸虎,只因OFO套路太深

第一句&#xff0c;OFO套路太深&#xff01;第二句&#xff0c;朱啸虎钱多套路深&#xff01;马化腾为什么要怼朱啸虎&#xff1f;老马老朱这个境界的人&#xff0c;一般都讲究和气生财&#xff0c;非一般闹心的事情&#xff0c;或违背原则良心的事情&#xff0c;大概也就一笑而…

NTP校时服务器(NTP校时器)资料详解

NTP校时服务器&#xff08;NTP校时器&#xff09;资料详解 NTP校时服务器&#xff08;NTP校时器&#xff09;资料详解 NTP网络时间同步 摘 要&#xff1a;首先对时间同步进行了背景介绍&#xff0c;然后讨论了不同的时间同步网络技术&#xff0c;最后指出了建立全球或区域时间同…

ansible 部署docker

简介 从接触到使用Ansible大概有一天的时间&#xff0c;对它的理解也是比较肤浅。我单纯的认为&#xff0c;他可以帮助我们在服务器之间传输文件&#xff0c;同时还可以执行一些shell命令。 安装Ansible 官网地址 sudo apt-get update sudo apt-get install software-propert…