- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在使用 OpenAL 播放游戏音乐。它工作正常,除了它不适用于原始 WAV 文件之外的任何东西。这意味着我最终得到了大约 9mb 的配乐。
我是 OpenAL 的新手,我直接使用来自 Apple 示例 ( https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 ) 的代码来获取缓冲区数据。
问题:有没有办法修改这个函数,让它读取压缩音频并即时解码?
我不太担心音频文件格式,只要它可以播放和压缩(如 mp3、aac、caf)即可。我想这样做(显然)的唯一原因是减小文件大小。
编辑: 看来问题不在于 OpenAL,而在于我用来获取缓冲区的方法。 https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 处的函数使用 AudioFileOpenURL
和 AudioFileReadBytes
。有什么方法可以让框架使用 ExtAudioFileOpenURL
和 ExtAudioFileRead
为我解码音频?
我在这里试过代码:https://devforums.apple.com/message/10678#10678 ,但我不知道该怎么做。我用来获取缓冲区的函数位于 https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 ,我还没有真正修改它,所以这就是我需要构建的。
我已经开始悬赏,因为我真的需要这个,希望有人能给我指明正确的方向。
最佳答案
您需要使用音频服务来加载其他格式。请记住,OpenAL 仅支持未压缩的 PCM 数据,因此您加载的任何数据都需要在加载期间解压缩。
这里有一些代码可以加载 iOS 支持的任何格式:https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/Support/OALAudioFile.m
如果你想流式传输压缩音轨类型的音频,请使用 AVAudioPlayer,因为它直接从磁盘播放压缩音频。
关于iphone - AudioToolbox/OpenAL ExtAudioFile 播放压缩音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673051/
我正在使用 ExtAudioFileWriteAsync 将音频内容写入 m4a 文件,它运行良好。但是,我还想将元数据添加到导出的文件中。 这有可能吗?如果是这样,如何? 如有任何帮助,我们将不胜感
我正在使用 Core Audio SDK 文档中提供的 EXTAudioFileReadTest 应用程序,我正在尝试从 mData 缓冲区中获取所有浮点值,以便我可以用它们绘制波形。 目前,我正在打
我在 Swift 3 中有这段代码,大多数时候我的输出是 0.0 零,我很少看到 e^-50 的非常小的数字 fileURL是一个recording.caf,里面有声音。 有人知道吗? func re
我目前正在使用 OpenAL 播放游戏音乐。它工作正常,除了它不适用于原始 WAV 文件之外的任何东西。这意味着我最终得到了大约 9mb 的配乐。 我是 OpenAL 的新手,我直接使用来自 Appl
使用 Xcode/Cocoa 和 ExtAudioFile API,我尝试存储 AudioBufferList* 对象以供以后使用,但我在重新访问数据时遇到了麻烦。这些对象来自重复的 ExtAudio
我需要在 iOS 上将 WAVE 文件转换为 AAC 编码的 M4A 文件。我知道旧设备或模拟器不支持 AAC 编码。我在运行代码之前正在测试它。但我仍然无法让它工作。 我查看了 Apple 自己的
我是一名优秀的程序员,十分优秀!