我正在尝试播放包含我的流的书面内容的文件。这真的很奇怪,因为如果我只是进去手动播放它,但是无论何时我尝试使用该程序播放它,都没有来自剪辑的声音。 (文件中有内容)。我下载了一个仅用于测试的音乐文件,并将该名称与" fileName"交换。字符串变量,并与程序一起正常播放文件。
public void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
string fileName = $"{ Guid.NewGuid() }.mp3";
using (var file = File.OpenWrite(Path.Combine(Directory.GetCurrentDirectory(), fileName)))
{
args.EventData.CopyTo(file);
file.Flush();
}
WaveOut waveOut = new WaveOut();
Mp3FileReader reader = new Mp3FileReader(fileName); // If i change "fileName" to my music test file, the program can play it fine. But whenever i switch to the created file name from the Stream. It doesnt play it :O
waveOut.Init(reader);
waveOut.Play();
}
我需要使用NAudio,因为这将在.net核心上运行。所以我不能仅仅使用SoundPlayer来获取一般信息。
项目背景。在我需要.net核心之前,我只是运行这个完美运行的代码。直接从api播放音频。但是,现在我无法使用它,因为.net核心不支持system.media。母鸡为什么我想出我需要将数据加载到文件中,mp3或wav对我来说不合适,然后用里面的内容播放该文件。
public void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
SoundPlayer player = new SoundPlayer(args.EventData);
player.PlaySync();
args.EventData.Dispose();
}
答案 0 :(得分:0)
我设法解决了这个问题。我真的不知道我做了什么。因为我确信我之前尝试过这个。我确实重新启动了电脑等,但你现在有效..
public void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
string fileName = $"{ Guid.NewGuid() }.wav";
using (var file = File.OpenWrite(Path.Combine(Directory.GetCurrentDirectory(), fileName)))
{
args.EventData.CopyTo(file);
file.Flush();
Console.WriteLine(fileName);
}
WaveOut waveOut = new WaveOut();
WaveFileReader reader = new WaveFileReader(fileName);
waveOut.Init(reader);
waveOut.Play();
}