标签: openal

iOS上的MP3流媒体

我想用OpenAL在iOS游戏中播放音乐.音乐文件以mp3格式存储,我想使用缓冲队列来传输它们.我使用AudioFileReadPacketData()将音频数据加载到缓冲区中.但是播放缓冲区只会给我带来噪音.它适用于caf文件,但不适用于mp3.我是否错过了解码文件的一些重要步骤?

代码我用来打开声音文件:

- (void) openFile:(NSString*)fileName {
   NSBundle *bundle = [NSBundle mainBundle];
   CFURLRef url = (CFURLRef)[[NSURL fileURLWithPath:[bundle pathForResource:fileName ofType:@"mp3"]] retain];
   AudioFileOpenURL(url, kAudioFileReadPermission, 0, &audioFile);
   AudioStreamBasicDescription theFormat;
   UInt32 formatSize = sizeof(theFormat);
   AudioFileGetProperty(audioFile, kAudioFilePropertyDataFormat, &formatSize, &theFormat);  
   freq = (ALsizei)theFormat.mSampleRate;
   CFRelease(url);
}
Run Code Online (Sandbox Code Playgroud)

我用来填充缓冲区的代码:

- (void) loadOneChunkIntoBuffer:(ALuint)buffer {
    char data[STREAM_BUFFER_SIZE];
    UInt32 loadSize = STREAM_BUFFER_SIZE;
    AudioStreamPacketDescription packetDesc[STREAM_PACKETS];
    UInt32 numPackets = STREAM_PACKETS;
    AudioFileReadPacketData(audioFile, NO, &loadSize, packetDesc, packetsLoaded, &numPackets, data);
    alBufferData(buffer, AL_FORMAT_STEREO16, data, loadSize, freq);
    packetsLoaded += numPackets;
}
Run Code Online (Sandbox Code Playgroud)

iphone openal

7
推荐指数
1
解决办法
5869
查看次数

如何在OpenAL或Core Audio中调整Head相关传输函数(HRTF)?

OpenAL利用HRTF算法用立体声耳机伪造环绕声.然而,HRTF与用户头部和耳朵的形状之间存在重要的依赖关系.

简化,这意味着:如果您的头部/耳朵与他们实施的标准HRTF功能相差太大,环绕声效果会逐渐消失.

我还没有找到一种方法来调整导致HRTF算法的各种因素,例如头部直径,耳廓/外耳尺寸,耳朵到耳朵距离,鼻子长度和影响HRTF的其他重要特性.

是否有任何已知的方法来设置这些参数以获得最佳环绕声体验?

iphone audio openal core-audio ios

7
推荐指数
1
解决办法
2384
查看次数

Java中可靠的声音API,用于简单的数字样本回放

是否有一个很好的方法可以在Java中获得体面,可靠的数字采样声音播放?

我的请求列表非常简短:

  • 将数字化样本加载到内存中(例如,来自jar中捆绑的资源),例如.wav文件
  • 以非阻塞的方式播放它们
  • 当我同时播放几个样本并且它们在时间上交叉时,它们应该正确混合

拥有以下内容会很高兴,但实际上我可以没有它:

  • 从.ogg或类似的压缩格式播放(显然没有在Java中实现CPU饥饿的解码器)
  • 在播放时仍然播放相同的样本不应该停止先前播放给定的样本,但是第二个副本应该开始并与第一个正确混合

