ios stream mp3 и запись звука - PullRequest
2 голосов
/ 04 октября 2011

проблема: невозможно записать звук после потоковой передачи звука по http.

Проблема, с которой я столкнулся, заключается в том, что я больше не могу записывать звук после потоковой передачи mp3, используя это руководство: http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html

Я могу отлично записать звук перед тем, как воспроизводить mp3. только после того, как я воспроизведу mp3, используя инструкцию, мое приложение ios больше не сможет записывать звук.

Мне было интересно, не сталкивался ли кто-нибудь из вас с этой проблемой раньше или не догадывался, почему эта проблема возникает? Я опубликую свой код для записи, на случай, если кому-то из вас понадобится посмотреть его.

перед потоковой передачей любого mp3, audioRecorderDidFinishRecording всегда запускается после записи.

после того, как я передаю mp3, audioRecorderDidFinishRecording никогда не запускается после того, как запись была сделана.

Заранее благодарю за помощь.

    // #########################
    NSURL *soundFileUrl = [NSURL fileURLWithPath:self.recordFilePath];

    NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,
                              [NSNumber numberWithInt:AVAudioQualityMax], AVEncoderAudioQualityKey,
                              [NSNumber numberWithInt:24], AVEncoderBitRateKey,
                              [NSNumber numberWithInt:1], AVNumberOfChannelsKey,
                              [NSNumber numberWithFloat:22050.0f], AVSampleRateKey,
                              nil];

     NSError *error = nil;
     self.recorder = [[AVAudioRecorder alloc] initWithURL:soundFileUrl settings:recordSettings error:&error];

     if (error)  {
       NSLog(@"%@", error);
     } else{    
       self.recorder.delegate = self;
       [self.recorder  prepareToRecord];    
       [self.recorder record];

       self.recordCountdown = [NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(updateLabelCountdown) userInfo:nil repeats:YES]; 
     }

    // delegate for finish recording with success and failure
    - (void) audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag {  
        NSLog(@"record did finish flag - %d", flag);
      }

    - (void) audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError *)error   {
        NSLog(@"error record - %@", [error localizedDescription]);
      }

1 Ответ

0 голосов
/ 30 ноября 2011

Попробуйте это

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

ссылка iPhone SDK: AVAudioRecorder не будет записывать после вызова [AVPlayer play]

...