AVAudioPlayer无法从临时文件路径播放声音

时间:2018-01-10 12:46:18

标签: ios objective-c audio avaudioplayer

我已将录制内容保存到 Temp目录,并可使用 iExplorer

进行验证

文件路径结构为TempFolder/UserID/SoundName001.wav 我保存到数据库的位是UserID/SoundName001.wav

以下是我用来播放文件的代码

@property (nonatomic, strong) AVAudioPlayer *player;

-(void) playSound: (NSIndexPath*)recordingIndex {
    NSArray *recording = [recordingArray objectAtIndex:recordingIndex.item-1];
    NSString *filePath = [NSString stringWithFormat:@"%@%@",NSTemporaryDirectory(),[recording objectAtIndex:2]];
    NSURL *recorderURL = [[NSURL alloc] initFileURLWithPath: filePath];
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:recorderURL error:nil];
    [self.player prepareToPlay];
    [self.player setMeteringEnabled:YES];
    [self.player setDelegate:self];
    [self.player play];
}

我设置了一个断点,recorderURL返回以下file:///private/var/mobile/Containers/Data/Application/0883D0DC-B1FD-4D06-A7BB-EBD9EEF5D607/tmp/1/Dog001.wav

Photo evidence

当我调用此方法时,没有任何反应,没有崩溃,没有声音...... 我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

您是否检查过设备上的静音开关?我认为如果静音开关打开,AVPlayer不会播放声音。尝试使用以下代码:

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

viewDidLoad[self.player play];之前,查看音频是否播放。