簡體   English   中英

Silverlight 4 MediaElement播放聲音

[英]Silverlight 4 MediaElement play sound

我將本地聲音文件轉換為資源,這是在XAML中構建的:

<UserControl.Resources>
    <my:Uri x:Key="SoundFiles">file:///c:/Audio/HebrewDemo/Shalom.wav</my:Uri>
</UserControl.Resources>

我通過將本地磁盤mp3文件名粘貼到源中來完成此操作,然后單擊源中的“點”並選擇“將值提取為資源”。

當我運行時,它告訴我“ Uri”無效,而且確實可以肯定,在Intellisense中,我看到其他以“ uri”開頭的元素,而不僅僅是URI本身。

在現實世界中,我想指定一個動態mp3文件名。 例如,我可能有一個用於抽認卡的外語單詞數據庫,我想在URL上播放聲音文件。 但是我以為我會在跑步之前嘗試走路...

現在,我正在嘗試:

    mediaElement1.Source = new Uri(
                     "http://HebrewResources.com/SoundFiles/Shalom.mp3", 
                      UriKind.Absolute); 
    mediaElement1.Play(); 

FireFox瀏覽器中的狀態欄指示一些數據正在從網站傳輸。 但是,我聽不到任何聲音。 可能只是編碼問題? 如果編碼不正確,我會收到錯誤消息嗎?

另外,我可以將Uri語句放入負載中還是使其在后台運行,以便用戶可以在下載聲音文件的同時讀取屏幕? 換句話說,當他單擊按鈕以收聽聲音文件時,理想情況下,聲音文件已經為他預加載了。 在此語言學習應用程序中,用戶將看到外語單詞,然后嘗試自己發音,然后他將單擊“播放”按鈕以收聽聲音以檢查其結果。

指向本地文件的第一個代碼在常規Silverlight應用程序中將不起作用,因為Silverlights已“分裝”安全模型。 如果在瀏覽器中運行普通的Silverlight應用程序,則無法像運行已安裝的winforms / WPF應用程序那樣訪問本地資源。 如果您想了解有關使用Silverlight訪問本地文件的更多信息,請觀看此視頻教程http://www.silverlight.net/learn/videos/all/local-file-access/

關於第二段代碼,它應該可以工作,因此很可能是編碼問題,而且不幸的是,您通常不會在此類事情上遇到任何錯誤。

我創建了一個示例應用程序,並將其指向您的mp3文件,但無法正常工作,但是對示例mp3的快速搜索使我找到了另一個免費版本(首次點擊)。 使用下面的代碼/ URL,可以正常工作。

myMediaelement.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute);

關於加載,當它點擊設置中介元素來源的代碼時,它將開始下載文件。 因此,如果您在構造函數中或在已加載的事件中設置media元素的源,它將自動在后台開始下載。 然后,您只需調用myMediaelement.Play(); 在按鈕單擊事件上。

如果您發現使用Firefox有一定的局限性,則可以確定何時以及何時加載外部文件或Web服務之類的東西。 有一個很棒的免費工具叫做Fiddler( http://www.fiddlertool.com/fiddler/version.asp ),它將使您非常容易地監視那些東西。

祝好運 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM