2013-02-20 12 views
6

Ich möchte Audiodatei während der Aufnahme mit der Kamera wiedergeben. Ich benutzte AVAudioPlayer für die Wiedergabe von Audio und AVCamCaptureManager für die Aufnahme.Wiedergabe von Audiodateien während der Videoaufnahme in iOS

Aber wenn der Ton abgespielt wird, wird der Vorschaubildschirm eingefroren. Was soll ich machen?

Danke für Ihre Hilfe. Hier ist der Code. (Ich arbeite an AVCam Beispiel.)

Dies ist Vorschau-Teil.

if ([self captureManager] == nil) { 
     AVCamCaptureManager *manager = [[AVCamCaptureManager alloc] init]; 
     [self setCaptureManager:manager]; 

     [[self captureManager] setDelegate:self]; 

     if ([[self captureManager] setupSession]) {    
      AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[[self captureManager] session]]; 
      UIView *view = [self videoPreviewView]; 
      CALayer *viewLayer = [view layer]; 
      [viewLayer setMasksToBounds:YES]; 

      CGRect bounds = CGRectMake(0, 0, 480, 320); 
      [newCaptureVideoPreviewLayer setFrame:bounds]; 

      if ([newCaptureVideoPreviewLayer isOrientationSupported]) { 
       [newCaptureVideoPreviewLayer setOrientation:[DeviceProperties setPreviewOrientation]]; 
      } 

      [newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 

      [viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]]; 

      [self setCaptureVideoPreviewLayer:newCaptureVideoPreviewLayer]; 
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
       [[[self captureManager] session] startRunning]; 
      }); 

      [self updateButtonStates];   
     } 

Und das ist Audio-Play-Teil.

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", sound] ofType:@"wav"]]; 
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
    [audioPlayer play]; 

Wenn ich AudioServicesPlaySystemSound normale ohne frieren, aber dieses Mal ist es funktioniert nur auf viewDidLoad.

CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileRef; 
    soundFileRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) CFBridgingRetain(@"sound"), CFSTR ("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
+0

Konnten Sie Ihren Code posten? – Robert

+0

Irgendwelche Updates zu diesem Thema? Ich habe mich gefragt, ob Sie die Kamera einschalten können (nicht unbedingt Video aufnehmen), während Sie Audio mit AVAudioPlayer aufnehmen. –

+0

ich habe auch gleich problem.was mache ich jetzt .. –

Antwort

0

Hoffnung Einstellung AVAudioSession Kategorie AVAudioSessionCategoryPlayAndRecord wird das Problem lösen. Stellen Sie auch die Kategorieoptionen auf AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionMixWithOthers ein. Bitte überprüfen Sie den folgenden Satz von Code

@property (strong, nonatomic) AVAudioPlayer *audioPlayer; 

NSURL *soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"VoicemailSound" ofType:@"mp3"]]; //Download and add a system sound to your project and mention its name and type here 
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; 

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionMixWithOthers error: nil]; 

[self.audioPlayer prepareToPlay]; 
[self.audioPlayer play]; 
Verwandte Themen