任何人都可以帮我使用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);
非常感谢任何帮助
答案 0 :(得分:4)
首先,我强烈建议您查看FMOD附带的“loadfrommemory”示例(它也有C#版本)。但是在这里回答你的问题:
您需要填充FMOD.CREATESOUNDEXINFO结构的某些成员:
info.cbsize = Marshal.SizeOf(info); info.length = file.Length;
您需要告诉FMOD您使用OPENMEMORY标志提供内存数据:
result = _fmod.createStream(file,MODE.CREATESTREAM | MODE.OPENMEMORY,ref info,ref _sound);
这应该是你需要的全部。