zoukankan      html  css  js  c++  java
  • 视屏录制

    #import "ViewController.h"
    #import <AVFoundation/AVFoundation.h>
    
    @interface ViewController ()<AVCaptureFileOutputRecordingDelegate>
    
    @property(nonatomic ,strong) AVCaptureFileOutput * outPut;
    
    @property(nonatomic ,strong)AVCaptureSession * session;
    
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
    
        //创建输入设备
        
        AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        
          AVCaptureDeviceInput * inputVideo = [[AVCaptureDeviceInput alloc]initWithDevice:device error:nil];
        
        AVCaptureDevice * audio = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
        
        AVCaptureDeviceInput * inpoutAudio = [[AVCaptureDeviceInput alloc]initWithDevice:audio error:nil];
        
        //创建文件输出设备
    
         AVCaptureFileOutput * outPut =  [[AVCaptureFileOutput alloc]init];
        
        
        self.outPut = outPut;
        //创建会话(加工厂)
        
        AVCaptureSession * session = [[AVCaptureSession alloc]init];
        
        self.session = session;
        
        //判断设备时候能够添加, 可能设备损坏
        if ([session canAddInput:inpoutAudio]) {
            
            [session addInput:inpoutAudio];
            
        }
     
        if ([session canAddInput:inputVideo]) {
            
            [session addInput:inputVideo];
        }
        
        if ([session canAddOutput:outPut]) {
            
            [session addOutput:outPut];
        }
    
        //创建预览层
        
        AVCaptureVideoPreviewLayer * preViewLayer = [[AVCaptureVideoPreviewLayer alloc]init];
        
        //设置frame
        preViewLayer.frame = self.view.bounds;
    
        //插入到View上
        
        [self.view.layer insertSublayer:preViewLayer atIndex:0];
        
        //开始会话
        
        [session startRunning];
    
        
    }
    
    - (IBAction)recode:(id)sender {
        
        if ([self.outPut isRecording]) {
            
            [self.outPut stopRecording];
            
        }else{
            
            NSString * path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"录制视屏.MP4"];
            
            
            [self.outPut startRecordingToOutputFileURL:[NSURL fileURLWithPath:path] recordingDelegate:self];
            
        }
        
        
        
        
    }
    

      

  • 相关阅读:
    ES6笔记分享 part 2
    ES6笔记分享 part 1
    JS事件之自建函数bind()与兼容性问题解决
    JavaScript DOM事件对象的两个小练习 | 学习内容分享
    JavaScript数组的方法 | 学习笔记分享
    JavaScript构造函数 | 学习笔记分享
    Hexo+Github个人博客搭建 | 实战经验分享
    Hello world!
    “1+X”证书Web前端开发等级考试简介
    1+x证书Web 前端开发初级——理论考试(试卷1)
  • 原文地址:https://www.cnblogs.com/yuwei0911/p/5448910.html
Copyright © 2011-2022 走看看