AVFoundation - iOS 听不到声音

Posted

技术标签:

【中文标题】AVFoundation - iOS 听不到声音【英文标题】:AVFoundation - iOS can't hear sound 【发布时间】:2012-09-19 15:49:24 【问题描述】:

我正在尝试使用 AVFoundation 框架播放 mp3 文件。它无法检测到文件并出现以下错误:

     Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'

实现的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"];
NSLog(@"directory %@",path);
AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];

当我将 pathForResource:@"sound" 更改为 pathForResource:@"sound" (空格)时,它可以检测到文件但听不到声音。我也在 .h 文件中声明了 AVdelegate。有谁知道是什么问题?

【问题讨论】:

您的设备静音了吗?这比你想象的要多。 ***.com/questions/4640880/… ***.com/questions/8016765/… 这两个链接解决了这个问题。还是很感激 【参考方案1】:

您需要先准备好准备播放音频才能播放..检查此代码 sn-p.. 它适用于我。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3", fileName]];

NSError        *err;

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) 
    
    AVAudioPlayer  *player = [[AVAudioPlayer alloc] initWithContentsOfURL:
              [NSURL fileURLWithPath:filePath] error:&err];

    player.delegate = self;

    [player prepareToPlay];
    [player setNumberOfLoops:0];
    [player setVolume:0.5];
    [player play];    

【讨论】:

prepareToPlay 有助于减少声音开始播放所需的时间,但实际上并不是必需的。此外,OP 无法从应用程序包中播放声音,而不是 NSDocumentDirectory。也许你可以编辑这个来帮助 OP :) 你好 NSPostWhenldle 你说的 OP 是什么意思?

以上是关于AVFoundation - iOS 听不到声音的主要内容,如果未能解决你的问题,请参考以下文章

iOS OC环信实时语音切换听筒免提听不到声音报错:AVAudioSessionErrorCodeBadParam

AVfoundation AudioPlayer 不工作

iOS - 使用 AVFoundation 录制声音后 iPhone 声音级别低

Objective C - IOS - Xcode 4.6.2 - 听不到 mp3 文件的声音

从 IBAction 方法调用 AudioServicesPlaySystemSound 声音时听不到声音

无延迟播放声音 iOS