cocos2d-x:从内存中读取mp3数据

问题描述 投票:0回答:1

我有一个加密的文件,其中包含许多mp3音轨,我想在我的cocos2d-x游戏运行时解密它,并播放一个特定的mp3,作为背景音乐,但不会生成任何临时文件,但是cocos2d-x中的api只能接受磁盘上存在的.mp3文件,那么如何使cocos2d-x读取我在内存中解密的mp3数据?

c++ cocos2d-x
1个回答
0
投票
如果您不是从文件路径播放,则必须编辑cocos2d-x音频引擎源代码。

例如,对于iOS,bgm是通过CDAudioManager.m中的-(void) load:(NSString*) filePathCDLongAudioSource功能加载的

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)函数。

编辑:另一个建议是不要使用他们的音频引擎,而是编写您自己的类,该类将实现本机平台功能来播放来自数据的音频。

© www.soinside.com 2019 - 2024. All rights reserved.