我有录音应用程序实现,用户可以点击“录音”按钮开始/停止录音。我使用基本的 GPUImageVideoCamera
实现了这一点,输出设置为 GPUImageView
以及 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];
有没有其他人遇到过这种情况和/或找到了避免黑框的解决方案?我无法暂停/恢复相机拍摄,以确保无缝的用户体验。
最佳答案
通常发生这种情况是因为队列在获取任何视频帧之前将音频写入文件。很难从你的实现中看出,但如果你确保你写入文件的第一件事是视频帧并且在写入第一个视频帧之后才写入任何音频,那么你将不会有任何黑帧。
关于ios - GPUImageMovieWriter - 录制视频两端偶尔出现黑帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19370654/