Cocos2D-X:从内存中读取 MP3 数据
cocos2d-x: read mp3 data from memory
我有一个加密文件,其中包含许多mp3音轨,我想在我的cocos2d-x游戏运行时对其进行解密,并在没有任何临时文件的情况下播放一个特定的mp3作为背景音乐生成,但是,cocos2d-x中的api只能接受磁盘上现有的.mp3文件,那么如何使cocos2d-x读取我在内存中解密的mp3数据呢?
如果您不是从文件路径播放,则必须编辑 cocos2d-x 音频引擎源代码。
例如,对于 iOS,bgm 是通过 CDAudioManager.m 中CDLongAudioSource
的-(void) load:(NSString*) filePath
函数加载的
NSString *path = [CDUtilities fullPathFromRelativePath:audioSourceFilePath];
audioSourcePlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
它正在为AVAudioPlayer
对象调用initWithContentsOfURL
。您可以修改此函数,也可以创建一个单独的函数,该函数使用initWithData
以满足您的需求。
至于Android,它似乎更复杂。我已经将其追溯到AudioPlayerProvider中的这个createUrlAudioPlayer(const AudioPlayerProvider::AudioFileInfo &info)
函数.cpp该函数正在从文件路径执行加载。
编辑:
另一个建议是不要使用他们的音频引擎,而是编写自己的类,该类将实现本机平台函数以播放来自数据的音频。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何在c++中从文本文件中逐行读取整数
- libmpg123 在我使用整数编码读取 mp3 时强制浮点输出
- Cocos2D-X:从内存中读取 MP3 数据
- 正确读取被ID3标签干扰的MP3文件
- 二进制读取mp3文件的ID3标记
- SDL2 和 SMPEG2 - 尝试读取 MP3 的空声音缓冲区
- 如何使用taglib - c++从MP3文件中读取XingHeaders, VBRIHeaders和sampleCoun