C # FMOD играет из потока - PullRequest
       18

C # FMOD играет из потока

2 голосов
/ 05 августа 2010

Может ли кто-нибудь помочь мне при воспроизведении файла из потока памяти с использованием 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 Ответ

4 голосов
/ 06 августа 2010

Во-первых, я настоятельно рекомендую вам взглянуть на пример «loadfrommemory», который поставляется с FMOD (он также имеет версию C #). Но чтобы ответить на ваш вопрос здесь:

  1. Вам необходимо заполнить некоторые члены структуры FMOD.CREATESOUNDEXINFO:

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

  2. Вы должны сообщить FMOD, что вы предоставляете данные в памяти, с флагом OPENMEMORY:

    result = _fmod.createStream (файл, MODE.CREATESTREAM | MODE.OPENMEMORY, информация ref, ссылка _sound);

Это должно быть все, что вам нужно для начала.

...