【问题标题】:Cross-platform audio library for .NET [closed].NET 的跨平台音频库 [关闭]
【发布时间】:2013-03-20 19:10:34
【问题描述】:

要求:

  • 实时从麦克风获取原始输入
  • 实时回放原始输入

我似乎无法从谷歌搜索中找到太多关于它的信息。有人用过类似的吗?

我使用的是 C#,它需要在 Windows、Linux 和 Mac 上工作,后两者使用 Mono。

我可能愿意使用 p/invoke,但我对本机代码并不是特别熟悉,而且会很困难。如果有人可以推荐一个原生库,我会试一试。

【问题讨论】:

  • 我敢打赌这篇文章很快就会被关闭,因为 stackoverflow 的一些人偏向于认为这类帖子没用,他们总是关闭这些帖子,但我认为这很重要。我会投赞成票。
  • C# SDL 可能会工作,因为 SDL 可以跨 mac windows 和 linux 移植。不确定 C# 包装器是否适用于单声道。 cs-sdl.sourceforge.net
  • 我没有看到那里的麦克风支持。不过,谢谢。

标签: c# .net audio microphone


【解决方案1】:

ManagedBass 是新的 .NET 跨平台包装器,用于具有 MIT 许可证的 un4seen Bass 库。它不仅是包装器——它还有客观的 API。看看this 博文。

下面是使用 wrapper API 播放文件的示例:

using ManagedBass;

class Program
{
    static void Main()
    {
        Bass.Init(); // Initialize with default options.

        int handle = Bass.CreateStream("YOUR_FILE.mp3");

        Bass.ChannelPlay(handle); // Begin Playback.

        Console.ReadKey(); // Wait till user presses a Key.

        Bass.ChannelStop(handle); // Stop Playback.

        Bass.ChannelFree(handle); // Free the Stream.

        Bass.Free(); // Free the device.
    }
}

使用目标 API 也是如此:

using ManagedBass;

class Program
{
    static void Main()
    {
        using (var Player = new MediaPlayer()) // Create a Player.
        {
            Player.Load("YOUR_FILE.mp3"); // Load a file.

            Player.Start(); // Begin Playback.

            Console.ReadKey();
        }
    }
}

【讨论】:

  • 我为每个 API 添加了示例代码
  • 不幸的是,这篇博文已经死了。我建议使用 Bass.Net,因为 ManagedBass 上几乎没有任何文档,而且由于依赖关系不明确,我无法让它运行。
【解决方案2】:

BASS.NET 应该是单声道的跨平台,你可以使用它来做你想要做的事情,就像这个 SO 答案:https://stackoverflow.com/a/6796571/2208058

http://bass.radio42.com/

【讨论】:

  • 这是一个非常严格的许可证。我会记住这一点,但我更喜欢另一种选择。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2011-03-11
相关资源
最近更新 更多