【问题标题】:Does XNA provide audio input (line in)?XNA 是否提供音频输入(线路输入)?
【发布时间】:2023-03-05 20:24:01
【问题描述】:

XNA 是否提供从线路输入音频输入的方法?我查看了MSDNA website,但在音频input 上找不到任何内容。如果确实有可能,sn-p 代码或教程网站会很棒。

编辑: 我需要从音频线路中进行缓冲读取。我对实现不是很感兴趣,而是它是否具有低延迟。

还将在 PC 游戏中实现开发。

【问题讨论】:

    标签: c# xna


    【解决方案1】:

    我认为所有的声音文件都需要经过 XACT 编译才能在 XNA 中使用。

    因此,您要么掌握 DirectSound 并查看以下示例: \Samples\Managed\DirectSound\CaptureSound

    ...或者您可以与 winmm.dll 互操作。这个家伙做了一个小例子来说明如何做到这一点: http://www.codeproject.com/KB/audio-video/cswavrec.aspx

    这家伙写了更多关于枚举所有录音设备的内容: http://www.codeproject.com/KB/cs/Enum_Recording_Devices.aspx

    希望对你有帮助!

    编辑:

    我不确定您想对音频流做什么,因此本教程可能也很有趣: http://nyxtom.vox.com/library/post/recording-audio-in-c.html

    编辑 2: 他说了什么(在评论中)

            |
            |
            V
    

    【讨论】:

    • 不使用 XACT 也可以播放声音/音乐,如果您不需要 XACT 的功能,也可以简单得多。您可以通过 Content.Load() 直接加载许多音频格式(WAV、MP3、WMA 等等),使用 Audio.SoundEffect 和/或 Media.Song 类来管理它们。 :)
    • 这是否也适用于从 line-in 读取?我真的不需要太多的播放功能
    【解决方案2】:

    如果您正在考虑做一个仅限 Windows 的项目,您当然可以捕获来自 XNA 框架之外的代码的音频并用相同的代码播放。由于 XNA 内容管理器的工作方式,您将无法使用常规播放方法,因为内容管理器在编译时将所有内容转换为 .xnb 文件并从那里读取它们。不过,没有什么能阻止您使用标准 Windows API 调用进行游戏。那时你不会真的有一个 XNA 项目,但我认为这种区别并不那么重要,因为无论如何你都不希望与其他平台兼容。

    【讨论】:

    • 是的,我将使用 NAudio (codeplex.com/naudio) 和 XNA。我的游戏暂时不关心可移植性。
    • @srand 不错的图书馆!我使用过 MixDiff 并没有意识到这是他们用于音频输出的。我要自己研究一下;感谢您的链接。
    【解决方案3】:

    要回答您的问题,不,您不能通过 XNA API 访问音频线路输入。您必须查看其他一些库,例如 Port Audio,它可以让您访问此类功能。但是你会被限制在 Windows 上运行(即没有 xbox 或 zune)。

    免责声明:不确定端口音频是否特别具有此功能,因为我刚刚通过 google 快速找到了它。只是想说明您必须使用其他一些 API。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      相关资源
      最近更新 更多