iOS9 ReplayKit录制视频
猴子原创,欢迎转载。转载请注明: 转载自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录制视频的更多相关文章
- bandicam如何录制视频
我们一般都很熟悉这类软件:屏幕录制专家和kk录制等,这些都是国内比较优秀的作品.不过exe的封装格式以及录制的清晰度让人很纠结.所以这里要为大家分享的是一款韩国人写录制软件Bandicam.Bandi ...
- Android手机录制视频 实时传输(转载)
最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...
- 【Android】 Android实现录音、播音、录制视频功能
智能手机操作系统IOS与Android平分天下(PS:WP与其他的直接无视了),而Android的免费招来了一大堆厂商分分向Android示好,故Android可能会有“较好”的前景. Android ...
- iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频
iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频 应用场景: 使用AVFoundation提供的API, 我们可以从 AVCaptureVid ...
- 使用MediaRecorder录制视频短片
MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...
- iOS 三种录制视频方式
随着每一代 iPhone 处理能力和相机硬件配置的提高,使用它来捕获视频也变得更加有意思.它们小巧,轻便,低调,而且与专业摄像机之间的差距已经变得非常小,小到在某些情况下,iPhone 可以真正替代它 ...
- android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好
public void startRecord() { mediarecorder = new MediaRecorder();// 创建mediarecorder对象 mCamera = getCa ...
- 转:android 录制视频的Demo
转:http://blog.csdn.net/peijiangping1989/article/details/7049991 在这里给出自己的一个测试DEMO,里面注释很详细.简单的视频录制功能. ...
- Android使用的开发MediaRecorder录制视频
MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...
随机推荐
- android ndk之hello world
前言:Android NDK r7及以上的版本已经集成了Cygwin编译环境,也就是说,我们完全可以抛弃庞大的Cygwin了. r6及以下版本,也可以抛弃几个G的完整版,使用精简过的Mini-Cygw ...
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...
- C语言省略extern的缺陷
在一个文件中(比如a.c)定义一个全局变量int a = 10; 然后在另一个代码文件(比如main.c)中需要使用变量a,可以写 int a; 单独看main.c文件时就会出现二义性,一个含义是当其 ...
- Dynamics CRM 修改数据导出到EXCEL的最大条数
系统默认的最大导出数为一万,这个数可以通过执行以下SQL看到,那要增加导出的最大数量改变MaxRecordsForExportToExcel的值即可. <span style="fon ...
- 关于新版本,iOS10的相关内容,兼容iOS 10 资料整理笔记
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
- Dynamics CRM2011/2013 删除个人视图
这里以2013为例,2011同理.个人视图的功能很人性化,可以设置自己常看数据列表形式而不会去影响别人,但创建容易怎么删除还真不一定能找得到地,具体见下方截图.
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...
- javascript之DOM编程增加附件
在开始这个案例之前,需要学习一下有关于根据子关系节点获取标签的几个方法.罗列如下 /*通过关系(父子关系.兄弟关系)找标签.parentNode 获取当前元素的父节点.childNodes 获取当前元 ...
- Leetcode_20_Valid Parentheses
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41450987 通过本文你能学到如下知识: (1)对数据结构 ...
- Java 对象在堆中的内存结构
翻译人员: 铁锚 翻译日期: 2013年11月8日 原文链接: What do Java objects look like in memory during run-time? 我们知道,函数每次 ...