2

我必须先启动录音机,它会在此期间录制音频,同时我还需要从相机录制视频。

录音代码

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

        });
    });
 }
}

但是当我播放录制的视频时,它不包含任何声音。录制的音频工作正常,我知道问题出在音频会话上,请指导我应该如何使用音频会话来处理这个问题。

谢谢

4

0 回答 0