iOS 在模拟器上播放音频成功但在设备上失败

OMG*_*POP 2 audio cocoa-touch core-audio avfoundation ios

我使用录音机在文档目录中录制和创建文件,然后我使用音频播放器播放它。我可以在模拟器和设备上录制它,但我不能只在设备上播放。

请注意 1. 我不从文件播放声音,我从 NSData 播放(我将音乐存储到数据库中,然后检索它们以播放) 2. 它在模拟器上运行良好,但在设备上失败。

这是我播放音频的代码

- (void)playAudioWithData:(NSData *)data {

    [self stopPlayingAudio];
    [self stopRecordingAudio];


    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [audioSession setActive:YES error:nil];


    self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:nil];

    [self.audioPlayer play];

}
Run Code Online (Sandbox Code Playgroud)

这是录制设置:

    NSDictionary *audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [NSNumber numberWithFloat:44100],AVSampleRateKey,
                                   [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
                                   [NSNumber numberWithInt: 1],AVNumberOfChannelsKey,
                                   [NSNumber numberWithInt:AVAudioQualityMedium],AVEncoderAudioQualityKey,nil];
Run Code Online (Sandbox Code Playgroud)

mam*_*aml 5

而不是使用AVAudioSessionCategoryPlayAndRecord尝试将音频会话设置为录音AVAudioSessionCategoryRecord时,然后设置为AVAudioSessionCategoryPlayback您想要播放刚刚录制的内容。

录制和播放音频时,我在我的应用程序中遇到了同样的事情,这解决了问题。