【问题标题】:c# mixing two audio files in windows phone 8.1 silverlight projectc#在windows phone 8.1 silverlight项目中混合两个音频文件
【发布时间】:2015-09-27 19:29:54
【问题描述】:

我的目标是混合 2 个音频文件,即一种声音和一种背景音乐。对于混音,我使用的是 NAudio。 问题是我在使用 NAudio 的 Mp3FileReader 读取 mp3 文件时遇到以下异常。

DllImport cannot be used on user-defined methods

我在 Windows Phone 8.1 Silverlight 应用项目中使用 NAudio。我不确定 NAudio 是否可以在 WP Silverlight 应用程序上使用,如果它可用,请提供代码示例或建议任何其他库或自定义实现来混合 2 个音频文件。

【问题讨论】:

  • 您查看过 SharpDX.XAudio2 吗?我认为他们有一些音频工具,但我不确定他们是否支持 Silverlight。

标签: c# silverlight audio windows-phone-8 naudio


【解决方案1】:

不,我担心 NAudio 在 Silverlight 上不可用,因为它对 Windows API 进行了大量调用,而在 Silverlight 中是无法做到的。您可以查看 NAudio NLayer 项目,该项目提供完全托管的 MP3 解码。您可以将它与 NAudio 中一些更通用的帮助程序类(如 MixingSampleProvider)结合使用,以执行您需要的混音。当然,下一个问题是您想对混合音频做什么。 Silverlight 确实有一种使用 MediaElement 流式传输用户生成的音频的方法,但 NAudio 不直接提供对此的支持。

【讨论】:

    【解决方案2】:

    [DllImport] 需要 CLR 中的大量代码,对于 pinvoke 编组器没有什么非常微妙的。这是手机上的问题,它运行名为 .NETCore 的特殊版本的 CLR。今天可能更广为人知的是衍生出 CoreCLR 开源项目的代码库。保持小规模需要做出微妙的选择,pinvoke 掉在了地板上。

    所以,不,您对 NAudio 完全没有用处。您必须深入了解对音频的内置支持。相关监督 MSDN 页面为this one。这个blog post 是相关的。

    如您所知,XAudio2 是您直接支持混音的门票。当然有一个学习曲线,语言可能是给定问题标签的第一个障碍。开始使用this sample 了解基础知识。

    【讨论】:

      【解决方案3】:

      也许您应该考虑采取步骤从 WP8.1 Silverlight (WPS) 项目升级到 WP8.1 (WinRT) 项目,以便更好地访问音频 API...

      ...或直接发布到 UWP/Win10 应用(如果您不打算立即发布到手机)。如果你选择这条路,你可以尝试一个免费的预览工具,将 WPS 转换为 UWP,刚刚从 Microsoft 和 Mobilize.NET 发布 - https://blogs.windows.com/buildingapps/2015/09/17/initial-preview-of-silverlight-bridge-to-uwp/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        相关资源
        最近更新 更多