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];
            
        }
        
        
        
        
    }
    

      

  • 相关阅读:
    senlin __init__() got an unexpected keyword argument 'additional_headers'
    Delphi 全局画点TCanvas.Pixels[X,Y]
    sql server 列修改null 变成not null
    Delphi记录record中的变体
    delphi无边框可拖动窗体
    bootstrap相关资料
    重装windows导致grub损坏
    RabbitMQ的安装(Docker安装)
    RabbitMQ的安装以及使用(Windows环境)
    如果安装rabittmq后,输入http://localhost:15672不出页面的
  • 原文地址:https://www.cnblogs.com/yuwei0911/p/5448910.html
Copyright © 2011-2022 走看看