2010-12-02 76 views
2

是否有人有工作(測試)的代碼示例來播放獨立存儲中的音頻文件。該代碼我現在有,不拋出異常或發出任何聲音,就是:使用Silverlight播放用戶歌曲

 MediaElement ME = new MediaElement(); 
     ME.AutoPlay = false; 
     IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
     ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open)); 
     ME.Play(); 

我已經使用多種不同音頻格式,使用表達編碼嘗試這樣做,但我總是有相同問題。

此外,我非常喜歡使用文件瀏覽器從文件流加載歌曲的示例,但這不太重要,隔離存儲示例可以輕鬆轉換。

我檢查過了,如果我將該文件嵌入到應用程序中,它可以正常播放。問題是我希望用戶能夠將自己的歌曲加載到應用程序中,然後將其存儲在獨立存儲中並從中播放。

最後,與示例一樣,我寧願在C#代碼中執行此操作,而不是使用XAML。

+0

你以後檢查過`CurrentState`屬性嗎?您是否嘗試將處理程序掛接到「MediaFailed」事件? – 2010-12-02 05:38:52

回答

1
  1. 由於該文件將異步打開,因此不能使用與SetSource命令相同的方法執行Play命令。通過將AutoPlay設置爲true(這也是默認設置)。你確保它一載入就會播放。

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open)); 
    
  2. Silvelright本身並不支持wav文件,這樣玩,你需要下載http://code.msdn.microsoft.com/wavmss,然後用下面的代碼wav文件。

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open))); 
    

    雖然不理想,您可以使用的文件擴展名,當正在播放WAV文件來檢測,只有在這種情況下,使用第二個代碼示例。