如何在iPhone SDK中一次播放多个声音?
答案 0 :(得分:1)
here是使用AudioUnits的示例。它们可能对您的要求有点复杂,但之后您从未说明过您的要求。
答案 1 :(得分:1)
我发现如果您不需要任何高级音频功能,AVAudioPlayer
和NSOperationQueue
工作得非常好。
注意:此示例已根据项目进行调整,可能包含一些错误
//sound1 and sound2 are NSData objects
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSError *error = nil;
AVAudioPlayer *player1 = [[AVAudioPlayer alloc] initWithData:sound1 error:&error];
AVAudioPlayer *player2 = [[AVAudioPlayer alloc] initWithData:sound2 error:&error];
if(error)
{
//Handle errors...
}
NSInvocationOperation *op1 = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(playSounds:) object:player1] autorelease];
NSInvocationOperation *op2 = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(playSounds:) object:player2] autorelease];
[queue addOperation:op1];
[queue addOperation:op2];
playSounds
方法看起来像这样:
- (void)playSounds:(id)data
{
AVAudioPlayer *player = (AVAudioPlayer *)data;
[player prepareToPlay];
[player play];
}
关于效率的说明,这在模拟器上可以正常工作,但设备上昂贵的操作是创建AVAudioPlayer
对象,即:
AVAudioPlayer *player1 = [[AVAudioPlayer alloc] initWithData:sound1 error:&error];
因此,最好将所有声音放在一个文件中,并使用currentTime
属性以及play
和stop
方法播放声音文件的正确部分。< / p>