【问题标题】:cocos2d-x: read mp3 data from memorycocos2d-x:从内存中读取mp3数据
【发布时间】:2019-10-05 13:24:33
【问题描述】:

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

【问题讨论】:

    标签: c++ cocos2d-x


    【解决方案1】:

    如果您不是从文件路径播放,则必须编辑 cocos2d-x 音频引擎源代码。

    以iOS为例,通过CDAudioManager.m中CDLongAudioSource-(void) load:(NSString*) filePath函数加载bgm

    NSString *path = [CDUtilities fullPathFromRelativePath:audioSourceFilePath];
    audioSourcePlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
    

    它正在为AVAudioPlayer 对象调用initWithContentsOfURL。您可以修改它或创建一个使用 initWithData 的单独函数以满足您的需求。

    对于 Android,它似乎更复杂。我已将其追溯到 AudioPlayerProvider.cpp 中的 createUrlAudioPlayer(const AudioPlayerProvider::AudioFileInfo &info) 函数,该函数正在执行从文件路径加载。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多