簡體   English   中英

如何在asp.net網頁上播放聲音?

[英]How do I play a sound in an asp.net web page?

單擊按鈕后,我想在網頁上播放一些聲音。 這是我的代碼,但顯示錯誤。

SoundPlayer x = new SoundPlayer();
x.SoundLocation = "WindowsBalloon.wav";
//x.Play();
x.PlaySync();

錯誤:

請確保在指定位置存在聲音文件。

但是文件存在於我的項目中,並且我確定地址正確。

您不能使用System.Media.Soundplayer類在網頁上播放文件!

原因

它將在服務器端而非客戶端上播放聲音。

如以下鏈接所述
-Web主機上的C#System.Media.SoundPlayer類出現問題
- 自動播放聲音的最“兼容”方式是什么?

  • 其他SO回答了同樣的要求。
  • 使用任何其他基於Flash或Silverlight的插件。
  • 使用html嵌入標簽或html5音頻標簽。 例子可以在w3schools上看到

基於HTML5的音頻解決方案(僅適用於現代瀏覽器)

  • <embed>標記: <embed>標記定義用於外部(非HTML)內容的容器。 (這是一個HTML5標簽,在HTML 4中無效,但在所有瀏覽器中均有效)。
<embed height="100" width="100" src="horse.mp3" />
  • <object>標記: <object>標記還可以定義用於外部(非HTML)內容的容器。
<object height="100" width="100" data="horse.mp3"></object>
  • <audio>標記: <audio>元素是HTML5元素,在HTML 4中無效,但在所有瀏覽器中均可使用。
<audio controls="controls" height="100" width="100">
  <source src="horse.mp3" type="audio/mp3" />
  <source src="horse.ogg" type="audio/ogg" />
  <embed height="100" width="100" src="horse.mp3" />
</audio>

請注意基於html5的解決方案存在的問題,您必須將視頻轉換為其他格式。
- <audio>元素未驗證為HTML 4和XHTML。
- <embed>元素未驗證為HTML 4和XHTML。
- <embed>元素不能“后退”以顯示錯誤。

您需要使用<object><embed> html標簽。

<object data="WindowsBalloon.wav"></object>

或HTML5 標簽

<audio src="WindowsBalloon.wav">
  <p>Your browser does not support the audio element.</p>
</audio>

這就是我想要的:

Server.MapPath(string path);

返回與Web服務器上指定的虛擬路徑相對應的物理文件路徑。

參數:path:Web服務器的虛擬路徑。
返回:對應於路徑的物理文件路徑。

SoundPlayer s = new SoundPlayer();<br>
s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**<br>
s.PlaySync();

這在HTML5

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("<embed height='0' width='0' src='Sound.wav' />");
}

給定完整路徑,即c:\\wavfiles\\WindowsBalloon.wav

上面的“ wavfiles”是用戶特權文件夾。

use x.PlayLooping()

如果要連續播放聲音文件,此功能

小心!

使用一個按鈕退出循環,否則聲音文件將連續運行。 我建議您退出循環:-

 Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        x.Stop()
    End Sub

如果您需要以編程方式播放ALARM聲音,可以通過以下方式進行:

<asp:Panel runat="server" ID="panBuzz" style="visibility:hidden">
   <audio runat="server" id="Buzz"  src="http://.....mp3" type="audio/mp3"/>
</asp:Panel>

背后的代碼(Visual Basic):

Dim cBuzz As HtmlControl = DirectCast(panBuzz.FindControl("Buzz"), HtmlControl)
cBuzz.Attributes.Add("autoplay", "autoplay")

(C#)后面的代碼:

HtmlControl cBuzz = (HtmlControl)panBuzz.FindControl("Buzz");
cBuzz.Attributes.Add("autoplay", "autoplay");

嘗試將驅動器號添加到路徑,例如“ C:/WindowsBalloon.wav”。 但這不會在客戶端發揮作用。 我建議在客戶端嘗試HTML5。

SoundPlayer s =新的SoundPlayer();
s.SoundLocation = Server.MapPath(“ WindowsBalloon.wav”);
s.PlaySync();

暫無
暫無

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

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