这可能是因为在录制时,设置了较高的帧率,但在保存到相册时,由于限制而降低了帧率。要解决这个问题,可以通过设置录制时的分辨率和帧率来控制输出视频的质量。以下是一个示例代码,可以在初始化 AVFileCaptureOutput 实例时设置分辨率和帧率,以确保输出视频符合您的要求:
AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetHigh;
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (input) {
[session addInput:input];
} else {
NSLog(@"Error: %@", error);
}
AVCaptureMovieFileOutput *output = [[AVCaptureMovieFileOutput alloc] init];
// 设置分辨率和帧率
AVCaptureConnection *connection = [output connectionWithMediaType:AVMediaTypeVideo];
if ([connection isVideoMaxFrameDurationSupported]) {
[connection setVideoMaxFrameDuration:CMTimeMake(1, 240)];
}
if ([connection isVideoMinFrameDurationSupported]) {
[connection setVideoMinFrameDuration:CMTimeMake(1, 240)];
}
[session addOutput:output];
[session startRunning];
NSString *outputFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.mp4"];
NSURL *outputFileURL = [NSURL fileURLWithPath:outputFilePath];
[output startRecordingToOutputFileURL:outputFileURL recordingDelegate:self];
上述代码将分辨率设置为 AVCaptureSessionPresetHigh,并将帧率设置为 240fps。您可以根据需要自定义分辨率和帧率,以获得所需的输出质量。