iOS音视频开发 - 总结

1. 视频采集 AVCapture

//获取全部摄像头
    NSArray *carmes = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    //获取前置摄像头
    NSArray *captureDeviceArray = [carmes filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"position == %d", AVCaptureDevicePositionFront]];
    if (!captureDeviceArray.count) {
        NSLog(@"获取前置摄像头失败");
        return;
    }
    
    //转化为输出设备
    AVCaptureDevice *camera = captureDeviceArray.firstObject;
    NSError *error = nil;
    self.captureDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&error];
    if (error) {
        NSLog(@"AVCaptureDevice转AVCaptureDeviceInput失败",error.description);
        return;
    }
复制代码

2. 初始化输出

初始化视频输出并设置视频数据格式,设置采集数据回调线程。markdown

//设置视频输出
    self.captureVideDataOutput = [[AVCaptureVideoDataOutput alloc] init];
    
    //设置视频数据格式
    NSDictionary *videoSetting = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8PlanarFullRange], kCVPixelBufferPixelFormatTypeKey, nil];
    
    //设置输出代理,串行队列和数据回调
    dispatch_queue_t outQueue = dispatch_queue_create("AVCaptureViewDataOutputQueue", DISPATCH_QUEUE_SERIAL);
    [self.captureVideDataOutput setSampleBufferDelegate:self queue:outQueue];
    self.captureVideDataOutput.alwaysDiscardsLateVideoFrames = YES;
复制代码