我使用的是Aran Mulhollan的RemoteIOPlayer,使用的是SDK iphone中的音频队列。我可以没有问题:-添加两个信号来混合声音-通过乘以我从wav文件中获得的UInt32来增加音量
但每一次其他操作都会产生扭曲和失真的声音,特别是我不能将信号分开。我似乎找不出我做错了什么,划分的实际结果似乎是好的;声音/信号处理的某些方面肯定是我无法理解的:)
感谢任何人的帮助!
发布于 2009-11-19 15:43:10
你试过这样的东西吗?
- (void)setQueue:(AudioQueueRef)ref toVolume:(float)newValue {
OSStatus rc = AudioQueueSetParameter(ref, kAudioQueueParam_Volume, newValue);
if (rc) {
NSLog(@"AudioQueueSetParameter returned %d when setting the volume.\n", rc);
}
}发布于 2010-01-20 06:11:31
首先,您提到的代码不使用AudioQueues,它使用AudioUnits。在iphone中混音的最好方法是使用内置的混音器单元,在你从here下载的原始示例的网站上有一些代码。除此之外,我会在你的代码os中检查你是否有正确的数据类型。当你应该使用有符号整数时,你是否在尝试你的无符号整数操作?通常这会产生扭曲的结果(可以理解)
发布于 2009-12-31 07:36:37
iPhone将音频作为16位整数进行处理。大多数音频文件已经被标准化,因此峰值样本值是适合16位有符号整数的最大值。这意味着如果将两个这样的样本加在一起,就会出现溢出,或者在本例中是音频剪辑。如果要将两个音频源混合在一起,并确保没有剪辑,则必须对样本进行平均:将它们相加并除以2。或者将音量设置为一半。如果你使用的是分贝,那大约是-6 dB变化。
https://stackoverflow.com/questions/1540380
复制相似问题