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 ...
随机推荐
- BeanUtils 读取数据
前两篇文章都是关于setProperty的,下面来说一个关于getProperty 的小案例.如下: MyClass.java package beanutils; public class MyCl ...
- T-SQL动态查询(4)——动态SQL
接上文:T-SQL动态查询(3)--静态SQL 前言: 前面说了很多关于动态查询的内容,本文将介绍使用动态SQL解决动态查询的一些方法. 为什么使用动态SQL: 在很多项目中,动态SQL被广泛使用甚至 ...
- velocity中加载模板文件的方式
velocity有多中种方式供我们去加载我们自定义的模板文件,下面详细的介绍使用的方法. 1.1.1. 加载classpath目录下的模板文件 使用classpath方式加载,是我们经常用到的一种方式 ...
- FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- 【一天一道LeetCode】#172. Factorial Trailing Zeroes
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- android GifView分享
gif图动画在android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个.经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示 ...
- ajax核心技术1---XMLHttpRequset对象的使用
AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX = 异步 Ja ...
- android dataBinding详解
官方介绍地址:http://developer.android.com/intl/zh-cn/tools/data-binding/guide.html 2015 Google IO 大会带来的 Da ...
- Android官方命令深入分析之etc1tool
etc1tool是一个命令行工具,可以将PNG图像压缩为etc1标准,并且可以进行解压缩. 用法: etc1tool infile [--help | --encode | --encodeNoHea ...
- 存储那些事儿(三):OpenStack的块存储Cinder与商业存储的融合
OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目.OpenStack是IaaS(基础设施即服务)软 ...