C#FMOD从流播放

C#FMOD从流播放,c#,audio,stream,fmod,C#,Audio,Stream,Fmod,有人能帮我用FMOD或其他方式播放memorystream中的文件吗 到目前为止,我有一个: 变量 private FMOD.System _fmod = null; private FMOD.Sound _sound = null; private FMOD.Channel _channel = null; 代码 var file = File.ReadAllBytes("test.ogg"); //MessageBox.Show("B

有人能帮我用FMOD或其他方式播放memorystream中的文件吗

到目前为止,我有一个:
变量

    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);

任何帮助都将不胜感激

首先,我强烈建议您看看FMOD附带的“loadfrommemory”示例(它也有一个C版本)。但要回答你的问题:

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

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

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

    结果=_fmod.createStream(文件,MODE.createStream | MODE.OPENMEMORY,ref info,ref _sound)


  • 这应该是你需要做的一切。

    WOW<我怎么没有看到这些例子呢?\u csharp!!!???你是一个绝对的救世主!!!希望我能给你我所有的观点:P谢谢你的帮助!!:D:D:D:D:D:D你真是个神啊:)我以为我永远也拿不到我的音乐播放器了,我需要为我的论文制作音乐播放器!!!:)FMOD很棒!!!嘿,谢谢,这是现在的工作,但我有另一个问题,如果我只填补,比方说,10%的缓冲区,然后开始播放,然后继续填补缓冲区,声音停止播放,一旦达到10%的标记。你知道为什么会这样吗?通过使用MODE.OPENMEMORY,你告诉FMOD将“文件”指向的数据复制到其内部缓冲区中。您可以使用MODE.OPENMEMORY\u POINT,但是有更好的流媒体解决方案,例如用户创建的带有读取回调的声音。您好!请问您是如何使fmodex.dll在C#中工作的?我对此感到困惑。谢谢嗨,很抱歉我没能让它工作。。。最后我用MP3格式的声音文件,因为我的时间不多了。