我有一个加密的文件,其中包含许多mp3音轨,我想在我的cocos2d-x游戏运行时解密它,并播放一个特定的mp3,作为背景音乐,但不会生成任何临时文件,但是cocos2d-x中的api只能接受磁盘上存在的.mp3文件,那么如何使cocos2d-x读取我在内存中解密的mp3数据?
例如,对于iOS,bgm是通过CDAudioManager.m中的-(void) load:(NSString*) filePath
的CDLongAudioSource
功能加载的
NSString *path = [CDUtilities fullPathFromRelativePath:audioSourceFilePath];
audioSourcePlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
它正在为initWithContentsOfURL
对象调用AVAudioPlayer
。您可以修改它,也可以创建一个单独的函数来使用initWithData
来满足您的需要。对于Android,似乎更复杂。我已将其追溯到从文件路径执行加载的AudioPlayerProvider.cpp中的
createUrlAudioPlayer(const AudioPlayerProvider::AudioFileInfo &info)
函数。编辑:另一个建议是不要使用他们的音频引擎,而是编写您自己的类,该类将实现本机平台功能来播放来自数据的音频。