8

单击按钮后,我想在网页中播放一些声音。这是我的代码,但它显示错误。

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

错误:

请确保指定位置存在声音文件。

但该文件存在于我的项目中,我确信地址是正确的。

4

8 回答 8

12

您不能使用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>tag:该<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>元素不能“回退”以显示错误。

于 2012-09-08T08:33:40.767 回答
5

您需要使用<object><embed>html 标签。

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

或 HTML5标签

<audio src="WindowsBalloon.wav">
  <p>Your browser does not support the audio element.</p>
</audio>
于 2012-09-08T08:24:56.623 回答
2

这适用于HTML5

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("<embed height='0' width='0' src='Sound.wav' />");
}
于 2016-03-17T07:52:43.660 回答
1

这就是我认为你想要的:

Server.MapPath(string path);

返回与 Web 服务器上指定的虚拟路径相对应的物理文件路径。

参数: path:Web 服务器的虚拟路径。
返回: path 对应的物理文件路径。

SoundPlayer s = new SoundPlayer();<br>
s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**<br>
s.PlaySync();
于 2014-06-06T19:11:37.410 回答
0

给定完整路径,即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
于 2014-03-15T06:28:51.943 回答
0

如果您需要以编程方式播放 ALARM 声音,您可以这样做:

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

背后的代码(视觉基础):

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");
于 2018-06-02T10:00:18.547 回答
-1

尝试将驱动器号添加到路径中,例如“C:/WindowsBalloon.wav”。但这不会在客户端播放。我建议在客户端尝试 HTML5。

于 2012-09-08T08:24:59.973 回答
-4

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

于 2014-06-06T09:31:49.380 回答