Я пытаюсь записывать видео, используя библиотеку GPUImage. Записанный клип заканчивается черной рамкой. Я знаю, что это вызвано audioEncodingTarget, что является очень дорогостоящей операцией. Это обсуждалось много, но я до сих пор не нашел решения. Вот мой код:GPUImageMovieWriter - черная рамка, вызванная audioEncodingTarget
класс GPUCameraRecorder INIT
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPresetiFrame960x540, cameraPosition: .Back)
videoCamera.outputImageOrientation = .LandscapeRight;
videoCamera.horizontallyMirrorFrontFacingCamera = true
filter = GPUImageFilter()
videoCamera.addTarget(filter)
view = GPUImageView(frame: frame)
view.fillMode = kGPUImageFillModePreserveAspectRatioAndFill
movieWriter = GPUImageMovieWriter(movieURL: output, size: view.frame.size)
movieWriter?.encodingLiveVideo = true
filter?.addTarget(movieWriter!)
filter?.addTarget(view as GPUImageView)
videoCamera.audioEncodingTarget = self.movieWriter!
videoCamera.startCameraCapture()
функция записи старта
func startRecording(){
println("Start recording.")
recording = true
dispatch_async(dispatch_get_main_queue()) {
var res = self.videoCamera.addAudioInputsAndOutputs()
println(res)
self.movieWriter!.startRecording()
}
}
функция конца записи
func stopRecording(){
println("Recording end.")
dispatch_async(dispatch_get_main_queue()) {
self.filter?.removeTarget(self.movieWriter!)
self.videoCamera.audioEncodingTarget = nil
self.movieWriter!.finishRecording()
self.putTorchOff()
self.delegate?.recordingEnd()
println("completed")
}
}
Любое предложение? Кто-то нашел способ заставить его работать без черных кадров?
Тем не менее я получаю, что черная рамка –