audiokit - 在 AKAudioPlayer 中使用 AKAudioFile 和 replaceWith 会导致失真吗?
问题描述
我正在将 AudioKit 构建成一个实验心理学,添加测试内部感觉(内部身体感觉),现在它非常简单,我只有一个 AudioManager.m 类,它声明:
@implementation AudioManager {
AKAudioPlayer* player;
bool canPlay;
}
+(AudioManager *)sharedManager {
static dispatch_once_t pred = 0;
static AudioManager *instance = nil;
dispatch_once(&pred, ^{
instance = [[AudioManager alloc] init];
[instance setup];
});
return instance;
}
小玩家方法,例如:
-(NSError*)playHTTIntro {
return [self playWavInResources:@"Htt1"];
}
然后从特定的视图控制器调用:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[AudioManager sharedManager] playHTTGuess];
}
我遇到的奇怪问题是,随着文件被调用和播放,增加的幅度和失真会累积
当我播放了 10 或 15 个文件时,语音音频文件几乎无法理解
playWavInResources
以上实现为:
-(NSError*)playWavInResources:(NSString*)wavName {
if(player)
[player stop];
NSError* error;
AKAudioFile* audioFile = [[AKAudioFile alloc] initForReading:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:wavName ofType:@"wav"]] error:&error];
if(!error) {
if(player)
[player replaceWithFile:audioFile error:&error];
else
player = [[AKAudioPlayer alloc] initWithFile:audioFile looping:false lazyBuffering:false error:&error completionHandler:nil];
AudioKit.output = player;
// Start audio engine if not already
NSError* error;
[AudioKit startAndReturnError:&error];
if(!error)
[player start];
}
return error;
}
以前有没有人出现过这个问题?
解决方案
推荐阅读
- java - Java:带有 ListenableFuture 的番石榴期货 API
- python - 如何使用嵌套的 for 循环和 IF AND 语句修复列表推导
- updates - 更新订阅 Braintree 和 prorateCharges 错误 ID 已被占用
- sql-server - 使用 OPENQUERY 将 NULL 插入地理类型
- c# - 正则表达式在开始符号字母和至少一个数字时匹配 1-5 个符号
- prestashop - 如何在 Prestashop 1.7.5 中为客户禁用必填字段“公司”?
- kubernetes - 选择哪种 Kubernetes 模式
- javascript - 加载和呈现整个页面后,如何执行函数来更新动态创建的输入的值?
- python - 列出可用的相机 OpenCV/Python
- r - 无法将 ASCII 文件加载到 R 中