使用 AudioToolBox 播放声音文件的类编译但没有声音
Posted
技术标签:
【中文标题】使用 AudioToolBox 播放声音文件的类编译但没有声音【英文标题】:Classes using AudioToolBox to play sound file compiles but no sound 【发布时间】:2014-03-06 04:21:09 【问题描述】:我有两个类,其中一个我正在初始化 SystemSoundID,然后在一个链接到实际声音文件的方法中。 但是当我调用 MainViewController 中的方法并通过 IBAction 播放时,没有声音播放。
声音.h:
#import <Foundation/Foundation.h>
#import <AudioToolbox/Audioservices.h>
@interface TheSound : NSObject
SystemSoundID yayFileID;
@property(nonatomic) SystemSoundID yayFileID;
- (void) initSound;
@end
声音.m:
#import "TheSound.h"
#import <AudioToolbox/AudioServices.h>
@implementation TheSound
@synthesize yayFileID;
- (void) initSound
NSString *yayPath = [[NSBundle mainBundle] pathForResource: @"yay" ofType: @"wav"];
CFURLRef yayURL = (__bridge CFURLRef) [NSURL fileURLWithPath:yayPath];
AudioServicesCreateSystemSoundID(yayURL, &yayFileID);
@end
MainViewController.h:
#import <UIKit/UIKit.h>
#import "TheSound.h"
@interface MainViewController : UIViewController
- (IBAction) playSound: (id) sender;
@end
MainViewController.m:
#import "MainViewController.h"
#import <AudioToolbox/AudioServices.h>
#import "TheSound.h"
@interface MainViewController ()
@property SystemSoundID yayFileID;
@property (nonatomic) TheSound *foo;
@end
@implementation MainViewController
@synthesize foo;
- (void)viewDidLoad
[foo initSound];
[super viewDidLoad];
- (IBAction)playSound:(id)sender
AudioServicesPlaySystemSound(_yayFileID);
@end
对于我做错的事情的帮助将不胜感激!提前致谢!
【问题讨论】:
【参考方案1】:这里
- (IBAction)playSound:(id)sender
AudioServicesPlaySystemSound(_yayFileID);
变量_yayFileID
引用了MainViewController
中的一个变量,它与TheSound
对象中的yayFileID
变量完全无关。
也许你试试
AudioServicesPlaySystemSound(foo.yayFileID);
即使你这样做,我也不认为它会起作用,因为另外,你的 foo
变量没有初始化,所以调用 initSound
被发送到 null。你应该这样做
foo = [[TheSound alloc] init];
[foo initSound];
【讨论】:
以上是关于使用 AudioToolBox 播放声音文件的类编译但没有声音的主要内容,如果未能解决你的问题,请参考以下文章
IOS音频1:之采用四种方式播放音频文件AudioToolbox AVFoundation OpenAL AUDIO QUEUE