【发布时间】:2017-05-19 18:41:17
【问题描述】:
我尝试学习如何创建自定义录像机,一切正常,除非音频有很多嘈杂的声音。我在系统相机、instagram 或任何其他相机应用程序中尝试它们的音频质量非常好,并且没有某种低级声音。此外,与其他相机应用程序相比,视频的录制量也显着降低。我在 stackoverflow 上找不到任何答案,其中大多数人对 AVAudioSession 有答案,但在 AVCaptureSession 上没有。
这是我如何实现记录器的代码
_session = [[AVCaptureSession alloc]init];
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput *audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:[devices objectAtIndex:0] error:nil];
if ([_session canAddInput:audioInput])
[_session addInput:audioInput];
AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:nil];
if ( [_session canAddInput:deviceInput] )
[_session addInput:deviceInput];
_videoOutput = [[AVCaptureVideoDataOutput alloc] init];
_videoOutput.alwaysDiscardsLateVideoFrames = NO;
if ( [_session canAddOutput:_videoOutput] )
[_session addOutput:_videoOutput];
_audioOutput = [[AVCaptureAudioDataOutput alloc] init];
if ( [_session canAddOutput:_audioOutput] )
[_session addOutput:_audioOutput];
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
CALayer *rootLayer = [[self view] layer];
[rootLayer setMasksToBounds:YES];
[previewLayer setFrame:CGRectMake(0, 0, rootLayer.bounds.size.width, rootLayer.bounds.size.height)];
[rootLayer insertSublayer:previewLayer atIndex:0];
[_session setSessionPreset:AVCaptureSessionPresetHigh];
dispatch_queue_t queue = dispatch_queue_create("MyQueue", NULL);
[_videoOutput setSampleBufferDelegate:self queue:queue];
[_audioOutput setSampleBufferDelegate:self queue:queue];
AVCaptureConnection *videoConnection = [_videoOutput connectionWithMediaType:AVMediaTypeVideo];
[videoConnection setVideoOrientation:AVCaptureVideoOrientationPortrait];
[_session startRunning];
视频质量很好,代码工作正常,只是音频部分有问题。所以
- 如何在录制视频时提高音频质量?
- 如何提高视频的录制音量?
我知道如何在使用下面的代码纯录制音频时增加它,但在录制视频时不知道。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:(AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth) error:&sessionCategoryError];
【问题讨论】:
标签: ios objective-c audio avfoundation