BufferedWaveProvider 在 Unity 中不起作用
BufferedWaveProvider doesnt work in Unity
我正在尝试将 NAudio 实现到 Unity 中。我设法 link NAudio dll,但是当我尝试使用 NAudio BufferedWaveProvider
.
播放音乐时出现奇怪的错误
如果我这样:
WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {
reader = new AudioFileReader(@"..\music.mp3"); // some music
player = new WaveOut();
player.Init(reader );
player.Play();
}
音乐播放正常,没有任何问题。
但是当我尝试使用 BufferedWaveProvider
:
WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {
reader = new AudioFileReader(@"..\music.mp3"); // some music
buf = new BufferedWaveProvider(reader.WaveFormat);
byte[] tmp = new byte[50000];
reader.Read(tmp, 0, tmp.Length); //read 50000 bytes
buf.AddSamples(tmp, 0, tmp.Length); //add bytes to buf
player = new WaveOut();
player.Init(buf); //init the WaveOut with buff
player.Play(); // play
}
不玩了!我调试了很多,发现 BufferedWaveProvider
正在使用样本(BufferedBytes 正在降低),但我听不到任何声音!
我正在使用 BufferedWaveProvider
因为一个更复杂的项目,但在这么简单的例子中它已经是一个问题..
我错过了什么?
注意: 相同的代码在 C# 中工作 Windows 表单...
尝试使用 WaveOutEvent
而不是 WaveOut
,它至少在其中一个项目中对我有效。
正如马克指出的那样:
it works because WaveOut
uses Windows message callbacks by default, so if you have no gui thread (e.g. you are in a console app), then it can't be used and WaveOutEvent
should be preferred
我正在尝试将 NAudio 实现到 Unity 中。我设法 link NAudio dll,但是当我尝试使用 NAudio BufferedWaveProvider
.
如果我这样:
WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {
reader = new AudioFileReader(@"..\music.mp3"); // some music
player = new WaveOut();
player.Init(reader );
player.Play();
}
音乐播放正常,没有任何问题。
但是当我尝试使用 BufferedWaveProvider
:
WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {
reader = new AudioFileReader(@"..\music.mp3"); // some music
buf = new BufferedWaveProvider(reader.WaveFormat);
byte[] tmp = new byte[50000];
reader.Read(tmp, 0, tmp.Length); //read 50000 bytes
buf.AddSamples(tmp, 0, tmp.Length); //add bytes to buf
player = new WaveOut();
player.Init(buf); //init the WaveOut with buff
player.Play(); // play
}
不玩了!我调试了很多,发现 BufferedWaveProvider
正在使用样本(BufferedBytes 正在降低),但我听不到任何声音!
我正在使用 BufferedWaveProvider
因为一个更复杂的项目,但在这么简单的例子中它已经是一个问题..
我错过了什么?
注意: 相同的代码在 C# 中工作 Windows 表单...
尝试使用 WaveOutEvent
而不是 WaveOut
,它至少在其中一个项目中对我有效。
正如马克指出的那样:
it works because
WaveOut
uses Windows message callbacks by default, so if you have no gui thread (e.g. you are in a console app), then it can't be used andWaveOutEvent
should be preferred