C#FMOD从流播放

时间:2010-08-05 16:03:38

标签: c# audio stream fmod

任何人都可以帮我使用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);

非常感谢任何帮助

1 个答案:

答案 0 :(得分:4)

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

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

    info.cbsize = Marshal.SizeOf(info); info.length = file.Length;

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

    result = _fmod.createStream(file,MODE.CREATESTREAM | MODE.OPENMEMORY,ref info,ref _sound);

  3. 这应该是你需要的全部。