#import "ViewController.h"#import@interface ViewController ()/* 輸入設(shè)備 攝像頭*/@property (strong, nonatomic) AVCaptureDeviceInput *videoInput;/* 輸入設(shè)備 麥克風(fēng) */@property (strong, nonatomic) AVCaptureDeviceInput *audioInput;/* 輸出設(shè)備 */@property (strong, nonatomic) AVCaptureMovieFileOutput *outPut;/* 會(huì)話 */@property (strong, nonatomic) AVCaptureSession *session;/* 預(yù)覽的圖層 */@property (weak, nonatomic) AVCaptureVideoPreviewLayer *previewLayer;@end@implementation ViewController- (void)viewDidLoad {? ? [super viewDidLoad];? ? // 輸入設(shè)備? 攝像頭? 麥克風(fēng)? ? // 攝像頭的輸入設(shè)備? ? AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];? ? self.videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:videoDevice error:nil];? ? // 麥克風(fēng)的輸入設(shè)備? ? AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];? ? self.audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:audioDevice error:nil];? ? ? ? ? ? // 輸出設(shè)備? ? self.outPut = [[AVCaptureMovieFileOutput alloc] init];? ? ? ? // 會(huì)話? -->鏈接輸入和輸出設(shè)備? ? self.session = [[AVCaptureSession alloc] init];? ? // 添加輸入和輸出設(shè)備? ? if ([self.session canAddInput:self.videoInput]) {? ? ? ? [self.session addInput:self.videoInput];? ? }? ? if ([self.session canAddInput:self.audioInput]) {? ? ? ? [self.session addInput:self.audioInput];? ? }? ? if ([self.session canAddOutput:self.outPut]) {? ? ? ? [self.session addOutput:self.outPut];? ? }? ? ? ? // 預(yù)覽的圖層? ? AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];? ? self.previewLayer = previewLayer;? ? self.previewLayer.frame = self.view.bounds;? ? [self.view.layer addSublayer:previewLayer];? ? ? ? // 開(kāi)啟會(huì)話? ? [self.session startRunning];}- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
{
if (self.outPut.isRecording == YES) {
// 停止錄制
[self.outPut stopRecording];
}else{
// 文件保存的路徑
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"123.mov"];
// 轉(zhuǎn)換類型
NSURL *url = [NSURL fileURLWithPath:path];
// 開(kāi)始錄制視頻? url:視頻保存的位置
[self.outPut startRecordingToOutputFileURL:url recordingDelegate:self];
}
}
/// 開(kāi)始錄制視頻
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections
{
NSLog(@"開(kāi)始錄制視頻");
}
/// 錄制視頻成功
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error
{
NSLog(@"錄制視頻成功");
}
@end