我遇到的问题是OpenAL似乎只出现在iPod硬件上,而奇怪的是它 工作正常,而现在却没有。
我正在设置音频会话:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(UInt32), &audioRouteOverride);
AudioSessionSetActive(YES);
初始化OpenAL:
device = alcOpenDevice(NULL);
if (!device) {
NSLog(@"Could not open default OpenAL device.");
return NO;
}
context = alcCreateContext(device, 0);
if (!context) {
NSLog(@"Failed to create OpenAL context for default device.");
return NO;
}
BOOL success = alcMakeContextCurrent(context); // fails here
if (!success) {
NSLog(@"Failed to set current OpenAL context.");
return NO;
输出结果为:
AudioStreamBasicDescription: 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved
2010-10-27 10:51:09.261 FinchTestProject[239:307] Failed to set current OpenAL context.
所以alcMakeContextCurrent函数返回false,我不知道为什么。音频不是我真正的专业知识,而且我找不到太多关于此的信息,所以你们给我的任何帮助都将不胜感激。
谢谢!
编辑:我发现如果我颠倒了初始化的顺序 - 即如果我初始化OpenAL然后初始化AudioSession,它就可以工作......虽然这是我以前订购的顺序而且它不起作用,所以有趣的事情肯定会发生;此外,它仍然不适用于旧版本的iOS答案 0 :(得分:2)
初始化的反向顺序似乎正常,OpenAL然后是AudioSession
答案 1 :(得分:0)
只是猜测:
第1代iPod touch 没有扬声器。因此,您可能无法将音频路由覆盖为不存在的扬声器。
编辑:哦,只有最新的(第4代)iPod touch内置了麦克风。所有其他代都要求插入耳机(带麦克风)进行录制。也许这就是为什么它突然停止工作,耳机被移除了。