2017-05-19 13 views
1

私はカスタムビデオレコーダーを作成する方法を学びます。ノイズは多くのノイズを含むオーディオを除いてすべて正常に動作します。私は、システムのカメラ、instagramまたは他のカメラアプリで彼らのオーディオ品質は非常に良いと低レベルのサウンドのいくつかの種類を持っていないしようとします。さらに、ビデオの録画された音量も他のカメラアプリに比べて大幅に低くなっています。私はほとんど答えがAVAudioSessionについては回答していますが、AVCaptureSessionにはないstackoverflowに関する回答は見つかりませんでした。ここで AVFoundationカスタムビデオレコーダーのオーディオの問題

は、私はレコーダー

_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]; 

ビデオ品質は大丈夫で、コードがちょうど音声部分に問題を抱えて、作業を実装する方法のコードです。 So

  1. ビデオの録音時に音質を改善するにはどうすればよいですか?
  2. ビデオの録画容量を増やすにはどうすればよいですか?

私は以下のコードでオーディオを純粋に録画するだけで、ビデオを録画するときにはそれを増やす方法を知っています。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:(AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth) error:&sessionCategoryError]; 

答えて

0

これでわかりました。 AVCaptureSessionを作成した後、次のコードを実行します。

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:(AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth) error:nil]; 
[audioSession setActive:YES error:nil]; 

_session = [[AVCaptureSession alloc]init]; 

//the 2 line below is very important. 
_session.usesApplicationAudioSession = YES; 
_session.automaticallyConfiguresApplicationAudioSession = NO; 

今映像の出力に含まオーディオはシステム

よりも優れています
関連する問題