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

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

iOS9的ReplayKit 视频录制,api非常简单,下面是代码,Objective-C的类似,就不写了。

  1. //
  2. // ReplayKitProxy.swift
  3. // ReplayKitDemo
  4. //
  5. // Created by LiuYanghui on 15/12/11.
  6. // Copyright © 2015年 LiuYanghui. All rights reserved.
  7. //
  8. import UIKit
  9. import ReplayKit
  10. class ReplayKitProxy: NSObject, RPPreviewViewControllerDelegate {
  11. private var rootViewController: UIViewController?
  12. private var previewViewController: RPPreviewViewController?
  13. class var sharedInstance : ReplayKitProxy {
  14. struct Static {
  15. static var onceToken : dispatch_once_t = 0
  16. static var instance : ReplayKitProxy? = nil
  17. }
  18. dispatch_once(&Static.onceToken) {
  19. Static.instance = ReplayKitProxy()
  20. Static.instance?.initData()
  21. }
  22. return Static.instance!
  23. }
  24. private func initData() {
  25. }
  26. /// 开始录制视频
  27. func startRecording() {
  28. let recorder = RPScreenRecorder.sharedRecorder()
  29. if recorder.available == false {
  30. print("Replaykit is not available")
  31. return
  32. }
  33. if recorder.recording == true {
  34. print("Replaykit is recording")
  35. return
  36. }
  37. recorder.startRecordingWithMicrophoneEnabled(true) { (error) -> Void in
  38. if error != nil {
  39. print(error?.localizedDescription)
  40. }
  41. }
  42. }
  43. /// 停止录制视频
  44. func stopRecording() {
  45. let recorder = RPScreenRecorder.sharedRecorder()
  46. if recorder.recording == false {
  47. return
  48. }
  49. recorder.stopRecordingWithHandler { (previewViewController, error) -> Void in
  50. if error != nil {
  51. print(error?.localizedDescription)
  52. }else if let viewController = previewViewController{
  53. viewController.previewControllerDelegate = self
  54. self.previewViewController = viewController
  55. }
  56. }
  57. }
  58. /// 删除已录制视频,必须在stopRecording之后调用
  59. func discardRecording() {
  60. let recorder = RPScreenRecorder.sharedRecorder()
  61. if recorder.recording == true {
  62. return
  63. }
  64. recorder.discardRecordingWithHandler { () -> Void in
  65. print("discardRecording complete")
  66. }
  67. }
  68. /// 显示视频
  69. func displayRecordingContent() {
  70. // ipad需要修改显示方式,否则可能会导致sorceView为nil的异常
  71. if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
  72. self.previewViewController?.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
  73. self.previewViewController?.popoverPresentationController?.sourceView = self.rootViewController?.view
  74. }
  75. rootViewController?.presentViewController(self.previewViewController!, animated: true, completion: { () -> Void in
  76. print("display complete")
  77. })
  78. }
  79. // MARK: - delegate
  80. func previewControllerDidFinish(previewController: RPPreviewViewController) {
  81. previewController.dismissViewControllerAnimated(true) { () -> Void in
  82. }
  83. }
  84. }

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 系统开发】使用 Source InSight 阅读 Android 源码

    1. 安装 Source Insight (1) Source Insight 相关资源 安装相关资源 : -- 下载地址 : http://www.sourceinsight.com/down35. ...

  2. (NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上篇介绍了游戏主角的初始化方法,下面我们一次来实现主角的其他方 ...

  3. Cocos2D实现RPG队伍菜单任意调整角色顺序的效果

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前一篇我们实现了队伍实现拖尾效果,但是在实际游戏中我们往往需要 ...

  4. tomcat中Servlet的工作机制

    在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init.service.destroy等方法 ...

  5. reactor线程阻塞引起故障

    大致线程模型: jstack打印JVM堆栈,可以看到reactor线程阻塞了,导致它对应的前端连接无法使用.阻塞在了oracle驱动rollback动作,这里其实是因为oracle驱动为了保证串行请求 ...

  6. 06 intent flag三种属性

    flag属性可以看做和写在清单文件中的启动模式一样 但效果有一定差别 1,FLAG_ACTIVITY_SINGLE_TOP:启动模式里的SingleTop一致  如果X启动模式设置为FLAG_ACTI ...

  7. 浅谈C语言 extern 指针与数组

    /* * d.c * * Created on: Nov 15, 2011 * Author: root */ #include "apue.h" int a[] = {3,2}; ...

  8. iOS中 简单易懂的秒杀倒计时/倒计时

    示例代码简单易懂: 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 #import <UIKit/UIKit.h> @interface ViewCon ...

  9. 华为解锁BL

    华为手机要怎么查看手机是否需要解锁呢?相信许多机油都不懂自己入手的手机是否需要解锁.而华为手机自华为C8812之后的高通手机均需要先解锁才能够尽兴刷机或获取Root权限的.那么下面我给大家分享一下华为 ...

  10. android打包方法超过65k错误

    近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持. 如果你是一名幸运的Android应用开发者,正在 ...