Во время аудиозаписи, если видео записывает, то оно не содержит звука

Сначала я должен запустить рекордер, который будет записывать звук, во время которого мне также нужно записывать видео с камеры.

Код для аудиозаписи

NSArray *pathComponents = [NSArray arrayWithObjects:
                           [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                           @"MyAudioMemo.m4a",
                           nil];
NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

// Setup audio session
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];

// Define the recorder setting
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

// Initiate and prepare the recorder
recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];

recorder.delegate = self;
recorder.meteringEnabled = YES;
[recorder prepareToRecord];
[recorder record];

код для записи видео

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [picker dismissViewControllerAnimated:YES completion:^
     {
         if(_isVideo)
         {
             NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
             _imageData = [NSData dataWithContentsOfURL:videoURL];
              [picker dismissViewControllerAnimated:YES completion:nil];
             [ self saveVideo];
         }
     }];
}

-(void)saveVideo
{
    if(_isVideo)
    {

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        NSDateFormatter *formatter;
        NSString        *dateString;
        formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
        dateString = [formatter stringFromDate:[NSDate date]];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@/%@/%@.mp4",_folderName,@"Videos",dateString]];
        NSError * error = nil;
        NSString *pathVideoThumb = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@/%@/%@",_folderName,@"VideoThumb",dateString]];
        [_imageData writeToFile:path options:NSDataWritingAtomic error:&error];
        if (error != nil)
        {
            NSLog(@"Error: %@", error);
            return;
        }
        [self generateThumbImage:pathVideoThumb dataPath:path];
        dispatch_async(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:self.view animated:YES];

            _isVideo=NO;
            videoCount++;
            [videoLabel setText:[NSString stringWithFormat:@"%d %@",videoCount,@"VIDEOS"]];
            [videoView setBackgroundColor:[UIColor clearColor]];

        });
    });
 }
}

Но когда я воспроизвожу записанное видео, оно не содержит звука. Записанный звук работает нормально, я понимаю, что проблема связана с аудиосеансом. Пожалуйста, подскажите, как мне использовать аудиосеанс, чтобы справиться с этим.

Спасибо


person Nitin    schedule 06.08.2014    source источник