18

AVCaptureSessionを使用してカメラからビデオを録画するようにアプリを設定しましたが、オーディオはありません。オーディオを録音してファイルのvideoOutputに追加するには、何をする必要がありますか?ここでは、映像を記録するための私のコードは次のとおりです。AVCaptureSessionオーディオでビデオを録画する

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
[session beginConfiguration]; 
session.sessionPreset = AVCaptureSessionPresetMedium; 

CALayer *viewLayer = self.vImagePreview.layer; 
NSLog(@"viewLayer = %@", viewLayer); 

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
captureVideoPreviewLayer.frame = self.vImagePreview.bounds; 

[self.vImagePreview.layer addSublayer:captureVideoPreviewLayer]; 

AVCaptureDevice *device = [self frontFacingCameraIfAvailable]; 

NSError *error = nil; 
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; 
if (!input) { 
    // Handle the error appropriately. 
    NSLog(@"ERROR: trying to open camera: %@", error); 
} 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectoryPath = [paths objectAtIndex:0]; 

AVCaptureMovieFileOutput *movieFileOutput = [[AVCaptureMovieFileOutput alloc] init]; 

NSString *archives = [documentsDirectoryPath stringByAppendingPathComponent:@"archives"]; 
NSString *outputpathofmovie = [[archives stringByAppendingPathComponent:@"Test"] stringByAppendingString:@".mp4"]; 
NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:outputpathofmovie]; 

[session addInput:input]; 
[session addOutput:movieFileOutput]; 
[session commitConfiguration]; 
[session startRunning]; 
[movieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self]; 

私はオーディオのための別の入力を追加しましたが、それがバックグラウンドであるmpmovieplayercontrollerで動作文句を言いません。 1つのビデオを再生し、同時にカメラからオーディオとビデオを録画できる何かに対する考えがありますか? beginConfigurationcommitConfiguration

AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; 
AVCaptureDeviceInput * audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil]; 
[session addInput:audioInput] 

+0

@MDT間のコードの下に追加します。だから何私が行うことになっていますか?あなたがリンクを投稿する時間を取るつもりなら、それをあなたが私を助けると思うものへのリンクにしてみませんか? – user717452

+0

AudioInputを追加して録画を開始したときに何らかの理由で編集 – user717452

答えて

28

あなたは、オーディオデバイスを含めていません。それは動作します!

+1

の最終段落が追加されました。プレビューフリーズとビデオ出力ファイルでは録画時間が0秒で記録されます...オーディオにコメントするとすぐに、 :( – Moonwalker

7

beginConfiguration()commitConfiguration()

// Add audio device to the recording 

let audioDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeAudio) 
do { 
    let audioInput = try AVCaptureDeviceInput(device: audioDevice) 
    self.captureSession.addInput(audioInput) 
} catch { 
    print("Unable to add audio device to the recording.") 
} 
+0

質問はObjectiveCに関するものではありませんSwift – NSNoob

+2

しかし、彼は今日のための更新された答えを持っています。 –

関連する問題