gpt4 book ai didi

c# - BufferedWaveProvider 在 Unity 中不起作用

转载 作者:行者123 更新时间:2023-11-30 21:57:52 25 4
gpt4 key购买 nike

我正在尝试将 NAudio 实现到 Unity 中。我设法链接了 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

关于c# - BufferedWaveProvider 在 Unity 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com