2

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

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

此外,开发将实施到仅限 PC 的游戏中。

4

3 回答 3

3

我认为所有的声音文件都需要通过 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
于 2009-02-11T06:25:24.460 回答
2

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

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

于 2009-02-11T20:54:59.470 回答
2

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

于 2009-02-12T07:47:21.163 回答