iphone - OpenAL 初始化问题,仅限 iPod(?)

标签 iphone audio ipod openal finch

我在使用 OpenAL 时遇到了一个问题,该问题似乎只出现在 iPod 硬件上,奇怪的是它以前工作正常,但现在却不行了。

我正在设置 Audio Session :

[[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

最佳答案

初始化的逆序似乎可以正常工作,先是 OpenAL,然后是 AudioSession

关于iphone - OpenAL 初始化问题,仅限 iPod(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201220/

相关文章:

html - 如何通过 Xcode 真正使用 PhoneGap

ios - 当 iOS 7 上的 selectedIndex 值改变时 TabBar 消失

iphone - iPhone应用程序中可以使用什么来代替工具提示?

iphone - iPhone SpeakHere 示例中的录音文件位于哪里?

android - 取消注册BroadCast onDestroy()

background - 如何在cocos2d中将iPod库中的音乐作为背景音乐加载/播放? (苹果手机)

ios - 我可以在要提交给应用商店的应用程序中使用SpringBoardServices吗?

javascript - 安排Web Audio Api播放、多次播放问题

ios - 在没有证书的情况下在 Xcode 4.3+ 中部署 iOS App

linux - Linux 下的 iPod 开发