2

谁能帮助我使用 FMOD 或任何其他方式从内存流中播放文件?

到目前为止我有这个:
变量

    private FMOD.System _fmod = null;
    private FMOD.Sound _sound = null;
    private FMOD.Channel _channel = null;

代码

        var file = File.ReadAllBytes("test.ogg");
        //MessageBox.Show("Bytes from file: " + file.Length);

        FMOD.Factory.System_Create(ref _fmod);

        var result = _fmod.init(2, FMOD.INITFLAGS.NORMAL, (IntPtr)null);
        if(result != FMOD.RESULT.OK) ShowError(result);

        var info = new FMOD.CREATESOUNDEXINFO();

        result = _fmod.createStream(file, MODE.CREATESTREAM, ref info,  ref _sound);
        if (result != RESULT.OK) ShowError(result);

任何帮助将不胜感激

4

1 回答 1

4

首先,我强烈建议您查看 FMOD 附带的“loadfrommemory”示例(它也有 C# 版本)。但是在这里回答你的问题:

  1. 您需要填充 FMOD.CREATESOUNDEXINFO 结构的一些成员:

    info.cbsize = Marshal.SizeOf(info); 信息长度 = 文件长度;

  2. 您需要告诉 FMOD 您正在使用 OPENMEMORY 标志提供内存数据:

    结果 = _fmod.createStream(文件,MODE.CREATESTREAM | MODE.OPENMEMORY,参考信息,参考 _sound);

这应该是你开始所需要的一切。

于 2010-08-05T23:41:03.063 回答