C# 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 ответ
Решение
Во-первых, я настоятельно рекомендую вам взглянуть на пример "loadfrommemory", который поставляется с FMOD (он также имеет версию C#). Но чтобы ответить на ваш вопрос здесь:
Вам необходимо заполнить некоторые члены структуры FMOD.CREATESOUNDEXINFO:
info.cbsize = Marshal.SizeOf (info); info.length = file.Length;
Вы должны сообщить FMOD, что вы предоставляете данные в памяти с флагом OPENMEMORY:
result = _fmod.createStream (файл, MODE.CREATESTREAM | MODE.OPENMEMORY, ссылка ref, ref _sound);
Это должно быть все, что вам нужно, чтобы начать.