2013-10-14 2 views
4

녹음 앱을 구현 한 상태에서 "녹음"버튼을 눌러 녹음을 시작/중지 할 수 있습니다. 출력을 GPUImageViewGPUImageMovieWriter으로 설정 한 기본 GPUImageVideoCamera으로이 작업을 수행합니다.GPUImageMovieWriter - 녹화 된 비디오의 양쪽 끝에 가끔 검은 색 프레임이 있습니다.

시간의 50 %가 기록 된 클립의 양쪽 끝에서 두 개 (또는 단일)의 검은 색 프레임으로 끝나기도합니다. 구현은 매우 간단하지만 어쨌든 여기에 있습니다.

gpuImageView = [[GPUImageView alloc] initWithFrame:cameraView.frame]; 
gpuImageView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill; 

[cameraView addSubview:gpuImageView]; 

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPresetHigh cameraPosition:(usingBackCamera) ? AVCaptureDevicePositionBack : AVCaptureDevicePositionFront]; 

[videoCamera addTarget:gpuImageView]; 
[videoCamera addTarget:movieWriter]; 
videoCamera.audioEncodingTarget = movieWriter; 
[videoCamera startCameraCapture]; 

double delayToStartRecording = 0.5; 
dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, delayToStartRecording * NSEC_PER_SEC); 
     dispatch_after(startTime, dispatch_get_main_queue(), ^(void){ 
      NSLog(@"Start recording"); 
      [movieWriter startRecording]; 
     }); 

그리고 라이브 카메라에 GPUImageView. 표시 계속하는 동안은 (

[movieWriter finishRecording]; 

다른 사람이 이것을 경험 및/또는 검은 색 프레임을 피하기 위해 해결책을 발견했습니다 다음과 녹음을 중지? 정상적인 사용자 환경을 보장하기 위해 카메라 캡처를 일시 중지/다시 시작할 수 없습니다.

답변

5

일반적으로 대기열에서 비디오 프레임을 가져 오기 전에 대기열이 파일에 오디오를 쓰고 있기 때문에 발생합니다. 파일에 쓰는 첫 번째 것이 비디오 프레임이고 첫 번째 비디오 프레임이 기록 될 때까지 오디오를 쓰지 않으면 검은 색 프레임이 생기지 않습니다.