有关 .NET 跨平台音频库的一些讨论已有 10 多年的历史。现在我们已经迁移到 .NET8 Core,我们有哪些选择?
为了清楚起见,我相信为功能添加一些上下文将是......
很高兴拥有...
这是我在筛选了几个废弃的项目后发现的……
NAudio 不起作用的示例... 来自:https://github.com/naudio/NAudio/blob/master/Docs/EnumerateOutputDevices.md
for (int n = -1; n < WaveOut.DeviceCount; n++)
{
var caps = WaveOut.GetCapabilities(n);
Console.WriteLine($"{n}: {caps.ProductName}");
}
和
for (int n = -1; n < WaveIn.DeviceCount; n++)
{
var caps = WaveIn.GetCapabilities(n);
Console.WriteLine($"{n}: {caps.ProductName}");
}
因此,当文档不正确时,NAudio 的使用信心很低。
按照微软一贯的风格,没有太多关于如何使用它的文档。现有的文档围绕使用语音服务展开,而提及 Audio 类是事后才想到的。但对于 .NET 8 Core 跨平台音频解决方案来说,它看起来很有前途。
参考:https://github.com/csukuangfj/PortAudioSharp2
要获取 ARM64 Linux 的 libportaudio.so,只需执行以下操作...
sudo apt-get install libasound2-dev
git clone https://github.com/PortAudio/portaudio.git
cd portaudio
./configure --with-alsa
make -j4
echo "1) find the libportaudio.so in lib/.libs/"
echo "2) rename libportaudio.so.2.0.0 to libportaudio.so"
*注意:我在 Pi4 上使用 -j4 来使用 4 个核心。 Ubuntu 控制台模式下 2 GB 内存足够。如果出现“内存不足”错误,请删除 -j4 选项。
我对 PortAudio 的体验很好,但它缺乏许多编解码器功能。它仅适用于原始输入/输出音频,但跨平台很好。将 PortAudio 与 WAV 和/或 MP3 库相结合可能足以满足您的用例。
理想情况下,我希望某个混音器能够同时播放多个声音文件。这可能需要多个流。我还没有走到那一步。我会向您提供更多反馈。
图书馆是否可以分离可能值得探索。
所以我的问题是 - 你们都使用什么来实现 .NET 8 Core 的跨平台音频选项?
sdcsd sdgvd dsgsd dsgsdd dssvs scsd