使用 AVAudioPlayer 没有声音
Posted
技术标签:
【中文标题】使用 AVAudioPlayer 没有声音【英文标题】:No sound using AVAudioPlayer 【发布时间】:2013-08-25 17:07:35 【问题描述】:我正在尝试使用 AVAudioPlayer 播放声音,但没有成功。我在 ios 模拟器和我的 iPhone 上都试过了。我没有收到任何错误,但我也没有听到任何声音。
这是我的代码:
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: @"RiggerSound_Click" ofType: @"wav"];
NSLog( @"Path is %@", soundFilePath );
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
NSError *error;
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error];
[fileURL release];
if (newPlayer != nil)
if( ![newPlayer play] )
NSLog( @"Error playing" );
[newPlayer release];
else
NSLog(@"Error creating audioPlayer: %@", [error localizedDescription]);
soundFilePath 是“/Users/myname/Library/Application Support/iPhone Simulator/6.1/Applications/E50059DD-B328-45C7-A5D5-C650F415B183/appname.app/RiggerSound_Click.wav”。
“newPlayer”变量不为空,[newPlayer play] 不会失败。
“RiggerSound_Click.wav”文件显示在我项目的 Resources 文件夹中。我可以在项目中选择它,点击播放按钮,然后听到声音。
我被难住了。
感谢您的帮助。
【问题讨论】:
您是否为您的应用设置了 AVAudioSession? 立即释放播放器而不保留另一个引用会阻止它播放 【参考方案1】:在播放前设置 AVAudioPlayer 的代理。例如,
newPlayer.delegate = self;
另外,请确保您的代理类符合 AVAudioPlayerDelegate 协议:
MyClass : Superclass <AVAudioPlayerDelegate>
【讨论】:
【参考方案2】:只需将 AVAudio Player 定义为静态
static AVAudioPlayer *newPlayer = Nil;
if(newPlayer == Nil)
newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error];
就是这样
【讨论】:
不,应该是实例变量!以上是关于使用 AVAudioPlayer 没有声音的主要内容,如果未能解决你的问题,请参考以下文章