首页 > 学院 > 开发设计 > 正文

IOS开发---视频录制

2019-11-14 18:54:29
字体:
来源:转载
供稿:网友

今天研究了一下使用app录制视频的功能,感觉还是挺简单的。使用了AVFoundation框架,代码比较死,按步骤调用就行。

分享一下今天做的Demo的步骤


一,初始化输入设备,这里涉及到前,后摄像头;麦克风(导入AVFoundation)

    //1.创建视频设备(摄像头前,后)    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];    //2.初始化一个摄像头输入设备(first是后置摄像头,last是前置摄像头)    AVCaptureDeviceInput *inputVideo = [AVCaptureDeviceInput deviceInputWithDevice:[devices firstObject] error:NULL];        //3.创建麦克风设备    AVCaptureDevice *deviceAudio = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];    //4.初始化麦克风输入设备    AVCaptureDeviceInput *inputAudio = [AVCaptureDeviceInput deviceInputWithDevice:deviceAudio error:NULL];

 

二,初始化视频文件输出

    //5.初始化一个movie的文件输出    AVCaptureMovieFileOutput *output = [[AVCaptureMovieFileOutput alloc] init];    self.output = output; //保存output,方便下面操作

 

三,初始化会话,并将输入输出设备添加到会话中

 1     //6.初始化一个会话 2     AVCapturesession *session = [[AVCaptureSession alloc] init]; 3      4     //7.将输入输出设备添加到会话中 5     if ([session canAddInput:inputVideo]) { 6         [session addInput:inputVideo]; 7     } 8     if ([session canAddInput:inputAudio]) { 9         [session addInput:inputAudio];10     }11     if ([session canAddOutput:output]) {12         [session addOutput:output];13     }

 

四,添加一个视频预览图层,设置大小,添加到控制器view的图层上

1     //8.创建一个预览涂层2     AVCaptureVideoPReviewLayer *preLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];3     //设置图层的大小4     preLayer.frame = self.view.bounds;5     //添加到view上6     [self.view.layer addSublayer:preLayer];

 

五,开始会话

  //9.开始会话 [session startRunning]; 

 

六,添加一个按钮:点击开始,停止录制视频,并设置录制视频的代理

 1 - (IBAction)clickVideoBtn:(UIButton *)sender { 2     //判断是否在录制,如果在录制,就停止,并设置按钮title 3     if ([self.output isRecording]) { 4         [self.output stopRecording]; 5         [sender setTitle:@"录制" forState:UIControlStateNormal]; 6         return; 7     } 8      9     //设置按钮的title10     [sender setTitle:@"停止" forState:UIControlStateNormal];11     12     //10.开始录制视频13     //设置录制视频保存的路径14     NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"myVidio.mov"];15     16     //转为视频保存的url17     NSURL *url = [NSURL fileURLWithPath:path];18     19     //开始录制,并设置控制器为录制的代理20     [self.output startRecordingToOutputFileURL:url recordingDelegate:self];21     22 }

 

七,实现代理方法(这里只实现一个完成代理方法吧,其他根据自己的需求再设置)

1 #pragma  mark - AVCaptureFileOutputRecordingDelegate2 //录制完成代理3 - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error4 {5     NSLog(@"完成录制,可以自己做进一步的处理");6 }

 

八,真机运行,嘿嘿


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表