我已经尝试了臭名昭着的Java Sound API,但发现它完全不可靠,似乎无法满足我的最小愿望清单.我得到的问题:

  • 在使用ALSA dmix(OpenJDK 6)的Linux上,在初始化Java Sound API时让任何其他应用程序使用音频只会使Java应用程序中的所有声音消失而不会出现任何错误/警告.

  • 在Linux(OpenJDK 6)上,列出MixerInfos并尝试Clip使用其中任何一个获取对象时,在尝试加载wav文件时会引发以下异常:

    java.lang.IllegalArgumentException: Line unsupported: interface Clip supporting format PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian
    
    Run Code Online (Sandbox Code Playgroud)

    因此,AudioSystem.getClip(anySortOfMixer)似乎根本不起作用.只有AudioSystem.getClip()作品.

  • 使用不同的采样率/位/格式加载文件Clip失败LineUnavailableException.似乎第一次调用clip.open将声音系统设置为特定声音选项,在调用后加载具有略微不同采样率的文件(例如,第一个是44100,第二个是48000)

  • 在Linux(OpenJDK 6)上初始化几个不同的Clips并尝试播放它们只会使最后加载Clip声音 - 没有给出错误/警告,但只有play在最后Clip加载时才使用任何声音 - 所有其他声音都是静音的:

    Clip loadSound(String name) {
        URL url = this.getClass().getResource("/" + name + ".wav");
        Clip …
    Run Code Online (Sandbox Code Playgroud)

java openal alsa lwjgl javasound

7
推荐指数
1
解决办法
685
查看次数

在OpenAL中播放声音时收到通知

我在iPhone上使用OpenAL同时播放多个音频样本.

我可以让OpenAL在单个样本播放时通知我吗?

我想避免硬编码样本长度和设置计时器.

iphone audio openal core-audio

6
推荐指数
2
解决办法
8035
查看次数

用于八度音程中特定音符的OpenAl音高值

我的iPhone应用程序上有一个OpenAl声音引擎.当我播放我加载的声音时,我可以控制它的音高.

在OpenAl中,设置为1.0的音高无效.如果你把它加倍到2.0,它会弹奏1个八度的音符(12个半音).如果你把它减半,到0.5,它将是一个八度音程(12个半音).

所以,我原来的样品被打C.我认为,如果我把1×12(个半音)我可以得到在八度音程的各个音符的音高.但事实似乎并非如此.这让我们认为半音不是平等的价值观.真的吗?

有谁知道如何计算八度音中单个音符的openAl音高值?

谢谢

iphone audio openal pitch

6
推荐指数
1
解决办法
2105
查看次数

使用OpenAL进行硬件加速音频解码

在使用OpenAL库时,是否可以使用iPhone的mp3和AAC的硬件加速解码?

我想如果可能的话,有两种可能的方法.
iPhone特定的OpenAL扩展.
iPhone API将音频解码为原始字节.

我有两个具体的用例.

  • 完全解码一个短的声音咬.
  • 分段解码较大的声音文件,以便它可以流式传输到OpenAL而不是一次性加载.

更新

男孩!没人能得到答案吗?Apple的NDA是否会纠结这些问题?这是怎么回事?当然,使用OpenAL的其他人希望获得更好的音频性能.

c++ iphone openal objective-c codec

6
推荐指数
1
解决办法
1686
查看次数

OpenAL源在停止并删除后继续播放

我们的ipad应用程序并行播放一堆OpenAL源,每个持续触摸一个.源是在touchesMoved上创建和启动的,并在touchesEnded或touchesCancelled上停止.

事情似乎工作正常,除了一个错误,有时一个来源似乎在触摸结束后继续播放.这似乎只在生成大量触摸事件时才会发生.

我已经验证,当发生这种情况时,我的所有AL源都已使用alSourceStop停止并且已被alDeleteSources销毁.OpenAL没有报告任何错误.但声音并没有停止.

我开始认为这可能是OpenAL的iOS实现中的一个错误.有没有人见过这样的东西?

openal ios

6
推荐指数
1
解决办法
976
查看次数

在循环声音时,OpenAL会出现故障

我正在使用openAL为我的游戏播放声音,我遇到了一些问题,有时在循环播放时会出现小故障.也没有循环我得到一个小流行...有时但不是全部.

我认为这与缓冲区有点太长有关,所以最后会有一些未定义的数据.我只是无法弄清楚如何改变这一点.我正在使用此功能加载一个caf文件:

void* MyGetOpenALAudioData(CFURLRef inFileURL, ALsizei *outDataSize, ALenum *outDataFormat, ALsizei *outSampleRate, ALdouble *duration) {
OSStatus                        err = noErr;    
SInt64                          theFileLengthInFrames = 0;
AudioStreamBasicDescription     theFileFormat;
UInt32                          thePropertySize = sizeof(theFileFormat);
ExtAudioFileRef                 extRef = NULL;
void*                           theData = NULL;
AudioStreamBasicDescription     theOutputFormat;

// Open a file with ExtAudioFileOpen()
err = ExtAudioFileOpenURL(inFileURL, &extRef);
if(err) { printf("MyGetOpenALAudioData: ExtAudioFileOpenURL FAILED, Error = %ld\n", err); goto Exit; }

// Get the audio data format
err = ExtAudioFileGetProperty(extRef, kExtAudioFileProperty_FileDataFormat, &thePropertySize, &theFileFormat);
if(err) { printf("MyGetOpenALAudioData: ExtAudioFileGetProperty(kExtAudioFileProperty_FileDataFormat) FAILED, Error = %ld\n", …
Run Code Online (Sandbox Code Playgroud)

iphone openal ios

6
推荐指数
1
解决办法
1078
查看次数

使用IOS进行时间拉伸和音高变换

简而言之: 如何在iOS中进行时间拉伸和音高转换?

详细地:

我想做什么?

应用程序显示视频缩略图的用户选择一定范围内的帧从视频文件.

我要申请的坡道缓莫,选定的持续时间或帧的视频.

Ramp Slow Mo:动态地延长(时间拉伸+音高变化).我必须在一个for循环中改变时间和音高,比如10次迭代.它只不过是英文字母"U"的行为.所以,我会增加时间和音调并减少它们.

我怎么尝试:

  1. 查找用户所选视频的开始/结束时间.
  2. 通过AVFoundation Mutable Composition分别分割视频和音频.
  3. 对于视频:在开始/结束时间之间的持续时间应用时间延长.*没问题*,它正如我所期待的那样发生.
  4. 对于音频:时间伸缩和音高动态转移,这也是所选择的时间帧.我正在使用狄拉克.现在,我想使用IOS SDK本身.
  5. 合并音频和视频将慢速文件作为文件发布并存储.

分析:

到目前为止,我发现OpenAlAudio Units(单独使用AUVarispeed或者同时使用AUTimePitchTime Rate)可以提供帮助.分割视频和音频后,我将使用OpenAL或Audio Units继续进行音频URL.

我的问题: …

iphone openal core-audio audiounit ios

6
推荐指数
0
解决办法
837
查看次数

WaveData LWJGL3

我试图根据本教程(http://wiki.lwjgl.org/index.php?title=OpenAL_Tutorial_1_-_Single_Static_Source)在LWJGL 3中加载声音,但是我发现了类WaveData的问题,这很可能是LWJGL 2.X的旧版本不存在.因为我甚至无法编译代码.有没有其他方法如何使用openAL加载lwjgl中的声音...

在LWJGL 2我曾经使用paulscode音响系统(http://www.paulscode.com/forum/index.php?topic=4.0),但我不确定它现在是否适用于较新版本的LWJGL 3.谢谢为你的答案:)

如果在lwjgl3中有关于声音的任何教程,你能不能在你的答案中包含链接,我尝试谷歌搜索theese教程多年但我失败了.

java audio openal lwjgl

6
推荐指数
1
解决办法
639
查看次数

标签 统计

openal ×10

iphone ×7

audio ×4

ios ×4

core-audio ×3

java ×2

lwjgl ×2

alsa ×1

audiounit ×1

c++ ×1

codec ×1

javasound ×1

objective-c ×1

pitch ×1