如何在asp.net网页中播放声音?
单击按钮后,我想在网页中播放一些声音。 这是我的代码,但它显示错误。
SoundPlayer x = new SoundPlayer(); x.SoundLocation = "WindowsBalloon.wav"; //x.Play(); x.PlaySync();
错误:
请确保指定位置存在声音文件。
但该文件存在于我的项目中,我确信该地址是正确的。
您无法使用System.Media.Soundplayer类在网页上播放文件!
原因
它将在服务器端而非客户端播放声音。
如下面的链接所述
– Web主机上的C#System.Media.SoundPlayer类问题
– 自动播放声音最“兼容”的方式是什么?
解
- 使用ASP.NET音频控件 。
- 其他SO回答同样的要求。
- 使用任何其他基于Flash或Silverlight的插件。
- 使用html embed标签或html5音频标签。 在w3schools上可以看到例子
基于Html5的音频解决方案(仅适用于现代浏览器)
-
标签:
标签定义外部(非HTML)内容的容器。 (它是HTML5标记,在HTML 4中无效,但适用于所有浏览器)。
-
标记:
标记还可以为外部(非HTML)内容定义容器。
-
标签:
元素是HTML5元素,在HTML 4中无效,但它适用于所有浏览器。
请注意基于html5的解决方案的问题,您必须将video转换为不同的格式。
– 元素未validation为HTML 4和XHTML。
– 元素不会validation为HTML 4和XHTML。
– 元素无法“后退”以显示错误。
您需要使用或
html标记。
或者HTML5 标签
这就是我想你想要的:
Server.MapPath(string path);
返回与Web服务器上指定虚拟路径对应的物理文件路径。
参数:path:Web服务器的虚拟路径。
返回:与路径对应的物理文件路径。
SoundPlayer s = new SoundPlayer();
s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**
s.PlaySync();
给定完整路径即c:\wavfiles\WindowsBalloon.wav
上面的’wavfiles’是用户特权文件夹。
use x.PlayLooping()
function,如果你想连续播放声音文件
小心!
使用一个按钮退出循环否则声音文件将连续运行。 我建议你退出循环: –
码
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click x.Stop() End Sub
这适用于HTML5
:
protected void Button1_Click(object sender, EventArgs e) { Response.Write(""); }
如果您需要以编程方式播放ALARM声音,可以这样做:
代码背后(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 = new SoundPlayer();
s.SoundLocation = Server.MapPath(“WindowsBalloon.wav”);
s.PlaySync();