gpt4 book ai didi

ios - 播放声音无延迟iOS

转载 作者:行者123 更新时间:2023-12-01 18:46:08 25 4
gpt4 key购买 nike

我找不到方法以低延迟播放真实声音。

我尝试使用AVFoundation音频播放器在500毫秒左右的巨大延迟

因此,我尝试创建系统声音,并且在没有200ms左右的运气延迟的情况下,它虽然不多,但对我没有用。我最多需要50毫秒。

确保我的声音样本音色清晰无声。

SystemSoundID cID;
BOOL spinitialized;

-(IBAction)doInit
{
if (spinitialized){
AudioServicesPlaySystemSound (cID);

return;
}



NSURL *uref = [[NSURL alloc] initFileURLWithPath: [NSString stringWithFormat:@"%@/soundlib/1.wav", [[NSBundle mainBundle] resourcePath]]];

OSStatus error = AudioServicesCreateSystemSoundID ((__bridge CFURLRef)uref, &cID);
if (error) NSLog(@"SoundPlayer doInit Error is %d",(int)error);


AudioServicesPlaySystemSound (cID);

spinitialized = YES;
}

因此,我尝试通过按下按钮进行 call 。

最佳答案

将已经运行的RemoteIO音频单元(或AVAudioUnit)与已加载到内存中的PCM波形数据一起使用,可以在iOS设备上产生声音的延迟最小。

由于存在缓冲,因此不可能实现零延迟,但是在所有当前的iOS设备上,缓冲大小通常为5.3到5.8毫秒或更小。在最新的iOS设备上,您可以更频繁地获取音频回调。您的音频回调代码必须准备好手动将所需波形数据的适当顺序片段复制到音频缓冲区中。它将在非UI线程中调用,因此回调必须是线程安全的,并且不执行任何锁定,内存管理甚至是Objective C消息传递。

使用其他AV音频播放方法可能会导致更长的延迟,这是因为将声音加载到内存(包括潜在的拆包或解压缩)和打开音频硬件(等)以及通常使用更长的音频所需的时间缓冲区。即使启动RemoteIO音频单元也有其自身的延迟。但是它可以提前启动,有可能会保持静音状态,直到您的应用在收到某些事件后需要以尽可能低的延迟(但非零延迟)播放声音。

关于ios - 播放声音无延迟iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35689772/

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