我正在尝试在 GPUImage 之上的 iOS 中实现视频录制。
我有一个 GPUImageVideoCamera,我正在尝试像这样设置录制:
-(void)toggleVideoRecording {
if (!self.recording) {
self.recording = true;
GPUImageMovieWriter * mw = [self createMovieWriter: self.filter1];
[self.filter1 addTarget:mw];
mw.shouldPassthroughAudio = YES;
[mw startRecording];
}
else {
self.recording = false;
[self finishWritingMovie];
}
}
-(GPUImageMovieWriter *) createMovieWriter:(GPUImageFilter *) forFilter {
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/CurrentMovie.m4v"];
unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
GPUImageMovieWriter * mw = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:forFilter->currentFilterSize];
self.movieWriter = mw;
self.movieURL = movieURL;
return mw;
}
这实际上大部分都有效。但是,MoviewWriter 需要输入媒体的 CGSize,我不知道如何将其拉出 VideoCamera。首先,大小会有所不同,因为相机使用的是 sessionPreset: AVCaptureSessionPresetHigh,这意味着它会根据设备的功能而有所不同。其次,方向改变了相关的CGSize。如果用户以横向模式开始录制,我想转置尺寸。
对于知道如何使用 vanilla CoreVideo 执行此操作的任何人,我可以将 AVCaptureSession 从我的 GPUImageVideoCamera 中提取出来。(但我已经阅读了 AVCaptureSession 的 API 并没有任何希望)。
即使将我推荐给处理此问题的示例项目也会非常有帮助。