我正在开发一个需要使用AVFoundation框架播放声音的iOS应用程序.Xcode 4中的工作区结构包含两个项目:
构建实用程序库之后,它会生成一个静态库,该库在主应用程序中用作框架.
因此,当尝试使用下面的代码在主应用程序内播放声音时,它会按预期工作.
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *path = [NSString stringWithFormat:@"%@/sound.mp3", resourcePath];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url
error:&error];
[audioPlayer play];
Run Code Online (Sandbox Code Playgroud)
相反,当尝试使用与上面相同的代码在实用程序库中播放完全相同的声音(或任何其他声音)时,即使错误为nil且audioPlayer属性值为正确,也不会播放任何声音(数字)频道,持续时间).
我确保AVFoundation框架在两个项目中.
此外,我的类使用AVAudioPlayerDelegate协议并实现这两个方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;
Run Code Online (Sandbox Code Playgroud)
尝试播放声音后,这些方法都不会被调用.
如果我使用AudioToolbox框架,那么它会播放声音.但AVFoundation由于几个原因,我对使用感兴趣.
怎么知道发生了什么?我错过了什么AVFoundation吗?它可能与AVAudioPlayer在静态库中使用有关吗?
提前致谢.
audio objective-c avfoundation xcode4 automatic-ref-counting
我想创建一个应用程序,当iPhone处于静音模式时,它会创建声音,音乐或系统声音.在静音模式下,音乐或系统音调是否可以播放任何类型的声音?
我已经将音频工具箱和avfoundation导入到我的班级并将框架添加到我的项目中并使用此代码播放声音:
- (void)playSound:(NSString *)name withExtension:(NSString *)extension
{
NSURL* soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:extension]];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
audioPlayer.delegate = self;
audioPlayer.volume = 1.0;
[audioPlayer play];
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
[self playSound:@"wrong" withExtension:@"wav"];
Run Code Online (Sandbox Code Playgroud)
零声音.非常感谢任何帮助,谢谢.
我已经为Iphone和Ipads做过几个带有buzztouch的应用程序,这里有一个免费的应用程序作为例子:
http://itunes.apple.com/us/app/lr-basics-free-edition/id497563707?mt=8
我不太了解代码,我有很少的基础知识,这就是为什么我使用Buzztouch设计我的应用程序,顺便说一句,这太棒了!
我遇到的唯一问题是播放视频时的默认行为(我的大多数应用都在做,播放教程),如果在Ipad或Iphone上播放静音模式,则没有音频,甚至是音量滑块处于活动状态,给定用户的印象是存在错误,我得到了一些不好的评论,我也有人写信给我.然后告诉他们他们所要做的就是关闭静音模式,音频又回来了,每次都有效,但同时我也会抱怨!
所以这是我的问题,是否有一种简单的方法可以让我在Buzztouch生成的代码中找到一个可以轻松更改的属性,以便在播放视频时,音频保持不变,使静音模式处于活动状态.
我实际检查了4或5个其他类似的应用程序,包括默认的youtube苹果应用程序,默认情况下,即使打开静音模式,音频也会播放,给我的客户留下我的应用程序被窃听的印象.
我不是程序员,所以请在答案中尽可能简单.
Tku非常感谢你的帮助.
哔叽
我正在尝试使用AVPlayer播放mp3(相机快门声).我已经将所有内容都删除到一个简单的按钮,当按下时,它会播放声音.所有对象都正确创建,但是当我在iPhone或iPad(都运行iOS 6)上运行应用程序时,不会产生声音.不,静音按钮未打开,音量调高.:)我可以在两台设备上的其他应用中听到声音.
我做了些蠢事吗?
- (void)playCameraShutterSound
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Grab" withExtension:@"mp3" ];
AVPlayer* player = [AVPlayer playerWithURL:url];
[player play];
}
Run Code Online (Sandbox Code Playgroud) audio ×4
objective-c ×3
ios ×2
iphone ×2
avfoundation ×1
avplayer ×1
buzztouch ×1
ipad ×1
xcode4 ×1