尝试使用 Microsoft.Xna.Framework 将 wma 文件加载为 SoundEffect 时发生 InvalidOperationException

Posted

技术标签:

【中文标题】尝试使用 Microsoft.Xna.Framework 将 wma 文件加载为 SoundEffect 时发生 InvalidOperationException【英文标题】:InvalidOperationException occured when trying to load wma file as SoundEffect using Microsoft.Xna.Framework 【发布时间】:2013-02-08 12:07:18 【问题描述】:

尝试将 WMA 文件(无 DRM)加载为声音效果时出现无效操作异常。我的代码:

    public void LoadSound(String SoundFilePath, out SoundEffect Sound)
    

        Sound = null;

        try
        
            // Holds informations about a file stream.
            StreamResourceInfo SoundFileInfo = App.GetResourceStream(new Uri(SoundFilePath, UriKind.Relative));

            // Create the SoundEffect from the Stream
            Sound = SoundEffect.FromStream(SoundFileInfo.Stream);
        
        catch (NullReferenceException)
        
            // Display an error message
            MessageBox.Show("Couldn't load sound " + SoundFilePath);
        
    

错误发生在这一行Sound = SoundEffect.FromStream(SoundFileInfo.Stream)

我可以毫无问题地加载 WAV 文件。我不想将 WMA 文件转换为 WAV,因为原始 WMA 文件大小仅为 352KB,但当转换为 WAV 文件时,其大小增加到 1788KB!

【问题讨论】:

【参考方案1】:

您不能在 SoundEffects 中使用 wma 或 mp3 声音。试试这种效果很好的方法:

using Microsoft.Xna.Framework.Media;
...
Song s = Song.FromUri("sound name", new Uri(@"Resources/Alarms/Alarm01.wma", UriKind.Relative));
MediaPlayer.Play(s);

别忘了引用 Microsoft.Xna.Framework 库。

【讨论】:

以上是关于尝试使用 Microsoft.Xna.Framework 将 wma 文件加载为 SoundEffect 时发生 InvalidOperationException的主要内容,如果未能解决你的问题,请参考以下文章