【问题标题】:iOS play audio success on simulator but fail on deviceiOS在模拟器上播放音频成功但在设备上失败
【发布时间】:2014-03-23 22:06:26
【问题描述】:

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

请注意 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];

}

这是录制的设置:

    NSDictionary *audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [NSNumber numberWithFloat:44100],AVSampleRateKey,
                                   [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
                                   [NSNumber numberWithInt: 1],AVNumberOfChannelsKey,
                                   [NSNumber numberWithInt:AVAudioQualityMedium],AVEncoderAudioQualityKey,nil];

【问题讨论】:

  • 你检查数据是否加载了吗?只是在播放前记录数据?

标签: ios cocoa-touch audio avfoundation core-audio


【解决方案1】:

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

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

【讨论】:

  • 播放录制的音频只是一个虚拟示例。 playAudioWithData 方法应该播放除刚刚录制的数据之外的任何音频。
  • 每次开始录音或播放时都需要创建会话吗?
  • 每次都设置会话对我有用。我向 Github 添加了一个小应用程序,演示了解决此问题的方法。 iOS-Play-And-Record-Demo
  • 事实证明 kAudioFormatLinearPCM 无法在设备上运行,您的代码的 mpeg 可以运行
  • OMGPOP - 关于如何解决线性 PCM 问题的任何提示?
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多