gpt4 book ai didi

ios - 使用 AudioServicesPlaySystemSound 一次播放 1 个声音

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:51:07 24 4
gpt4 key购买 nike

我正在阅读关于堆栈溢出的这篇关于使用 AudioServicesPlaySystemSound 一次播放一个声音的帖子。

stop sound in iPhone

我遇到了同样的问题,使用以下代码,当您在另一个按钮停止播放之前按下一个按钮时,第二个声音会在第一个声音之上播放,因此这两个声音会重叠。

-(IBAction)button1:(id)sender{
SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
pathForResource:@"sound1"
ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
AudioServicesPlaySystemSound(soundID);
[soundFile release];
}

-(IBAction)button2:(id)sender{
SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
pathForResource:@"sound2"
ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
AudioServicesPlaySystemSound(soundID);
[soundFile release];
}

根据苹果的documentation :

AudioServicesPlaySystemSound 应该一次只播放一种声音。

另外,当你使用AudioServicesPlaySystemSound函数时:

  • 声音以当前系统音量播放,没有可用的编程音量控制
  • 立即播放声音
  • 循环和立体定位不可用
  • 无法同时播放:您一次只能播放一种声音

所以我不明白为什么可以同时播放多个声音。

我尝试使用 AudioServicesDisposeSystemSoundID,但声音仍然重叠,我做错了吗?

-(IBAction)sound2:(id)sender{
AudioServicesDisposeSystemSoundID
SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
pathForResource:@"sound2"
ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
AudioServicesPlaySystemSound(soundID);
[soundFile release];
}

目前,我正在使用 AVAudioPlayer,但声音开始延迟,如果可能的话,我想使用 AudioServicesPlaySystemSound,因为它会立即播放声音。

请问有没有人遇到同样的问题?

非常感谢您的宝贵时间。

最佳答案

尝试使用 AudioServicesDisposeSystemSoundID

这只是解决您的问题的方案。如果需要再次播放,则必须重新创建声音。

关于ios - 使用 AudioServicesPlaySystemSound 一次播放 1 个声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com