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;
複製代碼
相關文章
相關標籤/搜索